Après avoir créé un cluster avec bmctl
, vous pouvez mettre à jour les ressources personnalisées de ce cluster. Le fichier de configuration est stocké sous le nom bmctl-workspace/CLUSTER-NAME/CLUSTER-NAME.yaml
, sauf si vous avez spécifié un autre emplacement.
Ajouter ou supprimer des nœuds dans un cluster
Dans un cluster Anthos sur Bare Metal, vous ajoutez ou supprimez des nœuds en modifiant les définitions de pool de nœuds du cluster. Vous pouvez modifier ces définitions à l'aide de la commande bmctl
.
Dans les clusters Anthos sur Bare Metal, il existe trois types de pools de nœuds : plan de contrôle, équilibreur de charge et pools de nœuds de calcul.
Afficher l'état des nœuds
Vous pouvez afficher l'état des nœuds et de leurs pools de nœuds respectifs à l'aide de la commande kubectl get
.
Par exemple, la commande suivante affiche l'état des pools de nœuds dans l'espace de noms du cluster my-cluster
:
kubectl -n my-cluster get nodepools.baremetal.cluster.gke.io
Le système renvoie des résultats semblables à ceux-ci :
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 vous avez besoin d'informations supplémentaires sur le diagnostic de vos clusters, consultez la section Créer des instantanés pour le diagnostic des clusters.
Modifier les nœuds
La plupart des modifications de nœuds sont spécifiées dans le fichier de configuration du cluster, lequel est ensuite appliqué au cluster. Nous vous recommandons d'utiliser le fichier de configuration du cluster comme source principale pour mettre à jour le cluster. Il est recommandé de stocker votre fichier de configuration dans un système de contrôle des versions pour pouvoir suivre les modifications à des fins de dépannage. Pour tous les types de clusters, exécutez la commande bmctl update
pour mettre à jour votre cluster et appliquer les modifications de nœuds.
Le fichier de configuration des clusters Anthos sur Bare Metal comprend une section d'en-tête avec des informations d'identification. Les entrées d'identifiants et le reste du fichier de configuration respectent la syntaxe YAML, mais les entrées d'identifiants ne sont pas valides pour la ressource de cluster. Utilisez bmctl update credentials
pour les mises à jour des identifiants.
Lorsque vous supprimez des nœuds d'un cluster, ceux-ci sont d'abord drainés de tous leurs pods. Les nœuds ne seront pas supprimés du cluster si les pods ne peuvent pas être reprogrammés sur d'autres nœuds. La commande bmctl update
analysera le fichier de configuration du cluster et appliquera des ressources personnalisées en fonction du résultat analysé.
Voici un exemple de configuration avec deux nœuds :
---
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
Vous pouvez supprimer un nœud du pool de nœuds en supprimant son entrée :
---
apiVersion: baremetal.cluster.gke.io/v1
kind: NodePool
metadata:
name: nodepool1
namespace: cluster-cluster1
spec:
clusterName: cluster1
nodes:
- address: 172.18.0.5
Pour mettre à jour le cluster, exécutez la commande suivante pour les clusters autogérés, tels que les clusters d'administrateur et les clusters autonomes :
bmctl update cluster -c CLUSTER_NAME \
--kubeconfig=KUBECONFIG
Une fois la commande bmctl update
exécutée, les pods machine-init
ou machine-reset
peuvent prendre un certain temps à terminer.
Les sections suivantes décrivent certaines différences importantes pour la mise à jour de types de nœuds spécifiques.
Nœuds de plan de contrôle et d'équilibreur de charge
Les spécifications concernant les pools de nœuds de plan de contrôle et d'équilibreur de charge pour les clusters Anthos sur Bare Metal sont particulières. Ces spécifications déclarent et contrôlent les ressources critiques du cluster. La source canonique de ces ressources correspond à leurs sections respectives dans le fichier de configuration du cluster :
spec.controlPlane.nodePoolSpec
spec.LoadBalancer.nodePoolSpec
Vous pouvez ajouter ou supprimer des nœuds de plan de contrôle ou d'équilibreur de charge en modifiant le tableau d'adresses sous nodes
dans la section correspondante du fichier de configuration du cluster.
Dans une configuration à haute disponibilité, un nombre impair de pools de nœuds du plan de contrôle (au moins trois) est requis pour établir un quorum afin d'être sûr que si un plan de contrôle échoue, d'autres prennent le relais. Si vous disposez temporairement d'un nombre pair de nœuds pendant l'ajout ou la suppression de nœuds à des fins de maintenance ou de remplacement, votre déploiement maintient une haute disponibilité tant que vous avez assez de quorum.
Nœuds de calcul
Vous pouvez ajouter ou supprimer des nœuds de calcul directement à l'aide de la commande bmctl
. Les pools de nœuds de calcul doivent comporter au moins un nœud souhaité. Toutefois, si vous souhaitez supprimer l'ensemble du pool de nœuds, exécutez la commande kubectl
. Dans l'exemple suivant, la commande supprime un pool de nœuds nommé np1
, où la variable représentant l'espace de noms du cluster est my-cluster
:
kubectl -n my-cluster delete nodepool np1
Autres champs modifiables
Outre l'ajout et la suppression de nœuds, vous pouvez également utiliser la commande bmctl update
pour modifier certains éléments de votre configuration de cluster. En règle générale, pour mettre à jour votre ressource de cluster, vous devez modifier la version locale du fichier de configuration du cluster et utiliser bmctl update
afin d'appliquer les modifications. La commande bmctl update
est semblable à la commande kubectl apply
.
Les sections suivantes décrivent quelques exemples courants de mise à jour d'un cluster existant en modifiant la valeur d'un champ ou en modifiant une ressource personnalisée associée.
loadBalancer.addressPools
La section addressPools
contient des champs permettant de spécifier des pools d'équilibrage de charge pour des équilibreurs de charge groupés. Vous pouvez ajouter d'autres pools d'adresses d'équilibrage de charge à tout moment, mais vous ne pouvez pas supprimer ni modifier les pools d'adresses existants.
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
La valeur par défaut du champ bypassPreflightCheck
est false
. Si vous définissez ce champ sur true
dans le fichier de configuration du cluster, les vérifications internes préliminaires sont ignorées en appliquant les ressources aux clusters existants.
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
Vous pouvez définir le champ loginUser
sous la configuration de l'accès aux nœuds. Ce champ est compatible avec la fonctionnalité sudo
sans mot de passe pour la connexion à la machine.
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
La ressource personnalisée NetworkGatewayGroup
permet de fournir des adresses IP flottantes pour les fonctionnalités de mise en réseau avancées, telles que la passerelle NAT de sortie ou l'équilibrage de charge groupé avec BGP.
Pour utiliser la ressource personnalisée NetworkGatewayGroup
et les fonctionnalités de mise en réseau associées, vous devez définir clusterNetwork.advancedNetworking
sur true
lorsque vous créez vos clusters.
apiVersion: networking.gke.io/v1
kind: NetworkGatewayGroup
name: default
namespace: cluster-bm
spec:
floatingIPs:
- 10.0.1.100
- 10.0.2.100
BGPLoadBalancer
Lorsque vous configurez des équilibreurs de charge groupés avec BGP, l'équilibrage de charge du plan de données utilise par défaut les mêmes pairs externes que ceux spécifiés pour l'appairage de plans de contrôle. Vous pouvez également configurer l'équilibrage de charge du plan de données séparément, en utilisant la ressource personnalisée BGPLoadBalancer
(et la ressource personnalisée BGPPeer
). Pour en savoir plus, consultez la section Configurer des équilibreurs de charge groupés avec BGP.
apiVersion: networking.gke.io/v1
kind: BGPLoadBalancer
metadata:
name: default
namespace: cluster-bm
spec:
peerSelector:
cluster.baremetal.gke.io/default-peer: "true"
BGPPeer
Lorsque vous configurez des équilibreurs de charge groupés avec BGP, l'équilibrage de charge du plan de données utilise par défaut les mêmes pairs externes que ceux spécifiés pour l'appairage de plans de contrôle. Vous pouvez également configurer l'équilibrage de charge du plan de données séparément, en utilisant la ressource personnalisée BGPPeer
(et la ressource personnalisée BGPLoadBalancer
). Pour en savoir plus, consultez la section Configurer des équilibreurs de charge groupés avec 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
Vous pouvez utiliser la commande bmctl update
pour modifier les ressources personnalisées NetworkAttachmentDefinition
correspondant au réseau.
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"
Après avoir modifié le fichier de configuration, vous pouvez mettre à jour le cluster en exécutant la commande bmctl update
. Le service analyse le fichier de configuration du cluster et applique les ressources personnalisées en fonction du résultat de l'analyse.
Pour les clusters autogérés, tels que les clusters d'administrateur et autonomes, exécutez la commande suivante :
bmctl update cluster -c CLUSTER_NAME --kubeconfig=KUBECONFIG
Pour les clusters d'utilisateur, exécutez la commande suivante :
bmctl update cluster -c CLUSTER_NAME --admin-kubeconfig=ADMIN_KUBECONFIG