参阅以下说明,以使用 kubectl 安装并配置 Cluster Autoscaler 软件包。
要求
请遵循以下要求。
- 最低 vSphere 版本为 vSphere 8 U3
- vSphere 8 的最低 TKr 版本为 TKr 1.27.x
- TKr 的次要版本和 Cluster Autoscaler 软件包的次要版本必须匹配
注意: Autoscaler 软件包次要版本与 TKr 次要版本之间存在一对一关系。例如,如果使用的是 TKr 1.27.11,则应安装 v1.27.2 的 Autoscaler。如果版本不匹配,软件包协调将失败。
配置 vSphere 命名空间
完成置备 TKG 集群的以下必备条件任务。
- 将您的环境安装或更新到 vSphere 8 U3 和适用于 vSphere 8 的 TKr 1.27.x。
- 使用最新的 Tanzu Kubernetes 版本 创建或更新内容库。请参见管理用于 TKG 服务 集群的 Kubernetes 版本。
- 创建并配置用于托管 TKG 集群的 vSphere 命名空间。请参见配置 vSphere 命名空间 以便托管 TKG 服务 集群。
- 安装 适用于 vSphere 的 Kubernetes CLI 工具。
以下示例可用于从命令行安装工具。有关其他指导,请参见安装 适用于 vSphere 的 Kubernetes CLI 工具。
curl -LOk https://${SUPERVISOR_IP-or-FQDN}/wcp/plugin/linux-amd64/vsphere-plugin.zip unzip vsphere-plugin.zip mv -v bin/* /usr/local/bin/
- 运行
kubectl
和kubectl vsphere
以验证安装。
使用 Autoscaler 注释创建 TKG 集群
按照说明创建 TKG 集群。有关其他指导,请参见使用 Kubectl 置备 TKG 集群的工作流。
要使用 Autoscaler,您必须按此处提供的集群规范示例中的说明为集群配置 Autoscaler 标签注释。与常规集群置备不同,您不会对工作节点副本的数量进行硬编码。Kubernetes 具有基于 Autoscaler 最小和最大大小注释的副本的内置默认逻辑。由于这是新的集群,因此使用最小大小创建集群。有关详细信息,请参见https://cluster-api.sigs.k8s.io/tasks/automated-machine-management/autoscaling。
- 使用 kubectl 对 主管 进行身份验证。
kubectl vsphere login --server=SUPERVISOR-CONTROL-PLANE-IP-ADDRESS-or-FQDN --vsphere-username USERNAME
- 将上下文切换到将托管集群的目标 vSphere 命名空间。
kubectl config use-context tkgs-cluster-namespace
- 列出 vSphere 命名空间 中可用的虚拟机类。
只能使用绑定到目标 vSphere 命名空间 的虚拟机类。请参见对 TKG 服务 集群使用虚拟机类。
- 列出可用的持久卷存储类。
kubectl describe namespace VSPHERE-NAMESPACE-NAME
命令将返回有关 vSphere 命名空间 的详细信息,包括存储类。命令
kubectl describe storageclasses
还会返回可用的存储类,但需要 vSphere 管理员权限。 - 列出可用的 Tanzu Kubernetes 版本。
kubectl get tkr
此命令将返回此 vSphere 命名空间 中可用的 TKr 及其兼容性。请参见管理用于 TKG 服务 集群的 Kubernetes 版本。
- 使用您收集的信息来编写 TKG 集群规范 YAML 文件,其中包含所需的 Cluster Autoscaler 配置。
- 对工作节点池使用
*-min-size
个和*-max-size
个注释,在此示例中,3 表示最小数量,5 表示可以扩展的最大工作节点数。默认情况下,将创建具有 3 个工作节点的集群。 - 为 TKr 和 Autoscaler 软件包使用匹配的次要版本。
- 使用的集群
metadata.name
和metadata.namespace
值与 Autoscaler 软件包默认值一致。如果在集群规范中更改这些值,则需要在autoscaler-data-values
中修改这些值(见下文)。
#cc-autoscaler.yaml apiVersion: cluster.x-k8s.io/v1beta1 kind: Cluster metadata: name: gc1 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
- 对工作节点池使用
- 应用集群规范。
kubectl apply -f cc-autoscaler.yaml
- 验证集群创建。
kubectl get cluster,vm
- 验证集群节点版本。
kubectl get node
在 TKG 集群上安装软件包管理器
置备 TKG 集群后,在集群上安装软件包管理器并设置软件包存储库。
- 登录到置备的 TKG 集群。
kubectl vsphere login --server=SUPERVISOR-CONTROL-PLANE-IP-ADDRESS-or-FQDN \ --vsphere-username USERNAME \ --tanzu-kubernetes-cluster-name CLUSTER-NAME \ --tanzu-kubernetes-cluster-namespace NAMESPACE-NAME
- 安装 Carvel imgpkg 工具。
wget -O- https://carvel.dev/install.sh > install.sh sudo bash install.sh
- 运行
imgpkg version
以验证安装。 - 检查软件包存储库版本。
imgpkg tag list -i projects.registry.vmware.com/tkg/packages/standard/repo
- 安装软件包存储库。相应地更新存储库版本。
apiVersion: packaging.carvel.dev/v1alpha1 kind: PackageRepository metadata: name: tanzu-standard namespace: tkg-system spec: fetch: imgpkgBundle: image: projects.registry.vmware.com/tkg/packages/standard/repo:v2024.4.12
- 确认软件包存储库。
kubectl get packagerepository -A NAMESPACE NAME AGE DESCRIPTION tkg-system tanzu-standard 2m22s Reconcile succeeded
- 验证 Cluster Autoscaler 软件包是否存在。
kubectl get package NAME PACKAGEMETADATA NAME VERSION AGE cert-manager.tanzu.vmware.com.1.7.2+vmware.3-tkg.1 cert-manager.tanzu.vmware.com 1.7.2+vmware.3-tkg.1 5s cert-manager.tanzu.vmware.com.1.7.2+vmware.3-tkg.3 cert-manager.tanzu.vmware.com 1.7.2+vmware.3-tkg.3 5s cluster-autoscaler.tanzu.vmware.com.1.25.1+vmware.1-tkg.3 cluster-autoscaler.tanzu.vmware.com 1.25.1+vmware.1-tkg.3 5s cluster-autoscaler.tanzu.vmware.com.1.26.2+vmware.1-tkg.3 cluster-autoscaler.tanzu.vmware.com 1.26.2+vmware.1-tkg.3 5s cluster-autoscaler.tanzu.vmware.com.1.27.2+vmware.1-tkg.3 cluster-autoscaler.tanzu.vmware.com 1.27.2+vmware.1-tkg.3 5s contour.tanzu.vmware.com.1.26.2+vmware.1-tkg.1 contour.tanzu.vmware.com 1.26.2+vmware.1-tkg.1 5s ...
安装 Autoscaler 软件包
现在,可以安装 Cluster Autoscaler 软件包。将在
kube-system
命名空间中作为部署安装 Cluster Autoscaler。
- 创建
autoscaler.yaml
配置文件。- 可以通过使用适用于您的环境的相应值更改规范的
autoscaler-data-values
部分来自定义 Autoscaler。
#autoscaler.yaml apiVersion: v1 kind: ServiceAccount metadata: name: autoscaler-sa namespace: tkg-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: autoscaler-role-binding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: autoscaler-sa namespace: tkg-system --- apiVersion: packaging.carvel.dev/v1alpha1 kind: PackageInstall metadata: name: autoscaler namespace: tkg-system spec: serviceAccountName: autoscaler-sa packageRef: refName: cluster-autoscaler.tanzu.vmware.com versionSelection: constraints: 1.27.2+vmware.1-tkg.3 values: - secretRef: name: autoscaler-data-values --- apiVersion: v1 kind: Secret metadata: name: autoscaler-data-values namespace: tkg-system stringData: values.yml: | --- arguments: ignoreDaemonsetsUtilization: true maxNodeProvisionTime: 15m maxNodesTotal: 0 metricsPort: 8085 scaleDownDelayAfterAdd: 10m scaleDownDelayAfterDelete: 10s scaleDownDelayAfterFailure: 3m scaleDownUnneededTime: 10m clusterConfig: clusterName: "gc1" clusterNamespace: "cluster" paused: false
- 可以通过使用适用于您的环境的相应值更改规范的
- 安装 Cluster Autoscaler 软件包。
kubectl apply -f autoscaler.yaml
- 验证 Autoscaler 软件包的安装。
kubectl get pkgi -A | grep autoscaler
预期结果:tkg-system autoscaler cluster-autoscaler.tanzu.vmware.com 1.27.2+vmware.1-tkg.3 Reconcile succeeded 3m52s
- 验证 Autoscaler 部署。
kubectl get pods -n kube-system | grep autoscaler
cluster-autoscaler-798b65bd9f-bht8n 1/1 Running 0 2m
测试集群自动扩展
要测试集群自动扩展,请部署应用程序,增加副本数,并验证是否已扩展额外的工作节点以处理负载。
升级自动扩展的集群
要升级自动扩展的集群,请暂停 Autoscaler 软件包。