En esta etapa, se actualizan la versión de Kubernetes y los complementos de un clúster de Kubernetes.
En esta etapa, también se 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. Los pasos de alto nivel en la actualización del clúster son los siguientes:
- Se ejecutan verificaciones previas para garantizar que el nodo esté listo para la actualización.
- El nodo se vacía para prepararse para la actualización.
- Se actualiza la versión de Kubernetes en el nodo.
- Se ejecutan verificaciones posteriores al vuelo para garantizar que la actualización del nodo se realice correctamente.
- El recurso
InventoryMachinedel nodo se quita demaintenance. Esto permite que el nodo esté listo para aceptar Pods nuevamente.
Proceso de desviación del nodo
El vaciado de un nodo implica mover de forma ordenada todas las cargas de trabajo que se ejecutan en él. Consta de los siguientes pasos:
- El recurso
InventoryMachinepara el nodo se coloca enmaintenance. - El recurso
BaremetalMachinese coloca enmaintenance. - El nodo de Kubernetes está contaminado con
baremetal.cluster.gke.io/maintenance:NoSchedule - En el caso de los nodos de hardware físico, las máquinas virtuales que se ejecutan en el nodo se preparan para el vaciado configurando
InventoryMachinepara esa máquina virtual enmaintenance. - Los Pods que se ejecutan en el nodo de Kubernetes se expulsan de forma correcta. Cada pod tiene hasta 80 minutos para finalizar de forma correcta.
Obtén el kubeconfig, el nombre y el espacio de nombres del clúster de administrador
Para solucionar problemas en esta etapa, necesitas el archivo KUBECONFIG del clúster de administrador, y el nombre y el espacio de nombres del clúster que se está actualizando. Establece ORG_NAME en la organización para la que supervisas la actualización.
export ORG_NAME=ORG_NAME
Selecciona una de las siguientes opciones según el clúster especificado en el nombre de la etapa.
Nombre de la etapa: root-admin/AnthosBareMetal
export ADMIN_KUBECONFIG=ROOT_ADMIN_KUBECONFIG export CLUSTER_NAME="root-admin" export CLUSTER_NAMESPACE="root"Nombre de la etapa: org-admin/AnthosBareMetal
export ADMIN_KUBECONFIG=ROOT_ADMIN_KUBECONFIG export CLUSTER_NAME="${ORG_NAME}-admin" export CLUSTER_NAMESPACE="${ORG_NAME}"Nombre de la etapa: system/AnthosBareMetal
export ADMIN_KUBECONFIG=ORG_ADMIN_KUBECONFIG export CLUSTER_NAME="${ORG_NAME}-system" export CLUSTER_NAMESPACE="${CLUSTER_NAME}-cluster"Nombre de la etapa: service/AnthosBareMetal
export ADMIN_KUBECONFIG=ORG_ADMIN_KUBECONFIG export CLUSTER_NAME="g-${ORG_NAME}-shared-service" export CLUSTER_NAMESPACE="${CLUSTER_NAME}-cluster"Actualización del clúster de usuario
export ADMIN_KUBECONFIG=ORG_ADMIN_KUBECONFIG export CLUSTER_NAME=USER_CLUSTER_NAME export CLUSTER_NAMESPACE="${CLUSTER_NAME}-cluster"
Recursos para supervisar
Recurso de clúster de ABM clusters.baremetal.cluster.gke.io
kubectl get cluster -n "${CLUSTER_NAMESPACE}" "${CLUSTER_NAME}" --kubeconfig=${ADMIN_KUBECONFIG}Resultado de ejemplo:
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}Resultado de ejemplo:
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 del valor deDESIRED ABM VERSIONo siREADYno 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}Resultado de ejemplo:
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 verificación de estado aparece como no saludable, usa la marca
-o yamlpara consultar los detalles.Registros del controlador para verificar 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}Verifica si hay tareas de actualización en ejecución o con errores en esta etapa.
export KUBECONFIG=ROOT_ADMIN_KUBECONFIG kubectl get upgradetaskrequests -n gpc-system -o json | jq '.items[] | select(.status.conditions[].status=="Unknown") | .metadata.name'Resultado de ejemplo:
"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 yamlResultado de ejemplo:
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 el resultado, puedes describirlo o verificar los registros del Pod en busca de errores.