Puede utilizar el método kubectl patch para realizar una actualización "in situ" de un clúster de Tanzu Kubernetes. El método kubectl patch es una alternativa al uso del comando kubectl edit para realizar una de las operaciones de actualización del clúster compatibles.

Acerca del comando Kubectl Patch

Restricción: No intente utilizar kubectl patch como se describe en este tema para actualizar una especificación de clúster para que cumpla con la API v1alpha2 de TKGS. Para este tipo de actualización, debe utilizar kubectl edit. Consulte Actualizar una versión de Tanzu Kubernetes después de convertir la especificación del clúster a la API v1alpha2 de TKGS.
El comando kubectl patch realiza una actualización "in situ" de un clúster. El propósito de este comando consiste en proporcionar un método para actualizar las versiones de Kubernetes y es el enfoque que se explica aquí. Para obtener más información sobre el comando kubectl patch, consulte Actualizar los objetos de la API mediante la revisión de kubectl en la documentación de Kubernetes.

El método que se demuestra aquí utiliza el comando de Shell de UNIX read para tomar la entrada del teclado y asignarla a una variable denominada $PATCH. El comando kubectl patch invoca a la API de Kubernetes para actualizar el manifiesto del clúster. La marca --type=merge indica que los datos contienen solo las propiedades que son diferentes del manifiesto existente.

Actualizar la versión de Kubernetes con el método de revisión

El método más común para activar una actualización gradual es cambiar la versión de distribución de Kubernetes del clúster, mediante la propiedad .spec.distribution.version o .spec.distribution.fullVersion. Actualice la sugerencia de version y desactive o anule fullVersion para evitar que se produzca un error de coincidencia de versiones durante la detección.

$ 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

Aplique la actualización mediante el comando kubectl patch. Debe incluir las comillas alrededor de la variable "$PATCH" para conservar los caracteres de línea nueva en el manifiesto del clúster. Reemplace el valor TKG-CLUSTER-NAME por el nombre real del clúster.

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

Actualizar el clúster mediante el cambio del objeto VirtualMachineClass para los nodos con el método de revisión

Otra forma de activar una actualización gradual de un clúster de Tanzu Kubernetes es cambiar el objeto VirtualMachineClass de los grupos de nodos, es decir, cambiar las propiedades .spec.topology.controlPlane.class o .spec.topology.workers.class.

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

Aplique la actualización mediante el comando kubectl patch y reemplace la variable por el nombre del clúster.

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

Actualizar el clúster mediante el cambio del objeto StorageClass para los nodos con el método de revisión

Otra forma de activar una actualización gradual de un clúster de Tanzu Kubernetes es cambiar el objeto StorageClass de los grupos de nodos, es decir, cambiar las propiedades .spec.topology.controlPlane.storageClass o .spec.topology.workers.storageClass.

$ read -r -d '' PATCH <<'EOF'
spec:
  topology:
    controlPlane:
      storageClass: gc-storage-profile
    workers:
      storageClass: gc-storage-profile
EOF
Aplique la actualización mediante el comando kubectl patch y reemplace la variable por el nombre del clúster.
kubectl patch --type=merge tanzukubernetescluster TKG-CLUSTER-NAME --patch "$PATCH"
Resultado esperado:
tanzukubernetescluster.run.tanzu.vmware.com/TKG-CLUSTER-NAME patched