Sie können die kubectl patch-Methode verwenden, um ein „direktes“ Update eines Tanzu Kubernetes-Clusters durchzuführen. Die kubectl patch-Methode ist eine Alternative zur Verwendung des kubectl edit-Befehls, um einen der unterstützten Clusteraktualisierungsvorgänge auszuführen.

Der Befehl „kubectl patch“

Einschränkung: Versuchen Sie nicht, kubectl patch zu verwenden, wie in diesem Thema beschrieben, um eine Clusterspezifikation zu aktualisieren, damit sie mit der TKGS-v1alpha2-API übereinstimmt. Für diese Art der Aktualisierung sollten Sie kubectl edit verwenden. Weitere Informationen finden Sie unter Aktualisieren einer Tanzu Kubernetes-Version, nachdem die Cluster-Spezifikation in die TKGS v1alpha2-API konvertiert wurde.
Mit dem Befehl kubectl patch wird ein „direktes“ Update eines Clusters durchgeführt. Der Zweck dieses Befehls besteht darin, eine Methode für das Upgrade von Kubernetes-Versionen bereitzustellen, und dies ist der hier dokumentierte Ansatz. Weitere Informationen zum Befehl kubectl patch finden Sie unter Update API Objects in Place Using kubectl patch in der Kubernetes-Dokumentation.

Bei der hier dargestellten Vorgehensweise wird der UNIX-Shell-Befehl read verwendet, um Eingaben über die Tastatur zu übernehmen und sie einer Variablen mit dem Namen $PATCH zuzuweisen. Der Befehl kubectl patch ruft die Kubernetes-API zum Aktualisieren des Cluster-Manifests auf. Das --type=merge-Flag gibt an, dass die Daten nur diejenigen Eigenschaften enthalten, die sich von den im Manifest vorhandenen Daten unterscheiden.

Upgrade der Kubernetes-Version mithilfe der Patch-Methode

Die häufigste Methode zum Auslösen eines parallelen Updates ist die Änderung der Verteilungsversion von Kubernetes für den Cluster, wobei die Eigenschaften .spec.distribution.version und .spec.distribution.fullVersion verwendet werden. Sie aktualisieren den version-Hinweis und deaktivieren die fullVersion bzw. setzen sie auf null, um einen potenziellen Versionskonflikt während des Erkennungsvorgangs zu vermeiden.

$ 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

Wenden Sie das Update unter Verwendung des Befehls kubectl patch an. Sie müssen die Variable "$PATCH" einschließlich der Anführungszeichen angeben, damit die Zeilenendmarken im Cluster-Manifest erhalten bleiben. Ersetzen Sie den Wert für TKG-CLUSTER-NAME durch den tatsächlichen Namen Ihres Clusters.

kubectl patch --type=merge tanzukubernetescluster TKG-CLUSTER-NAME --patch "$PATCH"
Erwartetes Ergebnis:
tanzukubernetescluster.run.tanzu.vmware.com/TKG-CLUSTER-NAME patched

Aktualisieren des Clusters durch Ändern der VirtualMachineClass für die Knoten mithilfe der Patch-Methode

Eine weitere Möglichkeit, ein paralleles Update eines Tanzu Kubernetes-Clusters auszulösen, besteht darin, die VirtualMachineClass für die Knotenpools zu ändern, indem die Eigenschaft .spec.topology.controlPlane.class oder .spec.topology.workers.class geändert wird.

read -r -d '' PATCH <<'EOF'
spec:
  topology:
    controlPlane:
      class: best-effort-xlarge
    workers:
      class: best-effort-xlarge
EOF

Wenden Sie das Update unter Verwendung des Befehls kubectl patch an, und ersetzen Sie dabei die Variable durch den Clusternamen.

kubectl patch --type=merge tanzukubernetescluster TKG-CLUSTER-NAME --patch "$PATCH"
Erwartetes Ergebnis:
tanzukubernetescluster.run.tanzu.vmware.com/TKG-CLUSTER-NAME patched

Aktualisieren des Clusters durch Ändern der StorageClass für die Knoten mithilfe der Patch-Methode

Eine weitere Möglichkeit, ein paralleles Update eines Tanzu Kubernetes-Clusters auszulösen, besteht darin, die StorageClass für die Knotenpools zu ändern, indem die Eigenschaft .spec.topology.controlPlane.storageClass oder .spec.topology.workers.storageClass geändert wird.

$ read -r -d '' PATCH <<'EOF'
spec:
  topology:
    controlPlane:
      storageClass: gc-storage-profile
    workers:
      storageClass: gc-storage-profile
EOF
Wenden Sie das Update unter Verwendung des Befehls kubectl patch an, und ersetzen Sie dabei die Variable durch den Clusternamen.
kubectl patch --type=merge tanzukubernetescluster TKG-CLUSTER-NAME --patch "$PATCH"
Erwartetes Ergebnis:
tanzukubernetescluster.run.tanzu.vmware.com/TKG-CLUSTER-NAME patched