本文將為您介紹如何使用註冊叢集的自動Auto Scaling能力。
前提條件
建立自動Auto Scaling配置時,cluster-autoscaler組件將以Deployment形式自動部署在註冊叢集中。由於雲上節點會在自動縮容後銷毀,不利於Deployment類型部署的系統組件提供穩定的服務,所以這種提供雲上服務的組件需要避免被調度到自動擴容出來的雲上節點,同時也要避免被調度到雲下節點。需要滿足以下條件:
已建立節點池並擴容。
已為節點池中的節點配置節點標籤
alibabacloud.com/cloud-worker-nodes=true
。具體操作,請參見添加節點標籤。cluster-autoscaler組件將會自動調度到擁有節點標籤的雲上節點上。
已通過kubectl串連註冊叢集。具體操作,請參見通過kubectl串連叢集。
步驟一:開啟自動Auto Scaling配置
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在節點池頁面,單擊叢集自動Auto Scaling配置右側的去配置,然後在叢集自動Auto Scaling配置面板,完成Auto Scaling配置並單擊確定。
配置cluster-autoscaler組件。
在成功完成自動Auto Scaling配置後,叢集中將會自動部署一個Deployment。
執行以下命令查看Deployment。
kubectl -n kube-system get deploy |grep cluster-autoscaler
預期輸出:
cluster-autoscaler 1/1 1 1 5s
配置cluster-autoscaler組件相關雲資源的RAM Policy,程式碼範例如下所示。
{ "Version": "1", "Statement": [ { "Action": [ "ess:DescribeScalingGroups", "ess:DescribeScalingInstances", "ess:DescribeScalingActivities", "ess:DescribeScalingConfigurations", "ess:DescribeScalingRules", "ess:DescribeScheduledTasks", "ess:DescribeLifecycleHooks", "ess:DescribeNotificationConfigurations", "ess:DescribeNotificationTypes", "ess:DescribeRegions", "ess:CreateScalingRule", "ess:ModifyScalingGroup", "ess:RemoveInstances", "ess:ExecuteScalingRule", "ess:ModifyScalingRule", "ess:DeleteScalingRule", "ecs:DescribeInstanceTypes", "ess:DetachInstances", "ess:ScaleWithAdjustment", "vpc:DescribeVSwitches" ], "Resource": [ "*" ], "Effect": "Allow" } ] }
執行以下命令授權RAM Policy的AccessKey資訊。
export ACCESS_KEY_ID=<ACCESS KEY ID> export ACCESS_KEY_SECRET=<ACCESS KEY SECRET>
執行以下命令建立一個名為alibaba-addon-secret的Secret資源。
kubectl -n kube-system create secret generic alibaba-addon-secret --from-literal='access-key-id=${ACCESS_KEY_ID}' --from-literal='access-key-secret=${ACCESS_KEY_SECRET}'
步驟二:建立自動Auto Scaling節點池
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在節點池頁面右上方,單擊建立節點池。
在建立節點池對話方塊,設定建立節點池的配置項。然後單擊確認配置。
執行以下命令,根據設定的節點標籤
workload=auto
驗證節點池是否可以正確彈出節點。kubectl run nginx --image nginx -l workload=auto