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 de tus clústeres para asegurarte de que incorporan las funciones y correcciones más recientes 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 de su organización. Para obtener más información, consulta la documentación sobre audiencias de GDC aislado.
Antes de empezar
Para completar las tareas de este documento, debes solicitar los permisos necesarios y preparar tu entorno.
Solicitar roles de gestión de identidades y accesos
Debes tener roles específicos para obtener los permisos que necesitas para actualizar tu clúster de Kubernetes. Debes solicitar roles con el ámbito de tu proyecto y tu organización.
Roles de la organización
Para enumerar las versiones de actualización disponibles de un clúster de Kubernetes, pide al administrador de gestión de identidades y accesos de tu organización que te asigne el rol Administrador de clúster de usuarios (user-cluster-admin). Este rol no está vinculado a un espacio de nombres.
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 plataforma, debes pedirles que te proporcionen la lista de versiones de actualización de Kubernetes disponibles.
Roles de proyecto
Para crear, eliminar, editar o ver actualizaciones de clústeres, pide al administrador de gestión de identidades y accesos de tu proyecto que te conceda el rol Administrador de clústeres estándar (standard-cluster-admin). Este rol está vinculado al espacio de nombres de tu proyecto.
Prepara tu entorno
Para ejecutar comandos en un clúster de Kubernetes mediante la API, asegúrate de tener los siguientes recursos:
Busca el nombre del clúster de Kubernetes o pregunta a un miembro del grupo de administradores de la plataforma cuál es el nombre del clúster.
Usa el nombre del clúster de Kubernetes para sustituir
CLUSTER_NAMEen estas instrucciones.Inicia sesión y genera el archivo kubeconfig del servidor de la API de gestión.
Usa la ruta kubeconfig del servidor de la API de gestión para sustituir
MANAGEMENT_API_SERVERen estas instrucciones.
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 enumerar 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. La
targetVersionque especifiques en la solicitud de actualización del paso siguiente debe ser una de estas versiones disponibles.Solicita la actualización del clúster creando un
UserClusterUpgradeRequestrecurso: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, utilice 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 fallos 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