可以使用 kubectl patch
方法对 Tanzu Kubernetes 集群执行“就地”更新。可使用 kubectl patch
方法替代 kubectl edit
命令执行任一支持的集群更新操作。
关于 Kubectl 修补程序命令
kubectl patch
更新集群规范来达到使其符合 TKGS v1alpha2 API 的目的。对于此类更新,应使用
kubectl edit
。请参见
将集群规范转换为 TKGS v1alpha2 API 后更新 Tanzu Kubernetes 版本。
kubectl patch
命令对集群执行“就地”更新。此命令的目的是提供一种升级 Kubernetes 版本的方法,也是此处介绍的方法。有关
kubectl patch
命令的详细信息,请参见 Kubernetes 文档中的
使用 kubectl patch 就地更新 API 对象。
下文展示的方法使用 UNIX shell 命令 read
从键盘获取输入并将其分配给名为 $PATCH
的变量。kubectl patch
命令将调用 Kubernetes API 以更新集群清单。--type=merge
标记表示数据只包含不同于现有清单的属性。
使用修补程序方法升级 Kubernetes 版本
触发滚动更新的最常用方法是使用 .spec.distribution.version
和 .spec.distribution.fullVersion
属性更改集群的 Kubernetes 分发版本。您需要更新 version
提示并取消设置 fullVersion
或将其设为 null,以避免发现过程中可能出现的版本不匹配问题。
$ read -r -d '' PATCH <<'EOF' spec: distribution: fullVersion: null # NOTE: Must set to null when updating just the version field version: v1.18.5 EOF
使用 kubectl patch
命令应用更新。必须在 "$PATCH"
变量两侧加上引号,以在集群清单中保留换行符。将 TKG-CLUSTER-NAME 值替换为集群的实际名称。
kubectl patch --type=merge tanzukubernetescluster TKG-CLUSTER-NAME --patch "$PATCH"
tanzukubernetescluster.run.tanzu.vmware.com/TKG-CLUSTER-NAME patched
通过更改节点的 VirtualMachineClass 使用 Patch 方法更新集群
触发 Tanzu Kubernetes 集群滚动更新的另一种方法是更改节点池的 VirtualMachineClass
,即更改属性 .spec.topology.controlPlane.class
或属性 .spec.topology.workers.class
。
read -r -d '' PATCH <<'EOF' spec: topology: controlPlane: class: best-effort-xlarge workers: class: best-effort-xlarge EOF
使用 kubectl patch
命令应用更新,并将变量替换为集群名称。
kubectl patch --type=merge tanzukubernetescluster TKG-CLUSTER-NAME --patch "$PATCH"
tanzukubernetescluster.run.tanzu.vmware.com/TKG-CLUSTER-NAME patched
通过更改节点的 StorageClass 使用 Patch 方法更新集群
触发 Tanzu Kubernetes 集群滚动更新的另一种方法是更改节点池的 StorageClass
,即更改属性 .spec.topology.controlPlane.storageClass
或属性 .spec.topology.workers.storageClass
。
$ read -r -d '' PATCH <<'EOF' spec: topology: controlPlane: storageClass: gc-storage-profile workers: storageClass: gc-storage-profile EOF
kubectl patch
命令应用更新,并将变量替换为集群名称。
kubectl patch --type=merge tanzukubernetescluster TKG-CLUSTER-NAME --patch "$PATCH"
tanzukubernetescluster.run.tanzu.vmware.com/TKG-CLUSTER-NAME patched