是否可以在 kubeadm 集群中创建集群 Autoscaler?

Is that possible to create cluster Autoscaler in kubeadm cluster?

我已经在 AWS 上使用 Kubeadm 工具创建了 Kubernetes 集群。自动缩放节点的所有可能方法是什么?

我不知道在 AWS 上扩展 Kubernetes 集群的所有方法。但是我认为最好的方法是使用 Kubernetes Cluster Autoscaler. It can dynamically scale out a cluster based on scheduled pods in the cluster (as opposed to something like autoscaling groups that can only schedule based on node resource usage). Even for AWS EKS it is now the documented approach to autoscaling.

如果你的aws集群中的slave节点有auto scaling组,那么你当然可以安装Kubernetes Cluster Autoscaler。 请查看此 cluster-autoscaler bash script,因为它适用于 kops,您实际上可以使用它来了解安装自动缩放器需要 follow/configure 多少步骤和资源。

  1. 首先创建iam策略
printf "   a) Creating IAM policy to allow aws-cluster-autoscaler access to AWS autoscaling groups…\n"
cat > asg-policy.json << EOF
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "autoscaling:DescribeAutoScalingGroups",
                "autoscaling:DescribeAutoScalingInstances",
                "autoscaling:DescribeLaunchConfigurations",
                "autoscaling:DescribeTags",
                "autoscaling:SetDesiredCapacity",
                "autoscaling:TerminateInstanceInAutoScalingGroup"
            ],
            "Resource": "*"
        }
    ]
}
EOF

  1. 然后附加创建一个角色并将策略附加到创建的角色。
aws iam attach-role-policy --policy-arn $ASG_POLICY_ARN --role-name $IAM_ROLE the policy

  1. 然后从此处下载示例 yml download the desired one 并编辑 yml 以将 --nodes=1:10:k8s-worker-asg-1 更改为您的自动缩放组名称。

有关详细信息,请查看此 document