En esta página, se muestra cómo resolver problemas con los clústeres privados de Google Kubernetes Engine (GKE).
Si necesitas asistencia adicional, comunícate con Atención al cliente de Cloud.
El clúster privado no se está ejecutando
Un clúster privado deja de funcionar si se borra el intercambio de tráfico de VPC entre el plano de control y los nodos del clúster, las reglas de firewall que permiten el tráfico de entrada del plano de control del clúster a los nodos en el puerto 10250 o la ruta predeterminada a la puerta de enlace predeterminada de Internet. Si borras la ruta predeterminada, debes asegurarte de que se enrute el tráfico a los servicios de Google Cloud necesarios. Para obtener más información, consulta Enrutamiento personalizado.
Se agota el tiempo de espera cuando se crea un clúster privado
Cada clúster privado requiere una ruta de intercambio de tráfico entre las VPC, pero solo puede ocurrir una operación de intercambio de tráfico a la vez. Si intentas crear varios clústeres privados al mismo tiempo, es posible que se agote el tiempo de espera de creación del clúster. Para evitar esto, crea clústeres privados nuevos de manera serial para que las rutas de intercambio de tráfico entre VPC ya existan en cada clúster privado posterior. Si intentas crear un único clúster privado, es posible que también se agote el tiempo de espera si hay operaciones en ejecución en la VPC.
La conexión de intercambio de tráfico entre redes de VPC en un clúster privado se borra por accidente
- Síntomas
Cuando borras una conexión de intercambio de tráfico entre redes de VPC por accidente, el clúster entra en un estado de reparación y todos los nodos muestran un estado
UNKNOWN
. No podrás realizar ninguna operación en el clúster, ya que se desconecta la accesibilidad del plano de control. Cuando inspeccionas el plano de control, los registros mostrarán un error similar al siguiente:error checking if node NODE_NAME is shutdown: unimplemented
- Causas posibles
Borraste por accidente la conexión de intercambio de tráfico entre redes de VPC.
- Solución
Lleva a cabo los pasos siguientes:
Crea un clúster nuevo de intercambio de tráfico entre redes de VPC temporal. La creación del clúster hace que la recreación del intercambio de tráfico entre redes de VPC y el clúster anterior se restablezca a su funcionamiento normal.
Borra el clúster de intercambio de tráfico entre redes de VPC creado de forma temporal después de que los clústeres anteriores restablezcan su funcionamiento normal.
El clúster se superpone con el intercambio de tráfico
- Síntomas
Si intentas crear un clúster privado, se muestra un error similar al siguiente:
Google Compute Engine: An IP range in the peer network overlaps with an IP range in an active peer of the local network.
- Causas posibles
Elegiste un CIDR del plano de control superpuesto.
- Solución
Borra y vuelve a crear el clúster mediante otro CIDR del plano de control.
No se puede acceder al plano de control de un clúster privado
Aumenta la probabilidad de que se pueda acceder al plano de control del clúster mediante la implementación de cualquiera de las opciones de configuración de acceso del extremo del clúster. Si deseas obtener más información, consulta el acceso a los extremos del clúster.
- Síntomas
Después de crear un clúster privado, si se intenta ejecutar los comandos
kubectl
en el clúster, se muestra un error similar a uno de los siguientes:Unable to connect to the server: dial tcp [IP_ADDRESS]: connect: connection timed out.
Unable to connect to the server: dial tcp [IP_ADDRESS]: i/o timeout.
- Causas posibles
kubectl
no puede comunicarse con el plano de control del clúster.- Solución
Verifica que las credenciales del clúster se hayan generado para kubeconfig o que se haya activado el contexto correcto. Para obtener más información sobre cómo configurar las credenciales del clúster, consulta Genera una entrada de kubeconfig.
Verifica que se permita el acceso al plano de control mediante su dirección IP externa. La inhabilitación del acceso externo al plano de control del clúster aísla el clúster de Internet. Esta configuración es inmutable después de la creación del clúster. Con esta configuración, solo los rangos de CIDR de red interna autorizados o la red reservada tienen acceso al plano de control.
Verifica que la dirección IP de origen esté autorizada para acceder al plano de control:
gcloud container clusters describe CLUSTER_NAME \ --format="value(masterAuthorizedNetworksConfig)"\ --location=COMPUTE_LOCATION
Reemplaza lo siguiente:
CLUSTER_NAME
: es el nombre de tu clúster.COMPUTE_LOCATION
: la ubicación de Compute Engine para el clúster.
Si la dirección IP de origen no está autorizada, el resultado que se muestra puede estar vacío (solo aparecen llaves) o contener rangos CIDR que no incluyen la dirección IP de origen.
cidrBlocks: cidrBlock: 10.XXX.X.XX/32 displayName: jumphost cidrBlock: 35.XXX.XXX.XX/32 displayName: cloud shell enabled: true
Agrega redes autorizadas al plano de control de acceso.
Si ejecutas el comando
kubectl
desde un entorno local o una región diferente a la ubicación del clúster, asegúrate de que esté habilitado el acceso global del extremo privado del plano de control. Para obtener más información, consulta Accede al extremo privado del plano de control de forma global.Describe el clúster para ver la respuesta de la configuración de acceso de control:
gcloud container clusters describe CLUSTER_NAME \ --location=COMPUTE_LOCATION \ --flatten "privateClusterConfig.masterGlobalAccessConfig"
Reemplaza lo siguiente:
CLUSTER_NAME
: es el nombre de tu clúster.COMPUTE_LOCATION
: la ubicación de Compute Engine para el clúster.
Un resultado correcto es similar al siguiente:
enabled: true
Si se muestra
null
, habilita el acceso global al plano de control.
No se puede crear el clúster debido a la superposición del bloque CIDR de IPv4
- Síntomas
gcloud container clusters create
muestra un error similar al siguiente:The given master_ipv4_cidr 10.128.0.0/28 overlaps with an existing network 10.128.0.0/20.
- Causas posibles
Especificaste un bloque CIDR del plano de control que se superpone con una subred existente en tu VPC.
- Solución
Especifica un bloque CIDR para
--master-ipv4-cidr
que no se superponga con una subred existente.
No se puede crear el clúster debido a que otro clúster ya usa el rango de servicios
- Síntomas
Si intentas crear un clúster privado, se muestra un error similar al siguiente:
Services range [ALIAS_IP_RANGE] in network [VPC_NETWORK], subnetwork [SUBNET_NAME] is already used by another cluster.
- Causas posibles
Cualquiera de las siguientes opciones:
- Elegiste un rango de servicios que aún está en uso por otro clúster o el clúster no se borró.
- Hubo un clúster con ese rango de servicios que se borró, pero los metadatos de rangos secundarios no se borraron de forma correcta. Los rangos secundarios de un clúster de GKE se guardan en los metadatos de Compute Engine y deben quitarse una vez que se borra el clúster. Incluso cuando un clúster se borra de forma correcta, es posible que los metadatos no se quiten.
- Solución
Lleva a cabo los pasos siguientes:
- Comprueba si un clúster existente está usando el rango de servicios. Puedes usar el comando
gcloud container clusters list
con la marcafilter
para buscar el clúster. Si hay un clúster existente que usa los rangos de servicios, debes borrar ese clúster o crear un rango de servicios nuevo. - Si un clúster existente no usa el rango de servicios, quita manualmente la entrada de metadatos que coincida con el rango de servicios que deseas usar.
- Comprueba si un clúster existente está usando el rango de servicios. Puedes usar el comando
No se puede crear la subred
- Síntomas
Cuando intentas crear un clúster privado con una subred automática o crear una subred personalizada, puedes encontrar el siguiente error:
An IP range in the peer network overlaps with an IP range in one of the active peers of the local network.
- Causas posibles
El rango CIDR del plano de control que especificaste se superpone con otro rango de IP en el clúster. Esto también puede ocurrir si borraste un clúster privado hace poco y ahora intentas crear uno nuevo con el mismo CIDR del plano de control.
- Solución
Usa otro rango de CIDR.
No se puede extraer la imagen de Docker Hub público
- Síntomas
Un Pod que se ejecuta en tu clúster muestra una advertencia en
kubectl describe
:Failed to pull image: rpc error: code = Unknown desc = Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
- Causas posibles
Los nodos de un clúster privado no tienen direcciones IP externas, por lo que no cumplen con los requisitos de acceso a Internet. Sin embargo, los nodos pueden acceder a los servicios y las APIs de Google, incluido Artifact Registry, si habilitaste el Acceso privado a Google y cumpliste con los requisitos de la red.
- Solución
Utiliza una de las siguientes soluciones:
Copia las imágenes de tu clúster privado de Docker Hub a Artifact Registry. Consulta la página sobre cómo migrar contenedores desde un registro de terceros para obtener más información.
GKE busca de forma automática
mirror.gcr.io
para las copias almacenadas en caché de las imágenes de Docker Hub a las que se accede con frecuencia.Si necesitas extraer imágenes de Docker Hub o de otro repositorio público, usa Cloud NAT o un proxy basado en instancias que sea el objetivo de una ruta estática
0.0.0.0/0
.
Solicitud a la API que activa el agotamiento del tiempo de espera del webhook de admisión
- Síntomas
Se agota el tiempo de espera de una solicitud a la API que activa un webhook de admisión configurado para usar un servicio con un targetPort distinto a 443, lo que hace que la solicitud falle:
Error from server (Timeout): request did not complete within requested timeout 30s
- Causas posibles
De forma predeterminada, el firewall no permite conexiones TCP a los nodos, excepto en los puertos 443 (HTTPS) y 10250 (kubelet). Un webhook de admisión que intenta comunicarse con un Pod en un puerto distinto a 443 fallará si no hay una regla de firewall personalizada que permita el tráfico.
- Solución
Agrega una regla de firewall para tu caso de uso específico.
No se puede crear el clúster porque falla la verificación de estado
- Síntomas
Después de crear un clúster privado, se atasca en el paso de verificación de estado e informa un error similar al siguiente:
All cluster resources were brought up, but only 0 of 2 have registered.
All cluster resources were brought up, but: 3 nodes out of 4 are unhealthy
- Causas posibles
Cualquiera de los siguientes:
- Los nodos del clúster no pueden descargar objetos binarios obligatorios de la API de Cloud Storage (
storage.googleapis.com
). - Reglas de firewall que restringen el tráfico de salida.
- Los permisos de IAM de VPC compartida son incorrectos.
- El acceso privado a Google requiere que configures el DNS para
*.gcr.io
.
- Los nodos del clúster no pueden descargar objetos binarios obligatorios de la API de Cloud Storage (
- Solución
Utiliza una de las siguientes soluciones:
Habilita el Acceso privado a Google en la subred para el acceso de la red del nodo a
storage.googleapis.com
o habilita Cloud NAT a fin de permitir que los nodos se comuniquen constorage.googleapis.com
. extremos. Para obtener más información, consulta Cómo solucionar problemas de creación de clústeres privados de GKE.Para el acceso de lectura del nodo a
storage.googleapis.com
, confirma que la cuenta de servicio asignada al nodo del clúster tenga acceso de lectura de almacenamiento.Asegúrate de tener una regla de firewall de Google Cloud a fin de permitir todo el tráfico de salida o configura una regla de firewall para permitir el tráfico de salida de los nodos al plano de control del clúster y
*.googleapis.com
.Crea la configuración de DNS para
*.gcr.io
.Si tienes una configuración de firewall o de ruta no predeterminada, configura el Acceso privado a Google.
Si usas los Controles del servicio de VPC, configura Container Registry o Artifact Registry para los clústeres privados de GKE.
Asegúrate de no haber borrado o modificado las reglas de firewall creadas automáticamente para la entrada.
Si usas una VPC compartida, asegúrate de haber configurado los permisos de IAM necesarios.
kubelet no pudo crear una zona de pruebas de Pod
- Síntomas
Después de crear un clúster privado, se informa un error similar a uno de los siguientes:
Warning FailedCreatePodSandBox 12s (x9 over 4m) kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = Error response from daemon: Get https://registry.k8s.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized
- Causas posibles
El Pod
calico-node
onetd
no puede alcanzar*.gcr.io
.- Solución
Utiliza una de las siguientes soluciones:
- Asegúrate de que completaste la configuración requerida para Container Registry o Artifact Registry.
Nodos de clúster privado que se crearon, pero no se unieron al clúster
A menudo, cuando se usan rutas personalizadas y dispositivos de red de terceros en la VPC que usa el clúster privado, la ruta predeterminada (0.0.0.0/0
) se redirecciona al dispositivo, en lugar de la puerta de enlace de Internet predeterminada. Además de la conectividad del plano de control, debes asegurarte de que sea posible acceder a los siguientes destinos:
- *.googleapis.com
- *.gcr.io
- gcr.io
Configura el Acceso privado a Google en los tres dominios. Con esta práctica recomendada, se permite que los nodos nuevos se inicien y se unan al clúster, y se mantiene restringido el tráfico vinculado a Internet.
Las cargas de trabajo de clústeres de GKE privados no pueden acceder a Internet
Los Pods en clústeres de GKE privados no pueden acceder a Internet. Por ejemplo, después de ejecutar el comando apt update
desde el Pod exec shell
, se informa un error similar al siguiente:
0% [Connecting to deb.debian.org (199.232.98.132)] [Connecting to security.debian.org (151.101.130.132)]
Si el rango de direcciones IP secundario de la subred que se usa para los Pods en el clúster no está configurado en la puerta de enlace de Cloud NAT, los Pods no pueden conectarse a Internet, ya que no tienen configurada una dirección IP externa para la puerta de enlace de Cloud NAT.
Asegúrate de configurar la puerta de enlace de Cloud NAT a fin de aplicar al menos los siguientes rangos de direcciones IP de subred para la subred que usa tu clúster:
- Rango de direcciones IP principal de la subred (para los nodos)
- Rango de direcciones IP secundario de la subred utilizado para los Pods del clúster
- Rango de direcciones IP secundario de la subred utilizado para los servicios del clúster
Si quieres obtener más información, consulta cómo agregar un rango de IP de subred secundario usado para los Pods.