Después de crear un clúster con bmctl
, puedes actualizar los recursos personalizados de ese clúster. El archivo de configuración se almacena como bmctl-workspace/CLUSTER-NAME/CLUSTER-NAME.yaml
, a menos que hayas especificado una ubicación diferente.
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. 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 de nodos, borra su entrada:
---
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 función 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
BGPLoadBalancer
bmctl
te permite aplicar y actualizar balanceadores de cargas basados en BGP a través de la opción de paquete de LB empaquetada de Google.
apiVersion: "networking.gke.io/v1alpha1"
kind: BGPLoadBalancer
metadata:
name: default
namespace: cluster-cluster1
spec:
localASN: 65001
peers:
- peerASN: 65000
peerIP: 10.0.1.1
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