A partir de la versión 1.3 de GKE On-Prem, puedes crear un grupo de nodos en el clúster de usuario en el que todos los nodos tengan la misma configuración mediante la definición de un grupo de nodos en el archivo de configuración de ese clúster. Luego, puedes administrar ese grupo de nodos por separado sin afectar a los otros nodos del clúster. Más información sobre los grupos de nodos
Se pueden definir uno o más grupos de nodos en el archivo de configuración de cualquier clúster de usuario. Mediante la creación de un grupo de nodos, se crean nodos adicionales en el clúster de usuarios.
La administración de grupos de nodos, incluidas la creación, la actualización y la eliminación de grupos de nodos en un clúster de usuarios, se realiza mediante la modificación de la sección nodePools de tu archivo de configuración y la implementación de esos cambios en tu clúster existente a través del comando gkectl update cluster
. Ten en cuenta que borrar grupos de nodos provocará la eliminación inmediata de los nodos relacionados, sin importar si alguno de ellos ejecuta una carga de trabajo.
Ejemplo de grupo de nodos:
nodePools:
- name: pool-1
cpus: 4
memoryMB: 8192
replicas: 5
Sugerencia para instalaciones nuevas: Crea el primer clúster de usuario y define los grupos de nodos en ese clúster. Luego, usa el archivo de configuración de ese clúster para crear clústeres de usuario adicionales con la misma configuración de grupos de nodos.
Antes de comenzar
Asistencia:
Solo se admiten la versión 1.3.0 del clúster del usuario o versiones posteriores.
Los grupos de nodos en los clústeres de administrador no son compatibles.
En este momento, el comando de gkectl update cluster tiene compatibilidad total para actualizar grupos de nodos y agregar IP estáticas. También permite habilitar el registro de auditoría en la nube y habilitar o inhabilitar la reparación automática. Se ignoran todos los demás cambios que haya en el archivo de configuración.
Si bien los nodos en un grupo de nodos se pueden administrar de forma independiente de los demás nodos, los nodos de cualquier clúster no se pueden actualizar por separado. Todos los nodos se actualizan cuando actualizas los clústeres.
Recursos:
Solo puedes implementar cambios en el grupo de nodos
replicas
sin interrupciones en la carga de trabajo de un nodo.Importante: Si implementas cualquier otro cambio de configuración del grupo de nodos, se recrean los nodos del grupo. Debes asegurarte de que ese grupo de nodos no ejecute una carga de trabajo que no deba interrumpirse.
Cuando implementas tus cambios en el grupo de nodos, los nodos no deseados se borran después de que se crean o actualizan los nodos deseados. Una implicación de esta política es que, incluso si la cantidad total de nodos permanece igual antes y después de una actualización, es posible que se requieran más recursos (por ejemplo, direcciones IP) durante la actualización. Debes verificar que haya suficientes direcciones IP disponibles para el aumento en el uso.
Crea y actualiza grupos de nodos
Administra un grupo de nodos mediante la modificación y la implementación del archivo de configuración del clúster de usuario. Puedes crear e implementar uno o más grupos de nodos en un clúster de usuario.
Para crear o actualizar grupos de nodos, debes hacer lo siguiente:
En un editor, abre el archivo de configuración del clúster de usuario en el que deseas crear o actualizar los grupos de nodos.
Define uno o más grupos de nodos en la sección nodePools del archivo de configuración del clúster de usuario:
Configura los atributos mínimos necesarios del grupo de nodos. Debes especificar los siguientes atributos para cada grupo de nodos:
nodePools.name
: Especifica un nombre único para el grupo de nodos. La actualización de este atributo vuelve a crear el nodo. Ejemplo:- name: pool-1
nodePools.cpus
: Especifica cuántas CPU se asignan a cada nodo trabajador en el grupo. La actualización de este atributo vuelve a crear el nodo. Ejemplo:cpus: 4
nodePools.memoryMB
: Especifica la cantidad de memoria, en megabytes, que se asigna a cada nodo trabajador del clúster de usuario. La actualización de este atributo vuelve a crear el nodo. Ejemplo:memoryMB: 8192
nodePools.replicas
: Especifica la cantidad total de nodos trabajadores en el grupo. El clúster de usuario usa nodos en todos los grupos para ejecutar cargas de trabajo. Puedes actualizar este atributo sin afectar los nodos ni las cargas de trabajo en ejecución. Ejemplo:replicas: 5
Ten en cuenta que, aunque algunos de los atributos
nodePools
son los mismos que losworkernode
(DHCP | IP estática) en el archivo de configuración anterior, aún se requiere la secciónworkernode
en los archivos de configuración anteriores de cada clúster de usuario. No puedes quitar la secciónworkernode
ni reemplazarla pornodepools
. En el archivo de configuración del clúster de usuario nuevo, ya no hay una secciónworkernode
. Debes definir al menos un grupo de nodos para un clúster de usuario y asegurarte de que haya suficientes nodos sin taint para reemplazar el grupo predeterminadoworkernode
en los archivos de configuración anteriores.Ejemplo:
nodePools: - name: pool-1 cpus: 4 memoryMB: 8192 replicas: 5
Consulta Ejemplos para obtener un archivo de configuración del clúster de usuario de ejemplo con varios grupos de nodos.
Configura los atributos opcionales del grupo de nodos. Puedes agregar etiquetas y taints a la configuración del grupo de nodos para dirigir las cargas de trabajo de los nodos. En este archivo, puedes especificar qué Datastore de vSphere usa el grupo de nodos.
nodePools.labels
: Especifica uno o más pareskey : value
para identificar de forma única los grupos de nodos.key
yvalue
deben comenzar con una letra o un número, y pueden contener letras, números, guiones, puntos y guiones bajos, hasta 63 caracteres cada uno.Para obtener información detallada sobre la configuración, consulta etiquetas.
Importante: No puedes especificar las siguientes claves en una etiqueta porque están reservadas para que las use GKE On-Prem:
kubernetes.io
,k8s.io
ygoogleapis.com
.Ejemplo:
labels: key1: value1 key2: value2
nodePools.taints
: Especificakey
,value
yeffect
que definentaints
para los grupos de nodos. Estostaints
se corresponden con lastolerations
que configuras para los pods.La
key
es obligatoria y elvalue
es opcional. Ambos deben comenzar con una letra o un número, y pueden contener letras, números, guiones, puntos y guiones bajos y hasta 253 caracteres. De manera opcional, puedes insertar un prefijo en lakey
con un subdominio DNS seguido de un/
. Por ejemplo:example.com/my-app
.Los valores
effect
válidos sonNoSchedule
,PreferNoSchedule
oNoExecute
.Para obtener información detallada sobre la configuración, consulta taints.
Ejemplo:
taints: - key: key1 value: value1 effect: NoSchedule
nodePools.bootDiskSizeGB
: Especifica el tamaño del disco de arranque, en gigabytes, que se asigna a cada nodo trabajador en el grupo. Esta configuración está disponible a partir de la versión 1.5.0 de GKE On-PremEjemplo:
bootDiskSizeGB: 40
nodePools.vsphere.datastore
: especifica el Datastore de vSphere en el que se creará cada nodo del grupo. Esto anula el Datastore de vSphere predeterminado del clúster de usuario.Ejemplo:
vsphere: datastore: datastore_name
Consulta Ejemplos para ver un ejemplo de configuración con varios grupos de nodos.
Usa el comando
gkectl update cluster
para implementar los cambios en el clúster de usuario.gkectl update cluster --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] --config [USER_CLUSTER_CONFIG_FILE] --dry-run --yes
donde:- [ADMIN_CLUSTER_KUBECONFIG]: Especifica el archivo
kubeconfig
del clúster de administrador. - [USER_CLUSTER_CONFIG_FILE]: Especifica el archivo
configuration
del clúster de usuario. --dry-run
: Una marca opcional. Agrega esta marca para ver solo el cambio. No se implementaron cambios en el clúster de usuario.--yes
: Una marca opcional. Agrega esta marca para ejecutar el comando de forma silenciosa. El mensaje para verificar que deseas continuar está inhabilitado.
Si anulaste el comando antes de tiempo, puedes volver a ejecutar el mismo comando para completar la operación e implementar los cambios en el clúster de usuario.
Si necesitas revertir los cambios, debes hacerlo en el archivo de configuración y, luego, volver a implementar esos cambios en el clúster de usuario.
- [ADMIN_CLUSTER_KUBECONFIG]: Especifica el archivo
Verifica que los cambios se ejecuten de forma correcta. Para ello, inspecciona todos los nodos. Ejecuta el siguiente comando para enumerar todos los nodos del clúster de usuario:
kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] get nodes -o wide
En el ejemplo anterior, [USER_CLUSTER_KUBECONFIG] es el archivo
kubeconfig
del clúster de usuario.
Borra un grupo de nodos
Para borrar un grupo de nodos de un clúster de usuario, haz lo siguiente:
Quita su definición de la sección nodePools del archivo de configuración del clúster de usuario.
Asegúrate de que no haya cargas de trabajo en ejecución en los nodos afectados.
Implementa los cambios mediante la ejecución del comando
gkectl update cluster
:gkectl update cluster --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] --config [USER_CLUSTER_CONFIG_FILE] --dry-run --yes
donde:- [ADMIN_CLUSTER_KUBECONFIG]: Especifica el archivo
kubeconfig
del clúster de administrador. - [USER_CLUSTER_CONFIG_FILE]: Especifica el archivo
configuration
del clúster de usuario. --dry-run
: Una marca opcional. Agrega esta marca para ver solo el cambio. No se implementaron cambios en el clúster de usuario.--yes
: Una marca opcional. Agrega esta marca para ejecutar el comando de forma silenciosa. El mensaje para verificar que deseas continuar está inhabilitado.
- [ADMIN_CLUSTER_KUBECONFIG]: Especifica el archivo
Verifica que los cambios se ejecuten de forma correcta. Para ello, inspecciona todos los nodos. Ejecuta el siguiente comando para enumerar todos los nodos del clúster de usuario:
kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] get nodes -o wide
En el ejemplo anterior, [USER_CLUSTER_KUBECONFIG] es el archivo
kubeconfig
del clúster de usuario.
Examples
En la siguiente configuración de ejemplo, hay cuatro grupos de nodos, cada uno con atributos diferentes:
pool-1
: Solo se especifican los atributos mínimos obligatorios.pool-2
: Incluye el Datastore de vSphere.pool-3
: Incluye bootDiskSizeGB.pool-4
: Incluye taints y etiquetas.pool-5
: Incluye todos los atributos.
apiVersion: v1
kind: UserCluster
...
# (Required) List of node pools. The total un-tainted replicas across all node pools
# must be greater than or equal to 3
nodePools:
- name: pool-1
cpus: 4
memoryMB: 8192
replicas: 5
- name: pool-2
cpus: 8
memoryMB: 16384
replicas: 3
vsphere:
datastore: my_datastore
- name: pool-3
cpus: 8
memoryMB: 8192
replicas: 3
bootDiskSizeGB: 40
- name: pool-4
cpus: 4
memoryMB: 8192
replicas: 5
taints:
- key: "example-key"
effect: NoSchedule
labels:
environment: production
app: nginx
- name: pool-5
cpus: 8
memoryMB: 16384
replicas: 3
taints:
- key: "my_key"
value: my_value1
effect: NoExecute
labels:
environment: test
vsphere:
datastore: my_datastore
bootDiskSizeGB: 60
...
Solución de problemas
En general, el comando
gkectl update cluster
proporciona información específica cuando falla. Si el comando se ejecutó de forma correcta y no ves los nodos, puedes solucionar el problema con la guía Diagnostica problemas de clústeres.Es posible que haya recursos de clúster insuficientes, como la falta de direcciones IP disponibles durante la creación o actualización del grupo de nodos. Consulta el tema Cambia el tamaño de un clúster de usuario para obtener detalles sobre cómo verificar que las direcciones IP estén disponibles.
También puedes consultar la guía general de Solución de problemas.
No pasará de
Creating node MachineDeployment(s) in user cluster…
.La creación o la actualización de los grupos de nodos en el clúster de usuario puede tomar un tiempo. Sin embargo, si el tiempo de espera es demasiado largo y sospechas que algo falló, puedes ejecutar los siguientes comandos:
- Ejecuta
kubectl get nodes
para obtener el estado de los nodos. - Si deseas obtener un nodo que no esté listo, ejecuta
kubectl describe node [node_name]
para obtener más detalles.
- Ejecuta