全部產品
Search
文件中心

Container Service for Kubernetes:配置自動Auto Scaling

更新時間:Jul 05, 2024

本文將為您介紹如何使用註冊叢集的自動Auto Scaling能力。

前提條件

建立自動Auto Scaling配置時,cluster-autoscaler組件將以Deployment形式自動部署在註冊叢集中。由於雲上節點會在自動縮容後銷毀,不利於Deployment類型部署的系統組件提供穩定的服務,所以這種提供雲上服務的組件需要避免被調度到自動擴容出來的雲上節點,同時也要避免被調度到雲下節點。需要滿足以下條件:

  • 已建立和擴容普通節點池。具體操作,請參見建立節點池並擴容

  • 已為節點池中的節點配置節點標籤alibabacloud.com/cloud-worker-nodes=true。具體操作,請參見添加節點標籤

    cluster-autoscaler組件將會自動調度到擁有節點標籤的雲上節點上。

  • 已通過kubectl串連註冊叢集。具體操作,請參見通過kubectl串連叢集

步驟一:開啟自動Auto Scaling配置

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇節點管理 > 節點池

  3. 節點池頁面,單擊叢集自動Auto Scaling配置右側的去配置,然後在叢集自動Auto Scaling配置面板,完成Auto Scaling配置並單擊確定

  4. 配置cluster-autoscaler組件。

    在成功完成自動Auto Scaling配置後,叢集中將會自動部署一個Deployment。

    1. 執行以下命令查看Deployment。

      kubectl -n kube-system get deploy |grep cluster-autoscaler

      預期輸出:

      cluster-autoscaler            1/1     1            1           5s
    2. 配置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"
              }
          ]
      }
    3. 執行以下命令授權RAM Policy的AccessKey資訊。

      export ACCESS_KEY_ID=<ACCESS KEY ID>
      export ACCESS_KEY_SECRET=<ACCESS KEY SECRET>
    4. 執行以下命令建立一個名為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節點池

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇節點管理 > 節點池

  3. 節點池頁面右上方,單擊建立節點池

  4. 建立節點池對話方塊,設定建立節點池的配置項。然後單擊確認配置

    部分配置項說明如下所示。關於更多配置項說明,請參見建立節點池

    參數

    說明

    期望節點數

    節點池應該維持的節點數量。您可以通過調整期望節點數,達到擴容或縮容節點池的目的。如無需建立節點,可以填寫為0。更多資訊,請參見擴縮容節點池

    作業系統

    節點的作業系統,包括CentOS和Alibaba Cloud Linux。

    ECS標籤

    為ECS執行個體添加標籤。

    汙點(Taints)

    為叢集節點添加汙點。

    節點標籤

    為叢集節點添加標籤。例如,workload=auto

    自訂安全性群組

    選擇節點所在安全性群組。

  5. 執行以下命令,根據設定的節點標籤workload=auto驗證節點池是否可以正確彈出節點。

    kubectl run nginx --image nginx -l workload=auto