Mettre à jour les clusters

Après avoir créé un cluster avec bmctl, vous pouvez mettre à jour les ressources personnalisées de ce cluster. Par exemple, vous pouvez ajouter ou supprimer des nœuds dans un pool de nœuds. Le fichier de configuration est stocké sous bmctl-workspace/CLUSTER-NAME/CLUSTER-NAME.yaml, sauf si vous avez spécifié un autre emplacement.

Ce document présente les options de configuration de cluster pouvant être mises à jour après la création d'un cluster, telles que l'ajout ou la suppression de nœuds.

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 utilisez l'adresse IP des nœuds pour les ajouter ou les supprimer d'un pool de nœuds. 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 d'adresse IP:

---
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