En este documento se explica cómo actualizar la versión de Kubernetes de un clúster de Kubernetes aislado de Google Distributed Cloud (GDC). Debes planificar actualizaciones periódicas para tus clústeres y asegurarte de que incorporan las últimas funciones y correcciones de Kubernetes.
Este documento está dirigido a administradores de TI, ingenieros de seguridad y administradores de redes que pertenezcan al grupo de administradores de la plataforma y que sean responsables de gestionar los recursos de Kubernetes en su organización. Para obtener más información, consulta Audiencias de la documentación aislada de GDC.
Antes de empezar
Instala la CLI de kubectl. Para obtener más información, consulta Instalar componentes.
Genera un archivo kubeconfig para el servidor de la API de gestión en la zona de destino. Para obtener más información, consulta el artículo sobre los recursos de clúster de Kubernetes de zona.
Para obtener los permisos que necesitas para enumerar las versiones de actualización disponibles, pide a tu administrador de gestión de identidades y accesos de la organización que te asigne el rol Administrador de clúster de usuarios (
user-cluster-admin).Si gestionas un clúster estándar y no puedes obtener el rol Administrador de clúster de usuarios de tu grupo de administradores de la plataforma, debes pedirles que te proporcionen la lista de versiones de actualización de Kubernetes disponibles.
Para obtener los permisos que necesitas para configurar una actualización de clúster, pide al administrador de gestión de identidades y accesos de tu organización que te conceda el rol Administrador de clúster estándar (
standard-cluster-admin).
Actualizar un clúster de Kubernetes
Usa la API
UserClusterUpgradeRequest
para actualizar un clúster de Kubernetes.
Para actualizar un clúster de Kubernetes mediante la API, sigue estos pasos:
Para ver una lista de las versiones de actualización de Kubernetes disponibles, imprime el valor de
kubernetesVersionde los objetosUserClusterMetadata:kubectl --kubeconfig MANAGEMENT_API_SERVER \ get userclustermetadata -o=custom-columns='TARGET_VERSION:.spec.kubernetesVersion'Sustituye
MANAGEMENT_API_SERVERpor la ruta al archivo kubeconfig del servidor de la API de gestión.El comando devuelve una lista de versiones de Kubernetes disponibles:
TARGET_VERSION 1.30.1000-gke.85Anota la versión de Kubernetes de la salida anterior a la que quieras actualizar tu clúster. El
targetVersionque especifiques en la solicitud de actualización del siguiente paso debe ser una de estas versiones disponibles.Solicita la actualización del clúster creando un recurso
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 EOFHaz los cambios siguientes:
MANAGEMENT_API_SERVER: la ruta al archivo kubeconfig del servidor de la API de gestión.CLUSTER_NAME: el nombre del clúster de Kubernetes que se va a actualizar, comouser-vm-2.CLUSTER_NAMESPACE: el espacio de nombres del clúster de Kubernetes. En el caso de los clústeres compartidos, usa el espacio de nombresplatform. En el caso de los clústeres estándar, utilice el espacio de nombres del proyecto del clúster.TARGET_VERSION: la versión de destino de la actualización identificada en el paso anterior, como1.30.1000-gke.85.
El tiempo medio de actualización de un clúster de Kubernetes es de unos 20 minutos.
Verifica la actualización del clúster monitorizando el
UserClusterUpgradeRequestrecurso:kubectl --kubeconfig MANAGEMENT_API_SERVER \ describe userclusterupgraderequest CLUSTER_NAME \ -n CLUSTER_NAMESPACEHaz los cambios siguientes:
MANAGEMENT_API_SERVER: la ruta al archivo kubeconfig del servidor de la API de gestión.CLUSTER_NAME: el nombre del clúster de Kubernetes que se va a actualizar, comouser-vm-2.CLUSTER_NAMESPACE: el espacio de nombres del clúster de Kubernetes. En el caso de los clústeres compartidos, usa el espacio de nombresplatform. En el caso de los clústeres estándar, usa el espacio de nombres del proyecto del clúster.
Inspecciona la sección
Specdel resultado. ContieneCurrent VersionyTarget Version. La actualización sigue en curso siCurrent VersionyTarget Versionson diferentes.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: SucceededLa actualización se habrá completado correctamente cuando la condición
Succeededtenga el estadoTruey el valor deCurrent Versioncoincida con el deTarget Version.Si la condición
Succeededtiene el estadoFalse, significa que no se ha podido completar la actualización. Si tienes problemas relacionados con la actualización de tu clúster de Kubernetes, ponte en contacto con el grupo de operadores de infraestructura para obtener más ayuda.
Verificar los subcomponentes del clúster después de la actualización
Una vez que hayas actualizado correctamente tu clúster de Kubernetes, te recomendamos que confirmes que todos los subcomponentes del clúster están en buen estado.
Comprueba si hay errores en los subcomponentes de tu clúster:
Comprueba que no haya subcomponentes que muestren un mensaje
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)"'Si la salida devuelve algún subcomponente, ponte en contacto con tu grupo de operadores de infraestructura para obtener más ayuda.
Comprueba que no haya subcomponentes que muestren el mensaje
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)"'En el caso de los clústeres de Kubernetes con tres nodos de plano de control y tres nodos de trabajador, la actualización tarda aproximadamente 20 minutos. Si sigues viendo subcomponentes en estado
Reconcilingdespués de 20 minutos, ponte en contacto con tu grupo de operadores de infraestructura para obtener más ayuda.
Siguientes pasos
- Diseñar la separación de cargas de trabajo
- Mantener clústeres de Kubernetes
- Gestionar grupos de nodos