分享交流
合作共赢!

kubernetes常用组件使用方法总结【一】——Cluster Autoscaler

一、简介

Cluster Autoscaler组件是一个K8S集群必不可少的组件之一,它主要根据node节点的压力大小,来横向伸缩node节点数量,以满足集群业务的稳定运行。

官方文档参考如下:

Github:

AWS:

二、安装部署

这里以AWS为例进行安装部署和使用。

1.准备

1.创建IAM Policy

policy内容如下:

{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"autoscaling:DescribeAutoScalingGroups",
"autoscaling:DescribeAutoScalingInstances",
"autoscaling:DescribeLaunchConfigurations",
"autoscaling:DescribeTags",
"autoscaling:SetDesiredCapacity",
"autoscaling:TerminateInstanceInAutoScalingGroup",
"ec2:DescribeLaunchTemplateVersions"
],
"Resource": "*",
"Effect": "Allow"
}
]
}

提示:可以通过控制台直接创建,也可以通过如下命令行创建(需要将policy内容保存到文件cluster-autoscaler-policy.json,然后执行下面命令)

aws iam create-policy \
--policy-name AmazonEKSClusterAutoscalerPolicy \
--policy-document file://cluster-autoscaler-policy.json

2.创建IAM role

提示: 可通过控制台 IAM Management Console (amazon.com) 直接创建,也可以通过命令行创建,绑定上面创建好的Policy即可。

命令行:

eksctl create iamserviceaccount \
--cluster=<my-cluster> \
--namespace=kube-system \
--name=cluster-autoscaler \
--attach-policy-arn=arn:aws:iam::<AWS_ACCOUNT_ID>:policy/<AmazonEKSClusterAutoscalerPolicy> \
--override-existing-serviceaccounts \
--approve

2.部署

1.下载应用部署清单文件

wget https://raw.githubusercontent.com/kubernetes/autoscaler/master/cluster-autoscaler/cloudprovider/aws/examples/cluster-autoscaler-autodiscover.yaml

2.在文件中找到名为cluster-autoscaler的service

  • 添加annotations
eks.amazonaws.com/role-arn: "arn:aws:iam::<ACCOUNT_ID>:role/<AmazonEKSClusterAutoscalerRole>"

3.在文件中找到名为cluster-autoscaler的deployment

  • 添加annotations
cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
  • 添加如下两行内容,并将<YOUR CLUSTER NAME>替换为自己集群的名字:
--balance-similar-node-groups
--skip-nodes-with-system-pods=false

结果如下:

    spec:
containers:
- command:
- ./cluster-autoscaler
- --v=4
- --stderrthreshold=info
- --cloud-provider=aws
- --skip-nodes-with-local-storage=false
- --expander=least-waste
- --node-group-auto-discovery=asg:tag=k8s.io/cluster-autoscaler/enabled,k8s.io/cluster-autoscaler/<YOUR CLUSTER NAME>
- --balance-similar-node-groups
- --skip-nodes-with-system-pods=false
  • 找到对应的image的tag值

在官方 Github仓库 中找到对应image的tag值,这里要根据自己cluster集群的版本来进行选择,例如下面选择的是v1.21.版本:

cluster-autoscaler=k8s.gcr.io/autoscaling/cluster-autoscaler:v<1.21.n>

我这里因为kubernetes版本是1.18,用的镜像版本是v1.18.1

3.测试

通过增加集群压力然后观察集群node节点数量,会发现node会自动增加。 这里就不再贴图了,亲测有效。

赞(0) 打赏
未经允许不得转载:琼杰笔记 » kubernetes常用组件使用方法总结【一】——Cluster Autoscaler
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

分享交流,合作共赢!

联系我们加入QQ群

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏