En esta página, se muestra cómo resolver problemas con las actualizaciones de clústeres de Google Kubernetes Engine (GKE).
Si necesitas asistencia adicional, comunícate con Atención al cliente de Cloud.kube-apiserver está en mal estado después de la actualización del plano de control
El siguiente problema se produce cuando inicias una actualización manual del plano de control de la versión de GKE de tu clúster. Algunos webhooks de admisión implementados por el usuario pueden bloquear los componentes del sistema a fin de que no creen funciones de RBAC permisivas, que son necesarias para funcionar de forma correcta. Durante una actualización del plano de control, Google Cloud vuelve a crear el componente del servidor de la API de Kubernetes (kube-apiserver). Si un webhook bloquea el rol de RBAC para el componente del servidor de la API, este no se iniciará y la actualización del clúster no se completará.
El mensaje de error en la CLI de gcloud es similar al siguiente:
FAILED: All cluster resources were brought up, but: component "KubeApiserverReady" from endpoint "readyz of kube apiserver is not successful" is unhealthy.
A fin de identificar el webhook de error, verifica tus registros de auditoría de GKE para las llamadas de RBAC con la siguiente información:
protoPayload.resourceName="RBAC_RULE"
protoPayload.authenticationInfo.principalEmail="system:apiserver"
RBAC_RULE
es el nombre completo de un rol de RBAC, como rbac.authorization.k8s.io/v1/clusterroles/system:controller:horizontal-pod-autoscaler
.
El nombre del webhook con errores se muestra en el registro con el siguiente formato:
admission webhook WEBHOOK_NAME denied the request
Para resolver este problema, realiza las siguientes acciones:
- Ajusta tus restricciones para permitir la creación y la actualización de ClusterRoles que tengan el prefijo
system:
. - Ajusta el webhook con el fin de no interceptar solicitudes para crear y actualizar roles de RBAC del sistema.
- Inhabilita el webhook.
¿Por qué ocurre esto?
Kubernetes concilia automáticamente los roles de RBAC del sistema predeterminados con las políticas predeterminadas en la última versión secundaria. Las políticas predeterminadas para las funciones del sistema a veces cambian en las nuevas versiones de Kubernetes.
Para realizar esta conciliación, GKE crea o actualiza los ClusterRoles y ClusterRoleBindings en el clúster. Si tienes un webhook que intercepta y rechaza las solicitudes de creación o actualización debido al alcance de los permisos que usan las políticas de RBAC predeterminadas, el servidor de la API no puede funcionar en la versión secundaria nueva.
Cargas de trabajo expulsadas después de la actualización del clúster estándar
Es posible que las cargas de trabajo estén en riesgo de expulsación después de la actualización del clúster si se cumplen las siguientes condiciones:
- Las cargas de trabajo del sistema requieren más espacio cuando el plano de control del clúster ejecuta la versión nueva de GKE.
- Tus nodos existentes no tienen suficientes recursos para ejecutar las nuevas cargas de trabajo del sistema y tus cargas de trabajo existentes.
- El escalador automático de clúster está inhabilitado para el clúster.
Para resolver este problema, realiza las siguientes acciones:
- Habilita el ajuste de escala automático para grupos de nodos existentes
- Habilitar el aprovisionamiento automático de nodos
- Crear un grupo de nodos nuevo
- Escala verticalmente un grupo de nodos existente