参阅以下说明,以使用 Tanzu CLI 安装并配置 Cluster Autoscaler 软件包。

要求

请遵循以下要求。
  • 最低 vSphere 版本为 vSphere 8 U3,包括 vCenter 和 ESXi 主机
  • vSphere 8 的最低 TKr 版本为 TKr 1.27.x
  • TKr 的次要版本和 Cluster Autoscaler 软件包的次要版本必须匹配
注: Autoscaler 软件包次要版本与 TKr 次要版本之间存在一对一关系。例如,如果使用的是 TKr 1.27.11,则应安装 v1.27.2 的 Autoscaler。如果版本不匹配,软件包协调将失败。

配置 vSphere 命名空间

完成置备 TKG 集群的以下必备条件任务。

  1. 将您的环境安装或更新到 vSphere 8 U3 和适用于 vSphere 8 的 TKr 1.27.x。
  2. 使用最新的 Tanzu Kubernetes 版本 创建或更新内容库。请参见管理用于 TKG 服务 集群的 Kubernetes 版本
  3. 创建并配置用于托管 TKG 集群的 vSphere 命名空间。请参见配置 vSphere 命名空间 以便托管 TKG 服务 集群
  4. 安装 适用于 vSphere 的 Kubernetes CLI 工具

    以下示例可用于从命令行安装工具。有关其他指导,请参见安装 适用于 vSphere 的 Kubernetes CLI 工具

    wget https://SUPERVISOR-IP-or-FQDN/wcp/plugin/linux-amd64/vsphere-plugin.zip
    unzip vsphere-plugin.zip
    chmod +x bin/kubectl*
    mv bin/kubectl* /usr/bin/kubectl vsphere --help
    rm ~/.kube/config
    kubectl vsphere login --insecure-skip-tls-verify --server SUPERVISOR-IP-or-FQDN --tanzu-kubernetes-cluster-namespace VSPHERE-NAMESPACE --vsphere-username VSPHERE-USER
    kubectl config use-context VSPHERE-NAMESPACE
  5. 运行 kubectlkubectl vsphere 以验证安装。

使用 Autoscaler 注释创建 TKG 集群

按照说明创建 TKG 集群。有关其他指导,请参见使用 Kubectl 置备 TKG 集群的工作流

要使用 Autoscaler,您必须按此处提供的集群规范示例中的说明为集群配置 Autoscaler 标签注释。与常规集群置备不同,您不会对工作节点副本的数量进行硬编码。Kubernetes 具有基于 Autoscaler 最小和最大大小注释的副本的内置默认逻辑。由于这是新的集群,因此使用最小大小创建集群。有关详细信息,请参见 https://cluster-api.sigs.k8s.io/tasks/automated-machine-management/autoscaling
  1. 使用 kubectl 对 主管 进行身份验证。
    kubectl vsphere login --server=SUPERVISOR-CONTROL-PLANE-IP-ADDRESS-or-FQDN --vsphere-username USERNAME
  2. 将上下文切换到将托管集群的目标 vSphere 命名空间
    kubectl config use-context tkgs-cluster-namespace
  3. 列出 vSphere 命名空间 中可用的虚拟机类。

    只能使用绑定到目标 vSphere 命名空间 的虚拟机类。请参见对 TKG 服务 集群使用虚拟机类

  4. 列出可用的持久卷存储类。
    kubectl describe namespace VSPHERE-NAMESPACE-NAME

    命令将返回有关 vSphere 命名空间 的详细信息,包括存储类。命令 kubectl describe storageclasses 还会返回可用的存储类,但需要 vSphere 管理员权限。

  5. 列出可用的 Tanzu Kubernetes 版本
    kubectl get tkr

    此命令将返回此 vSphere 命名空间 中可用的 TKr 及其兼容性。请参见管理用于 TKG 服务 集群的 Kubernetes 版本

  6. 使用您收集的信息来编写 TKG 集群规范 YAML 文件,其中包含所需的 Cluster Autoscaler 配置。
    • 对工作节点池使用 *-min-size 个和 *-max-size 个注释,在此示例中,3 表示最小数量,5 表示可以扩展的最大工作节点数。默认情况下,将创建具有 3 个工作节点的集群。
    • 为 TKr 和 Autoscaler 软件包使用匹配的次要版本。
    • 使用的集群 metadata.namemetadata.namespace 值与 Autoscaler 软件包默认值一致。如果在集群规范中更改这些值,则需要在 autoscaler-data-values 中修改这些值(见下文)。
    #cc-autoscaler.yaml
    apiVersion: cluster.x-k8s.io/v1beta1
    kind: Cluster
    metadata:
     name: tkc
     namespace: cluster
    spec:
     clusterNetwork:
       pods:
         cidrBlocks:
         - 192.0.2.0/16
       serviceDomain: cluster.local
       services:
         cidrBlocks:
         - 198.51.100.0/12
     topology:
       class: tanzukubernetescluster
       controlPlane:
         metadata: {}
         replicas: 3
       variables:
       - name: storageClasses
         value:
         - wcpglobal-storage-profile
       - name: vmClass
         value: guaranteed-medium
       - name: storageClass
         value: wcpglobal-storage-profile
       #minor versions must match
       version: v1.27.11---vmware.1-fips.1-tkg.2
       workers:
         machineDeployments:
         - class: node-pool
           metadata:
             annotations:
               cluster.x-k8s.io/cluster-api-autoscaler-node-group-min-size: "3"
               cluster.x-k8s.io/cluster-api-autoscaler-node-group-max-size: "5"
           name: np-1
  7. 应用集群规范。
    kubectl apply -f cc-autoscaler.yaml
  8. 验证集群创建。
    kubectl get cluster,vm
  9. 验证集群节点版本。
    kubectl get node

在 TKG 集群上创建软件包存储库

置备 TKG 集群后,安装 Tanzu CLI 并设置软件包存储库。
  1. 安装 Tanzu CLI。

    请参见安装 Tanzu CLI 以用于 TKG 服务 集群

  2. 登录到集群。
    rm ~/.kube/config
    kubectl vsphere login --insecure-skip-tls-verify --server 192.168.0.2 --tanzu-kubernetes-cluster-namespace autoscaler --vsphere-username [email protected] --tanzu-kubernetes-cluster-name cckubectl 
    config use-context cc
  3. 创建软件包存储库。
    #Standard package repository URL might change depending on the required cluster autoscaler version
    tanzu package repository add standard-repo --url projects.registry.vmware.com/tkg/packages/standard/repo:v2024.4.12 -n tkg-system
    tanzu package available list -n tkg-system
    tanzu package available get cluster-autoscaler.tanzu.vmware.com -n tkg-system

安装 Autoscaler 软件包

安装 Cluster Autoscaler 软件包。将在 kube-system 命名空间中安装 Cluster Autoscaler。
  1. 使用 Tanzu CLI 命令生成默认 values.yaml
    tanzu package available get cluster-autoscaler.tanzu.vmware.com/1.27.2+vmware.1-tkg.3  -n tkg-system --default-values-file-output values.yaml
  2. 更新软件包安装的 values.yaml
    arguments:  
      ignoreDaemonsetsUtilization: true  
      maxNodeProvisionTime: 15m  
      maxNodesTotal: 0  
      metricsPort: 8085  
      scaleDownDelayAfterAdd: 10m  
      scaleDownDelayAfterDelete: 10s  
      scaleDownDelayAfterFailure: 3m  
      scaleDownUnneededTime: 10m
    clusterConfig:  
      clusterName: "tkc"  
      clusterNamespace: "cluster"
    paused: false
  3. 使用 Tanzu CLI 安装 Cluster Autoscaler 软件包。
    tanzu package install cluster-autoscaler-pkgi -n tkg-system --package cluster-autoscaler.tanzu.vmware.com --version 1.27.2+vmware.1-tkg.3 --values-file values.yaml

测试集群自动扩展

要测试集群自动扩展,请部署应用程序,增加副本数,并验证是否已扩展额外的工作节点以处理额外的负载。

请参见测试 Cluster Autoscaler

升级自动扩展的集群

要升级自动扩展的集群,必须先暂停 Autoscaler 软件包。

请参见使用 Tanzu CLI 升级自动扩展的集群