Después de crear un clúster con bmctl
, puedes actualizar los recursos personalizados de ese clúster. Por ejemplo, puedes agregar o quitar nodos en un grupo de nodos. El archivo de configuración se almacena como bmctl-workspace/CLUSTER-NAME/CLUSTER-NAME.yaml
, a menos que hayas especificado una ubicación diferente.
En este documento, se muestra qué opciones de configuración del clúster se pueden actualizar después de crear un clúster, como agregar o quitar nodos.
Agrega o quita nodos en un clúster
En los clústeres de Anthos en equipos físicos, puedes agregar o quitar nodos en un clúster si editas las definiciones de su grupo de nodos. Usas la dirección IP de los nodos para agregarlos o quitarlos de un grupo de nodos. Puedes usar el comando bmctl
para cambiar estas definiciones.
Existen tres tipos diferentes de grupos de nodos en clústeres de Anthos en equipos físicos: plano de control, balanceador de cargas y grupos de nodos trabajadores.
Visualiza el estado del nodo
Puedes ver el estado de los nodos y sus respectivos grupos de nodos con el comando kubectl get
.
Por ejemplo, el siguiente comando muestra el estado de los grupos de nodos en el espacio de nombres del clúster my-cluster
:
kubectl -n my-cluster get nodepools.baremetal.cluster.gke.io
El sistema muestra resultados similares al siguiente:
NAME READY RECONCILING STALLED UNDERMAINTENANCE UNKNOWN
my-cluster 3 0 0 0 0
my-cluster-lb 2 0 0 0 0
np1 3 0 0 0 0
Si necesitas más información sobre el diagnóstico de tus clústeres, consulta Crea instantáneas para diagnosticar clústeres.
Cambia nodos
La mayoría de los cambios en los nodos se especifican en el archivo de configuración del clúster, que luego se aplica al clúster. Te recomendamos usar el archivo de configuración del clúster como la fuente principal de actualización del clúster. Se recomienda almacenar el archivo de configuración en un sistema de control de versiones para realizar un seguimiento de los cambios con el fin de solucionar problemas. Para todos los tipos de clústeres, usa el comando bmctl update
a fin de actualizar el clúster con los cambios en el nodo.
Los clústeres de Anthos en el archivo de configuración de clúster de equipos físicos incluyen una sección de encabezado con información de credenciales. Las entradas de credenciales y el resto del archivo de configuración son YAML válidos, pero las entradas de credenciales no son válidas para el recurso del clúster. Usa bmctl update credentials
para actualizar las credenciales.
Cuando quitas nodos de un clúster, primero se desvían los pods. Los nodos no se quitarán del clúster si no se pueden reprogramar los Pods en otros nodos. El comando bmctl update
analizará el archivo de configuración del clúster y aplicará recursos personalizados en función del resultado analizado.
A continuación, se muestra una configuración de ejemplo con dos nodos:
---
apiVersion: baremetal.cluster.gke.io/v1
kind: NodePool
metadata:
name: nodepool1
namespace: cluster-cluster1
spec:
clusterName: cluster1
nodes:
- address: 172.18.0.5
- address: 172.18.0.6
Para quitar un nodo del grupo, borra su entrada de dirección IP:
---
apiVersion: baremetal.cluster.gke.io/v1
kind: NodePool
metadata:
name: nodepool1
namespace: cluster-cluster1
spec:
clusterName: cluster1
nodes:
- address: 172.18.0.5
A fin de actualizar el clúster, ejecuta el siguiente comando para los clústeres autoadministrados, como los clústeres independientes y de administrador:
bmctl update cluster -c CLUSTER_NAME \
--kubeconfig=KUBECONFIG
Una vez que el comando bmctl update
se ejecute de forma correcta, los pods machine-init
o machine-reset
tardarán un tiempo en completarse.
En las siguientes secciones, se describen algunas diferencias importantes para actualizar tipos de nodos específicos.
Plano de control y nodos del balanceador de cargas
Las especificaciones del plano de control y el grupo de nodos del balanceador de cargas para los clústeres de Anthos en equipos físicos son especiales. Estas especificaciones declaran y controlan los recursos críticos del clúster. La fuente canónica de estos recursos es sus respectivas secciones en el archivo de configuración del clúster:
spec.controlPlane.nodePoolSpec
spec.LoadBalancer.nodePoolSpec
Puedes agregar o quitar nodos del plano de control o del balanceador de cargas si editas el array de direcciones en nodes
en la sección correspondiente del archivo de configuración del clúster.
En una configuración de alta disponibilidad (HA), se requiere un número impar de grupos de nodos del plano de control (tres o más) para establecer un quórum a fin de garantizar que, si falla un plano de control, otros asuman el trabajo. Si tienes una cantidad par de nodos de manera temporal al momento de agregar o quitar nodos para el mantenimiento o el reemplazo, tu implementación mantiene la alta disponibilidad siempre y cuando tengas suficiente quórum.
Nodos trabajadores
Puedes agregar o quitar nodos trabajadores directamente con el comando de bmctl
. Los grupos de nodos trabajadores deben tener, al menos, un nodo deseado. Sin embargo, si deseas quitar todo el grupo de nodos, usa el comando kubectl
. En el siguiente ejemplo, el comando borra un grupo de nodos llamado np1
, en el que la variable del espacio de nombres del clúster es my-cluster
:
kubectl -n my-cluster delete nodepool np1
Otros campos mutables
Además de agregar y quitar nodos, también puedes usar el comando bmctl update
para modificar ciertos elementos de la configuración del clúster. Por lo general, para actualizar el recurso de clúster, debes editar la versión local del archivo de configuración del clúster y usar bmctl update
a fin de aplicar los cambios. El comando bmctl update
es similar al comando kubectl apply
.
En las siguientes secciones, se describen algunos ejemplos comunes para actualizar un clúster existente. Para ello, cambia un valor de campo o modifica un recurso personalizado relacionado.
loadBalancer.addressPools
La sección addressPools
contiene campos a fin de especificar grupos de balanceo de cargas para balanceadores de cargas en paquetes. Puedes agregar más grupos de direcciones de balanceo de cargas en cualquier momento, pero no puedes quitar ni modificar ningún grupo de direcciones existente.
addressPools:
- name: pool1
addresses:
- 192.168.1.0-192.168.1.4
- 192.168.1.240/28
- name: pool2
addresses:
- 192.168.1.224/28
bypassPreflightCheck
El valor predeterminado del campo bypassPreflightCheck
es false
. Si estableces este campo en true
en el archivo de configuración del clúster, se ignoran las comprobaciones preliminares internas si aplicas recursos a los clústeres existentes.
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: cluster1
namespace: cluster-cluster1
annotations:
baremetal.cluster.gke.io/private-mode: "true"
spec:
bypassPreflightCheck: true
loginUser
Puedes establecer el campo loginUser
en la configuración de acceso al nodo. Este campo admite la capacidad sudo
sin contraseña para el acceso a la máquina.
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: cluster1
namespace: cluster-cluster1
annotations:
baremetal.cluster.gke.io/private-mode: "true"
spec:
nodeAccess:
loginUser: abm
NetworkGatewayGroup
El recurso personalizado NetworkGatewayGroup
se usa para proporcionar direcciones IP flotantes para funciones avanzadas de redes, como la puerta de enlace NAT de salida o el balanceo de cargas en paquetes con BGP.
Para usar el recurso personalizado NetworkGatewayGroup
y las funciones de red relacionadas, debes configurar clusterNetwork.advancedNetworking
como true
cuando crees los clústeres.
apiVersion: networking.gke.io/v1
kind: NetworkGatewayGroup
name: default
namespace: cluster-bm
spec:
floatingIPs:
- 10.0.1.100
- 10.0.2.100
BGPLoadBalancer
Cuando configuras balanceadores de cargas en paquetes con BGP, el balanceo de cargas del plano de datos usa de forma predeterminada los mismos pares externos que se especificaron para el intercambio de tráfico del plano de control. Como alternativa, puedes configurar el balanceo de cargas del plano de datos por separado mediante el recurso personalizado BGPLoadBalancer
(y el recurso personalizado BGPPeer
). Para obtener más información, consulta Configura balanceadores de cargas en paquetes con BGP.
apiVersion: networking.gke.io/v1
kind: BGPLoadBalancer
metadata:
name: default
namespace: cluster-bm
spec:
peerSelector:
cluster.baremetal.gke.io/default-peer: "true"
BGPPeer
Cuando configuras balanceadores de cargas en paquetes con BGP, el balanceo de cargas del plano de datos usa de forma predeterminada los mismos pares externos que se especificaron para el intercambio de tráfico del plano de control. Como alternativa, puedes configurar el balanceo de cargas del plano de datos por separado mediante el recurso personalizado BGPPeer
(y el recurso personalizado BGPLoadBalancer
). Para obtener más información, consulta Configura balanceadores de cargas en paquetes con BGP.
apiVersion: networking.gke.io/v1
kind: BGPPeer
metadata:
name: bgppeer1
namespace: cluster-bm
labels:
cluster.baremetal.gke.io/default-peer: "true"
spec:
localASN: 65001
peerASN: 65002
peerIP: 10.0.3.254
sessions: 2
NetworkAttachmentDefinition
Puedes usar el comando bmctl update
para modificar los recursos personalizados NetworkAttachmentDefinition
que corresponden a la red.
apiVersion: "k8s.cni.cncf.io/v1"
kind: NetworkAttachmentDefinition
metadata:
name: gke-network-1
namespace: cluster-my-cluster
spec:
config: '{
"type": "ipvlan",
"master": "enp2342",
"mode": "l2",
"ipam": {
"type": "whereabouts",
"range": "172.120.0.0/24"
Después de modificar el archivo de configuración, puedes actualizar el clúster mediante la ejecución del comando bmctl update
. Analizará el archivo de configuración del clúster y aplicará recursos personalizados en función del resultado analizado.
Para los clústeres de administración automática, como los clústeres independientes y de administrador, ejecuta lo siguiente:
bmctl update cluster -c CLUSTER_NAME --kubeconfig=KUBECONFIG
Para los clústeres de usuario, ejecuta el siguiente comando:
bmctl update cluster -c CLUSTER_NAME --admin-kubeconfig=ADMIN_KUBECONFIG