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.
Puedes cambiar el tamaño de un clúster de usuario si cambias los campos replicas
de la configuración de MachineDeployment del clúster. Puedes aplicar un parche a la configuración desde la línea de comandos mediante kubectl patch
.
Para obtener información sobre los límites máximos y mínimos de los clústeres de usuario, consulta Cuotas y límites.
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 direcciones IP estáticas, verifica que hayas asignado suficientes direcciones IP en el clúster:
kubectl get cluster --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] \ -n [USER_CLUSTER_NAME] [USER_CLUSTER_NAME] -o yaml
En el ejemplo anterior, se ilustra lo siguiente:
- [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.
En el resultado del comando, busca el campo reservedAddresses
. Debe haber más direcciones IP en el campo que nodos en ejecución en el clúster de usuario.
Si necesitas agregar más direcciones al campo reservedAddresses
, sigue estos pasos:
Abre el recurso del clúster de usuario para editarlo:
kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] edit cluster [USER_CLUSTER_NAME] \ -n [USER_CLUSTER_NAME]
La configuración del clúster se abre en el editor predeterminado de tu shell.
Agrega tantos bloques de IP estáticas adicionales como sea necesario. Un bloque de IP se compone de los campos
gateway
,hostname
,ip
ynetmask
.
A continuación, se muestra un campo reservedAddresses
de ejemplo con sus cuatro bloques de IP estáticas resaltados:
... networkSpec: dns: - 172.x.x.x ntp: 129.x.x.x reservedAddresses: - gateway: 100.x.x.x hostname: host-1 ip: 100.x.x.x netmask: x - gateway: 100.x.x.x hostname: host-2 ip: 100.x.x.x netmask: x - gateway: 100.x.x.x hostname: host-3 ip: 100.x.x.x netmask: x - gateway: 100.x.x.x hostname: host-4 ip: 100.x.x.x netmask: x ...
Antes de comenzar
Exporta una variable de entorno KUBECONFIG
que apunte al kubeconfig del clúster de usuario al que le deseas cambiar el tamaño:
export KUBECONFIG=[USER_CLUSTER_KUBECONFIG]
Cambia el tamaño de un clúster de usuario
Puedes cambiar el tamaño de un clúster si editas el recurso MachineDeployment del clúster de usuario. Para buscar el nombre del recurso MachineDeployment del clúster de usuario, ejecuta el siguiente comando:
kubectl get machinedeployments
Este recurso incluye el nombre del clúster de usuario.
Para cambiar el tamaño del clúster de usuario, debes aplicar un parche a la configuración del MachineDeployment del clúster. Debes cambiar el valor del campo replicas
de la configuración, que indica cuántos nodos debe ejecutar el clúster:
kubectl patch machinedeployment [MACHINE_DEPLOYMENT_NAME] -p "{\"spec\": {\"replicas\": [INT] }}" --type=merge
En el ejemplo anterior, [INT] es la cantidad de nodos que quieres que ejecute el clúster de usuario.
Verifica el cambio de tamaño
Para verificar que el cambio de tamaño se haya realizado de forma correcta, ejecuta lo siguiente:
kubectl get nodes kubectl describe machinedeployments [MACHINE_DEPLOYMENT_NAME] | grep Replicas
La cantidad de nodos que elegiste debe reflejarse en los resultados de estos comandos.
Solución de 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.
Se crearon nodos nuevos, pero no en buen estado
- Síntomas
Los nodos nuevos no se registran en el plano de control del clúster de usuario cuando usan el modo de balanceo de cargas manual.
- Causas posibles
Es posible que la validación de Ingress en nodos esté habilitada y que bloquee el proceso de inicio de los nodos.
- Solución
Para inhabilitar la validación, ejecuta este comando:
kubectl patch machinedeployment [MACHINE_DEPLOYMENT_NAME] -p '{"spec":{"template":{"spec":{"providerSpec":{"value":{"machineVariables":{"net_validation_ports": null}}}}}}}' --type=merge
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 donde 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