本文档介绍了如何升级 Google Distributed Cloud (GDC) 隔离式 Kubernetes 集群的 Kubernetes 版本。您必须为集群规划例行升级,以确保集群纳入最新的 Kubernetes 功能和修复。
本文档面向平台管理员群体中的 IT 管理员、安全工程师和网络管理员等受众群体,他们负责管理组织内的 Kubernetes 资源。如需了解详情,请参阅 GDC 气隙文档的受众群体。
准备工作
安装 kubectl CLI。如需了解详情,请参阅安装组件。
为目标可用区中的管理 API 服务器生成 kubeconfig 文件。如需了解详情,请参阅可用区级 Kubernetes 集群资源。
如需获得列出可用升级版本所需的权限,请让您的组织 IAM 管理员为您授予 User Cluster Admin (
user-cluster-admin) 角色。如果您管理的是标准集群,但无法从平台管理员群组获取用户集群管理员角色,则必须请求他们向您提供可用的 Kubernetes 升级版本列表。
如需获得配置集群升级所需的权限,请让组织 IAM 管理员为您授予标准集群管理员 (
standard-cluster-admin) 角色。
升级 Kubernetes 集群
使用 UserClusterUpgradeRequest API 升级现有 Kubernetes 集群。
如需使用 API 升级 Kubernetes 集群,请按以下步骤操作:
通过打印
UserClusterMetadata对象的kubernetesVersion值,列出可用的 Kubernetes 升级版本:kubectl --kubeconfig MANAGEMENT_API_SERVER \ get userclustermetadata -o=custom-columns='TARGET_VERSION:.spec.kubernetesVersion'将
MANAGEMENT_API_SERVER替换为管理 API 服务器的 kubeconfig 文件的路径。该命令会返回可用 Kubernetes 版本的列表:
TARGET_VERSION 1.30.1000-gke.85记下上一个输出中您要将集群升级到的 Kubernetes 版本。您在下一步的升级请求中指定的
targetVersion必须是这些可用版本之一。通过创建
UserClusterUpgradeRequest资源来请求集群升级:kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF apiVersion: cluster.gdc.goog/v1 kind: UserClusterUpgradeRequest metadata: name: CLUSTER_NAME namespace: CLUSTER_NAMESPACE spec: clusterRef: name: CLUSTER_NAME targetVersion: TARGET_VERSION EOF替换以下内容:
MANAGEMENT_API_SERVER:管理 API 服务器的 kubeconfig 文件的路径。CLUSTER_NAME:要升级的 Kubernetes 集群的名称,例如user-vm-2。CLUSTER_NAMESPACE:Kubernetes 集群的命名空间。对于共享集群,请使用platform命名空间。 对于标准集群,请使用集群的项目命名空间。TARGET_VERSION:在上一步中确定的升级目标版本,例如1.30.1000-gke.85。
Kubernetes 集群的平均升级时间约为 20 分钟。
通过监控
UserClusterUpgradeRequest资源来验证集群升级:kubectl --kubeconfig MANAGEMENT_API_SERVER \ describe userclusterupgraderequest CLUSTER_NAME \ -n CLUSTER_NAMESPACE替换以下内容:
MANAGEMENT_API_SERVER:管理 API 服务器的 kubeconfig 文件的路径。CLUSTER_NAME:要升级的 Kubernetes 集群的名称,例如user-vm-2。CLUSTER_NAMESPACE:Kubernetes 集群的命名空间。对于共享集群,请使用platform命名空间。 对于标准集群,请使用集群的项目命名空间。
检查输出的
Spec部分。它包含Current Version和Target Version。如果Current Version和Target Version不同,则表示升级仍在进行中。Spec: ... Current Version: 1.29.500-gke.60 Target Version: 1.30.1000-gke.85 Status: Conditions: - Message: Upgrade is in progress Reason: UpgradeInProgress Status: "False" Type: Succeeded当
Succeeded条件的状态为True且Current Version与Target Version一致时,表示升级已成功完成。如果
Succeeded条件的状态为False,则升级失败。如果您在 Kubernetes 集群升级过程中遇到错误,请与基础设施运维人员群组联系以获取进一步帮助。
验证升级后的集群子组件
成功升级 Kubernetes 集群后,建议确认集群的所有子组件是否运行正常。
检查集群中是否存在子组件故障:
验证是否没有显示
ReconciliationError消息的子组件:kubectl --kubeconfig MANAGEMENT_API_SERVER \ get subcomponent -n CLUSTER_NAME -o json | jq -r \ '.items[] | select(.status.conditions[]?.reason == "ReconciliationError") | select(.status.featureDisabled != true) | "Sub-Component: \(.metadata.name) - \(.status.conditions[]?.message)"'如果输出返回任何子组件,请与您的基础设施运营团队联系,以获取进一步的帮助。
验证是否没有显示
Reconciling消息的子组件:kubectl --kubeconfig MANAGEMENT_API_SERVER \ get subcomponent -n CLUSTER_NAME -o json | jq -r \ '.items[] | select(.status.conditions[]?.reason == "Reconciling") | select(.status.featureDisabled != true) | select( "\(.status)" | contains("PreinstallPending") | not) | "Sub-Component: \(.metadata.name) - \(.status.conditions[]?.message)"'对于具有 3 个控制平面节点和 3 个工作器节点的 Kubernetes 集群,升级时间大约为 20 分钟。如果 20 分钟后,您仍然看到子组件处于
Reconciling状态,请与您的基础设施运营团队联系,以获取进一步的帮助。