Cambia el tamaño de un clúster de usuario

En esta página, se describe cómo cambiar el tamaño de un clúster de usuario de GKE On-Prem. Cambiar el tamaño de un clúster de usuario implica agregar o quitar nodos en ese clúster. Quitar nodos de un clúster debería liberar las direcciones IP del clúster, de modo que estén disponibles para que las usen otros nodos. Agregar nodos requiere que las direcciones IP estén disponibles para esos nodos.

Para cambiar el tamaño de un clúster de usuario, cambia los campos replicas en la sección nodePools del archivo de configuración e implementa esos cambios en el clúster existente con el comando gkectl update cluster.

Si quieres obtener información sobre los límites máximos y mínimos de los clústeres de usuario, consulta Cuotas y límites.

Si quieres obtener información para administrar grupos de nodos con gkectl update cluster, consulta crea y administra grupos de nodos.

Verifica que haya suficientes direcciones IP disponibles

Si agregas nodos adicionales a un clúster, asegúrate de que el clúster tenga suficientes direcciones IP. Verificar que tienes suficientes direcciones IP depende de si el clúster usa un servidor DHCP o direcciones IP estáticas.

DHCP

Si el clúster usa DHCP, verifica que el servidor DHCP de la red en la que se crean los nodos tenga suficientes direcciones IP. Debe haber más direcciones IP que nodos en ejecución en el clúster de usuario.

IP estáticas

Si el clúster usa IP estáticas, la ejecución de gkectl update cluster primero verifica si asignaste suficientes direcciones IP en el clúster. De lo contrario, puedes encontrar la cantidad de direcciones IP adicionales necesarias para la operación de actualización en el mensaje de error.

Si necesitas agregar más direcciones IP al clúster de usuario, realiza los siguientes pasos:

  1. Abre el archivo hostconfig del clúster de usuario para editarlo.

  2. Si deseas ver las direcciones reservadas para un clúster de usuario, haz lo siguiente:

    kubectl get cluster --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] 
    -n [USER_CLUSTER_NAME] [USER_CLUSTER_NAME] -o yaml

Donde:

  • [ADMIN_CLUSTER_KUBECONFIG] le indica a kubectl que use el kubeconfig del clúster de administrador, que se usa para ver o cambiar la configuración del clúster de usuario.
  • -n [USER_CLUSTER_NAME] le indica a kubectl que busque en un espacio de nombres con el mismo nombre del clúster de usuario.
  • [USER_CLUSTER_NAME] -o yaml le indica a kubectl en qué clúster de usuario se ejecuta el comando. -o yaml muestra la configuración del clúster de usuario.
  1. Si alguna de las direcciones reservadas para un clúster de usuario se incluye en el archivo hostconfig, agrégalas al bloque correspondiente basado en netmask y gateway.

  2. Agrega las direcciones IP estáticas adicionales necesarias al bloque correspondiente y, luego, ejecuta gkectl update cluster.

A continuación, se muestra un ejemplo de un archivo hostconfig con sus cuatro bloques de IP estáticos destacados:

hostconfig:
  dns: 172.16.255.1
  tod: 216.239.35.0
blocks:
- netmask: 255.255.248.0
  gateway: 21.0.135.254
  ips:
    - ip: 21.0.133.41
      hostname: user-node-1
    - ip: 21.0.133.50
      hostname: user-node-2
    - ip: 21.0.133.56
      hostname: user-node-3
    - ip: 21.0.133.47
      hostname: user-node-4

Cambia el tamaño de un clúster de usuario

A partir de la versión 1.5.0, puedes cambiar el tamaño de un clúster si cambias los campos replicas en la sección nodePools del archivo de configuración e implementas esos cambios en el clúster existente con el comando gkectl update cluster.

Verifica el cambio de tamaño

Para verificar que el cambio de tamaño se haya realizado de forma correcta, ejecuta lo siguiente:

kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] get nodes
kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] describe machinedeployments [NODE_POOL_NAME] | grep Replicas

En el ejemplo anterior, [USER_CLUSTER_KUBECONFIG] es el archivo kubeconfig del clúster de usuario. La cantidad de nodos que elegiste debe reflejarse en los resultados de estos comandos.

Soluciona problemas

Para obtener más información, consulta Soluciona problemas.

El cambio de tamaño de un clúster de usuario falla

Síntomas

Una operación de cambio de tamaño en un clúster de usuario falla.

Causas posibles

Varios factores pueden hacer que las operaciones de cambio de tamaño fallen.

Solución

Si falla el cambio de tamaño, sigue estos pasos:

  1. Verifica el estado del MachineDeployment del clúster para ver si hay eventos o mensajes de error:

    kubectl describe machinedeployments [MACHINE_DEPLOYMENT_NAME]
  2. Verifica si hay errores en las máquinas recién creadas:

    kubectl describe machine [MACHINE_NAME]

Error: “No se pueden asignar direcciones”

Síntomas

Después de cambiar el tamaño de un clúster de usuario, kubectl describe machine [MACHINE_NAME] muestra el siguiente error:

Events:
   Type     Reason  Age                From                    Message
   ----     ------  ----               ----                    -------
   Warning  Failed  9s (x13 over 56s)  machineipam-controller  ipam: no addresses can be allocated
   
Causas posibles

No hay suficientes direcciones IP disponibles para el clúster de usuario.

Solución

Asigna más direcciones IP al clúster. Luego, borra la máquina afectada:

kubectl delete machine [MACHINE_NAME]

Si el clúster se configura de forma correcta, se creará una máquina de reemplazo con una dirección IP.

Hay una cantidad suficiente de direcciones IP asignadas, pero la máquina no se registra con el clúster

Síntomas

La red tiene suficientes direcciones asignadas, pero la máquina aún no se logra registrar con el clúster de usuario.

Causas posibles

Puede haber un conflicto de IP. Es posible que otra máquina o tu balanceador de cargas tome la IP.

Solución

Verifica que no se haya tomado la dirección IP de la máquina afectada. Si hay un conflicto, debes resolverlo en tu entorno.

Diagnostica problemas de clústeres mediante gkectl

Usa los comandos gkectl diagnose para identificar los problemas de clústeres y compartir la información de un clúster con Google. Consulta Diagnostica problemas de clústeres.

Comportamiento de registro predeterminado

Para gkectl y gkeadm, basta con usar la configuración de registro predeterminada:

  • De forma predeterminada, las entradas de registro se guardan de la siguiente manera:

    • Para gkectl, el archivo de registro predeterminado es /home/ubuntu/.config/gke-on-prem/logs/gkectl-$(date).log y el archivo está vinculado con un symlink con el archivo logs/gkectl-$(date).log en el directorio local en el que ejecutas gkectl.
    • Para gkeadm, el archivo de registro predeterminado es logs/gkeadm-$(date).log en el directorio local en el que ejecutas gkeadm.
  • Todas las entradas de registro se guardan en el archivo de registro, incluso si no se imprimen en la terminal (cuando --alsologtostderr es false).
  • El nivel de verbosidad -v5 (predeterminado) cubre todas las entradas de registro que necesita el equipo de asistencia al cliente.
  • El archivo de registro también contiene el comando ejecutado y el mensaje de error.

Recomendamos que envíes el archivo de registro al equipo de asistencia al cliente cuando necesites ayuda.

Especifica una ubicación no predeterminada para el archivo de registro

A fin de especificar una ubicación no predeterminada para el archivo de registro gkectl, usa la marca --log_file. El archivo de registro que especifiques no se vinculará con un symlink con el directorio local.

A fin de especificar una ubicación no predeterminada para el archivo de registro gkeadm, usa la marca --log_file.

Ubica los registros de la API de clúster en el clúster de administrador

Si una VM no se inicia después de que se inicia el plano de control de administrador, puedes intentar depurarla mediante la inspección de los registros de los controladores de la API de clúster en el clúster de administrador:

  1. Encuentra el nombre del Pod de controladores de la API de clúster en el espacio de nombres kube-system, en el que [ADMIN_CLUSTER_KUBECONFIG] es la ruta de acceso al archivo kubeconfig del clúster de administrador:

    kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] -n kube-system get pods | grep clusterapi-controllers
  2. Abre los registros del Pod, en los que [POD_NAME] es el nombre del Pod. De manera opcional, usa grep o una herramienta similar para buscar errores:

    kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] -n kube-system logs [POD_NAME] vsphere-controller-manager

El comando de actualización falla

Cuando ejecutas gkectl update para actualizar un clúster, es posible que veas el siguiente mensaje de error:
Failed to update the cluster: failed to begin updating user cluster "CLUSTER_NAME": timed out waiting for the condition
Si quieres examinar este mensaje de error en más detalle, ejecuta este comando:
kubectl get --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] onpremusercluster
Si obtienes el siguiente resultado y la actualización se aplica, el mensaje de error puede ignorarse:
cluster [CLUSTER_NAME] is READY=true