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:
Abre el archivo hostconfig del clúster de usuario para editarlo.
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.
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
ygateway
.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:
Verifica el estado del MachineDeployment del clúster para ver si hay eventos o mensajes de error:
kubectl describe machinedeployments [MACHINE_DEPLOYMENT_NAME]
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 archivologs/gkectl-$(date).log
en el directorio local en el que ejecutasgkectl
. -
Para
gkeadm
, el archivo de registro predeterminado eslogs/gkeadm-$(date).log
en el directorio local en el que ejecutasgkeadm
.
-
Para
- Todas las entradas de registro se guardan en el archivo de registro, incluso si no se imprimen en la terminal (cuando
--alsologtostderr
esfalse
). - 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:
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
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 ejecutasgkectl 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
kubectl get --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] onpremusercluster
cluster [CLUSTER_NAME] is READY=true