首页 » 运维 » 正文

aws eks node 自动化扩展工具 Karpenter

我司现在使用的自动化扩展工具是ASG , 他可以做到自动根据cluster的一些指标进行增加或者删除node, 一般以分钟为计时单位,几分钟可以创建出一个node

Karpenter是一个新的自动扩缩容工具,不经过ASG,直接和ec2进行交互,可以做到秒级新增node

原理和其他的operator类似,需要在我们的eks中部署一个pod作为控制中心,来监控整个eks的状态,日志,然后和aws 接口进行交互,达到创建node,减少node的功能

因为牵扯到新的node加入到我们的eks集群,以及调用api来创建instance,所以需要给与一些需要的AWS权限

官方地址:

https://karpenter.sh/

我是因为我已经有一个eks在跑了,所以我需要

https://karpenter.sh/v0.13.2/getting-started/getting-started-with-eksctl/

第一步需要准备好一些环境变量以便后边使用:

因为我的cluster正在运行了,所以我就不需要创建新的cluster,但是这个地方要注意一下,因为例子中的eks在创建是加了特殊的TAG,这个TAG是在后边需要用到的,例如:

我们需要在我们的创建好的cluster的资源上打上这个tag,例如subnet,例如security-group

下一步,我们创建第一个IAM role,这个role就是让我们新创建的instance有权限加入到我们的cluster

创建好以后我们需要更新我们的aws 的auth 的configmap 来更新eks里边的map

然后我们需要创建第二个role,这个role是用来给karpenter来启动instance的

然后剩下就是如果没用过spot instance需要执行下边的命令

这样就完成了准备工作,然后我们就需要在我9omende集群中安装Karpenter的控制中心

安装好以后还需要Provisioner才会真正的运行,这里边会定义一些类似最多能创建多少,创建的instance 绑定那些sg,创建到哪些subnet等

 

创建完成后就可以参考官方文档的测试用例来使用Karpenter了

 

 

Zhiming Zhang

Senior devops at Appannie
一个奔跑在运维路上的胖子
Zhiming Zhang

Latest posts by Zhiming Zhang (see all)