En esta fase se actualizan la versión de Kubernetes y los complementos de un clúster de Kubernetes.
Esta fase también ejecuta una tarea de actualización mz-location-upgrade.
La actualización del clúster se realiza en un nodo del clúster a la vez. Estos son los pasos generales para actualizar un clúster:
- Se realizan comprobaciones previas para asegurarse de que el nodo esté listo para la actualización.
- El nodo se vacía para prepararlo para la actualización
- Se actualiza la versión de Kubernetes del nodo.
- Se realizan comprobaciones posteriores al vuelo para asegurarse de que la actualización del nodo se ha completado correctamente.
- El recurso
InventoryMachinedel nodo se elimina demaintenance. De esta forma, el nodo estará listo para aceptar pods de nuevo.
Proceso de drenaje de nodos
El drenaje de un nodo implica mover de forma correcta todas las cargas de trabajo que se ejecutan en ese nodo. Consta de los siguientes pasos:
- El recurso
InventoryMachinedel nodo se coloca enmaintenance. - El recurso
BaremetalMachinese coloca enmaintenance. - El nodo de Kubernetes está marcado con
baremetal.cluster.gke.io/maintenance:NoSchedule - En los nodos de hardware desnudo, las máquinas virtuales que se ejecutan en el nodo se preparan para el drenaje configurando el
InventoryMachinede esa máquina virtual enmaintenance. - Los pods que se ejecutan en el nodo de Kubernetes se expulsan correctamente. Cada pod tiene hasta 80 minutos para finalizar correctamente.
Obtener el kubeconfig, el nombre del clúster y el espacio de nombres del clúster de administrador
Para clasificar los problemas de esta fase, necesitas el archivo KUBECONFIG del clúster de administrador, así como el nombre y el espacio de nombres del clúster que se va a actualizar. Define ORG_NAME en la organización para la que estés monitorizando la actualización.
export ORG_NAME=ORG_NAME
Selecciona una de las siguientes opciones en función del clúster especificado en el nombre de la fase.
Nombre de la fase: root-admin/AnthosBareMetal
export ADMIN_KUBECONFIG=ROOT_ADMIN_KUBECONFIG export CLUSTER_NAME="root-admin" export CLUSTER_NAMESPACE="root"Nombre de fase: org-admin/AnthosBareMetal
export ADMIN_KUBECONFIG=ROOT_ADMIN_KUBECONFIG export CLUSTER_NAME="${ORG_NAME}-admin" export CLUSTER_NAMESPACE="${ORG_NAME}"Nombre de la fase: system/AnthosBareMetal
export ADMIN_KUBECONFIG=ORG_ADMIN_KUBECONFIG export CLUSTER_NAME="${ORG_NAME}-system" export CLUSTER_NAMESPACE="${CLUSTER_NAME}-cluster"Nombre de la fase: service/AnthosBareMetal
export ADMIN_KUBECONFIG=ORG_ADMIN_KUBECONFIG export CLUSTER_NAME="g-${ORG_NAME}-shared-service" export CLUSTER_NAMESPACE="${CLUSTER_NAME}-cluster"Actualización de clúster de usuarios
export ADMIN_KUBECONFIG=ORG_ADMIN_KUBECONFIG export CLUSTER_NAME=USER_CLUSTER_NAME export CLUSTER_NAMESPACE="${CLUSTER_NAME}-cluster"
Recursos que se van a monitorizar
Recursos de clúster de ABM clusters.baremetal.cluster.gke.io
kubectl get cluster -n "${CLUSTER_NAMESPACE}" "${CLUSTER_NAME}" --kubeconfig=${ADMIN_KUBECONFIG}Ejemplo de salida
NAME ABM VERSION DESIRED ABM VERSION CLUSTER STATE root-admin 1.29.400-gke.86 1.29.400-gke.86 RunningRecursos de BaremetalMachine de ABM
kubectl get baremetalmachines -n "${CLUSTER_NAMESPACE}" --kubeconfig=${ADMIN_KUBECONFIG}Ejemplo de salida
NAME CLUSTER READY INSTANCEID MACHINE ABM VERSION DESIRED ABM VERSION 10.8.0.2 root-admin true baremetal://10.8.0.2 10.8.0.2 1.29.400-gke.86 1.29.400-gke.86 10.8.0.3 root-admin true baremetal://10.8.0.3 10.8.0.3 1.29.400-gke.86 1.29.400-gke.86 10.8.0.4 root-admin true baremetal://10.8.0.4 10.8.0.4 1.29.400-gke.86 1.29.400-gke.86Si alguna máquina muestra un valor de
ABM VERSIONdiferente deDESIRED ABM VERSIONoREADYno es igual atrue, usa la marca-o yamlpara obtener más detalles sobre la máquina.HealthChecks si un nodo no puede entrar o salir del modo de mantenimiento.
export MACHINE_IP=MACHINE_IP kubectl get healthchecks -n kube-system --kubeconfig=${ADMIN_KUBECONFIG}Ejemplo de salida
NAMESPACE NAME COMPONENT NAMESPACE STATUS LAST_COMPLETED kube-system bm-system-10.8.0.2-machine Healthy 14m kube-system bm-system-10.8.0.3-machine Healthy 14m kube-system bm-system-10.8.0.4-machine Healthy 5m43s kube-system bm-system-add-ons-add-ons Healthy 46m kube-system bm-system-add-ons-configdrift Healthy 46mSi alguna comprobación del estado muestra que el estado no es bueno, usa la marca
-o yamlpara consultar los detalles.Registros del controlador para comprobar si hay errores
export MACHINE_IP=MACHINE_IP kubectl logs -n kube-system -l baremetal.cluster.gke.io/lifecycle-controller-component=true | grep ${MACHINE_IP} kubectl logs -n capi-system -l baremetal.cluster.gke.io/lifecycle-controller-component=true | grep ${MACHINE_IP}Comprueba si hay tareas de actualización en curso o fallidas en esta fase.
export KUBECONFIG=ROOT_ADMIN_KUBECONFIG kubectl get upgradetaskrequests -n gpc-system -o json | jq '.items[] | select(.status.conditions[].status=="Unknown") | .metadata.name'Ejemplo de salida
"upg-task-org-1-os-node-upgrade-task-whg8v"export KUBECONFIG=ROOT_ADMIN_KUBECONFIG export UPGRADE_TASK=$(kubectl get upgradetaskrequests -n gpc-system -o json | jq -r '.items[] | select(.status.conditions[].status=="Unknown") | .metadata.name') kubectl get upgradetaskrequests -n gpc-system "${UPGRADE_TASK}" -o yamlEjemplo de salida
status: conditions: - lastTransitionTime: "2024-09-25T16:26:33Z" message: job gpc-system/v1.13.0-os-7cf810d7a5-upg-task-org-1-os-node-upgra-4n5t6 is running observedGeneration: 1 reason: JobRunning status: Unknown type: Succeeded upgradeTaskResponse: name: upg-task-org-1-os-node-upgrade-task-whg8v-v1.13.0-os-7cf810d7a5Si ves un trabajo en ejecución en la salida, puedes describir el trabajo o consultar los registros de pods para ver si hay errores.