L'appliance Google Distributed Cloud (GDC) isolée du réseau vous permet de gérer vos clusters Kubernetes après leur création afin de vous adapter à l'évolution de vos besoins en termes de charge de travail de conteneurs.
Effectuer la maintenance des nœuds
Lorsque vous devez réparer ou gérer des nœuds, commencez par les passer en mode maintenance. Le fait de passer des nœuds en mode maintenance draine leurs pods/charges de travail de manière sécurisée et les exclut de la planification des pods. En mode maintenance, vous pouvez travailler sur vos nœuds sans risque de perturber le trafic de pod.
Fonctionnement
Le mode de maintenance pour GDC est semblable à l'exécution de kubectl
cordon
et de kubectl drain
pour un nœud spécifique. Voici quelques détails pertinents concernant le mode de maintenance :
- Les nœuds spécifiés sont marqués comme non planifiables. C'est ce que fait
kubectl cordon
. - Des rejets de nœuds sont ajoutés aux nœuds spécifiés pour indiquer qu'aucun pod ne peut être planifié ni exécuté sur les nœuds. Cette action est semblable à
kubectl drain
. - Un délai d'expiration de 20 minutes est appliqué pour garantir que les nœuds ne restent pas bloqués à attendre l'arrêt des pods. Les pods peuvent ne pas s'arrêter s'ils sont configurés pour tolérer tous les rejets ou s'ils disposent de finaliseurs. Les clusters GDC tentent d'arrêter tous les pods, mais si le délai avant expiration est dépassé, le nœud est mis en mode de maintenance. Ce délai avant expiration empêche les pods d'exécuter des mises à niveau bloquantes.
- Si une charge de travail basée sur des VM s'exécute sur le nœud, les clusters GDC appliquent un
NodeSelector
au pod de l'instance de machine virtuelle (VMI), puis arrêtent le pod. L'élémentNodeSelector
garantit que le pod VMI est redémarré sur le même nœud lorsque celui-ci est supprimé du mode de maintenance.
Placer un nœud en mode de maintenance
Choisissez les nœuds que vous souhaitez passer en mode maintenance en spécifiant des plages d'adresses IP pour les nœuds sélectionnés dans la section maintenanceBlocks
de votre fichier de configuration de cluster. Les nœuds que vous choisissez doivent être à l'état Ready
et opérationnels dans le cluster.
Pour passer des nœuds en mode maintenance, procédez comme suit :
Modifiez le fichier de configuration du cluster pour sélectionner les nœuds à passer en mode maintenance.
Vous pouvez modifier le fichier de configuration avec l'éditeur de votre choix ou modifier directement la ressource personnalisée du cluster en exécutant la commande suivante :
kubectl -n CLUSTER_NAMESPACE edit cluster CLUSTER_NAME
Remplacez les éléments suivants :
- CLUSTER_NAMESPACE : espace de noms du cluster
- CLUSTER_NAME : nom du cluster.
Ajoutez la section
maintenanceBlocks
au fichier de configuration du cluster pour spécifier une adresse IP unique ou une plage d'adresses pour les nœuds que vous souhaitez passer en mode maintenance.L'exemple suivant montre comment sélectionner plusieurs nœuds en spécifiant une plage d'adresses IP :
... metadata: name: my-cluster namespace: cluster-my-cluster spec: maintenanceBlocks: cidrBlocks: - 172.16.128.1-172.16.128.64 ...
Enregistrez et appliquez la configuration de cluster mise à jour :
kubectl apply -f my-cluster.yaml
Une fois la configuration du cluster appliquée, le cluster met les nœuds concernés en mode maintenance.
Exécutez la commande suivante pour obtenir l'état des nœuds de votre cluster :
kubectl get nodes -n CLUSTER_NAME
La réponse est semblable à ce qui suit :
NAME STATUS ROLES AGE VERSION user-gdch-01 Ready master 2d22h v1.23.5-gke.1502 user-gdch-04 Ready none 2d22h v1.23.5-gke.1502 user-gdch-05 Ready,SchedulingDisabled none 2d22h v1.23.5-gke.1502 user-gdch-06 Ready none 2d22h v1.23.5-gke.1502
L'état
SchedulingDisabled
indique qu'un nœud est en mode maintenance.Exécutez la commande suivante pour obtenir le nombre de nœuds en mode maintenance :
kubectl get nodepools
La réponse ressemble à ce qui suit :
NAME READY RECONCILING STALLED UNDERMAINTENANCE UNKNOWN np1 3 0 0 1 0
La colonne
UNDERMAINTENANCE
de cet exemple montre qu'un nœud est en mode maintenance.Les clusters ajoutent également les rejets suivants aux nœuds lorsqu'ils sont placés en mode maintenance :
baremetal.cluster.gke.io/maintenance:NoExecute
baremetal.cluster.gke.io/maintenance:NoSchedule
Redimensionner des pools de nœuds
La taille du pool de nœuds de n'importe quel cluster d'utilisateur dans l'environnement GDC peut être redimensionnée pour s'adapter aux changements de charge de travail. Pour gérer les pools de nœuds dans un cluster d'utilisateur, vous devez disposer du rôle Administrateur de cluster d'utilisateur (user-cluster-admin
).
Pour mettre à l'échelle un pool de nœuds dans un cluster existant, procédez comme suit :
Console
- Dans le tableau de bord, sélectionnez le projet dans lequel se trouve le cluster que vous souhaitez modifier.
- Dans le menu de navigation, sélectionnez Clusters.
- Sélectionnez le nom du cluster auquel le pool de nœuds est associé. La page Détails du cluster s'affiche.
- Cliquez sur l'onglet Pools de nœuds.
- Sélectionnez l'icône Modifier edit pour le pool de nœuds que vous souhaitez redimensionner. L'invite Modifier le pool de nœuds s'affiche.
Mettez à jour le champ Nombre de nœuds pour refléter le nouveau nombre de nœuds requis dans le pool de nœuds. Vous pouvez augmenter ou diminuer le nombre de nœuds en fonction des besoins de votre charge de travail.
Cliquez sur Enregistrer.
Revenez à l'onglet Pools de nœuds de votre cluster et vérifiez que le pool de nœuds redimensionné a l'état
Ready
et le bon nombre de nœuds. La mise à l'échelle du pool de nœuds selon vos spécifications peut prendre quelques minutes.
API
Ouvrez la spécification de la ressource personnalisée
Cluster
avec la CLIkubectl
à l'aide de l'éditeur interactif :kubectl edit clusters.cluster.gdc.goog/USER_CLUSTER_NAME -n platform \ --kubeconfig ORG_ADMIN_CLUSTER_KUBECONFIG
Mettez à jour le champ
nodeCount
du pool de nœuds à redimensionner :nodePools: ... - machineTypeName: n2-standard-2-gdc name: nodepool-1 nodeCount: NUMBER_OF_WORKER_NODES
Remplacez
NUMBER_OF_WORKER_NODES
par le nombre mis à jour de nœuds de calcul à provisionner dans le pool de nœuds.Enregistrez le fichier et quittez l'éditeur.
Vérifiez que la mise à l'échelle de vos nœuds est terminée en consultant la configuration du pool de nœuds :
kubectl get clusters.cluster.gdc.goog/USER_CLUSTER_NAME -n platform -o json \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG | jq .status.workerNodePoolStatuses
Vérifiez que le nombre
readyNodes
reflète le nombre de nœuds que vous avez défini pour le pool de nœuds. La mise à l'échelle du pool de nœuds selon vos spécifications peut prendre quelques minutes.
Afficher tous les clusters d'une organisation
Vous pouvez afficher tous les clusters d'utilisateur disponibles dans une organisation, y compris leur état, leur version Kubernetes et d'autres informations.
Console
Dans le menu de navigation, sélectionnez Clusters.
Tous les clusters disponibles dans l'organisation, ainsi que leur état et d'autres informations, s'affichent :
kubectl
Affichez la liste des clusters d'utilisateur disponibles dans une organisation :
kubectl get clusters.cluster.gdc.goog -n platform \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Le résultat ressemble à ce qui suit :
NAME STATE K8S VERSION user-vm-1 Running 1.25.10-gke.2100 user-test Running 1.26.5-gke.2100
Afficher les propriétés modifiables
Pour chaque cluster d'utilisateur, un ensemble de propriétés peuvent être modifiées après sa création. Vous ne pouvez modifier que les propriétés modifiables qui se trouvent dans le spec
de la ressource personnalisée Cluster
. Toutes les propriétés de spec
ne peuvent pas être mises à jour une fois le cluster provisionné. Pour afficher ces propriétés modifiables, procédez comme suit :
Console
Dans le menu de navigation, sélectionnez Clusters.
Dans la liste des clusters d'utilisateur, cliquez sur le nom d'un cluster pour afficher ses propriétés.
Les propriétés modifiables sont associées à une icône edit Modifier.
kubectl
Consultez la liste des propriétés de la spécification
Cluster
et les valeurs valides correspondant à chaque propriété :kubectl explain clusters.cluster.gdc.goog.spec \ --kubeconfig ORG_ADMIN_CLUSTER_KUBECONFIG
Le résultat ressemble à ce qui suit :
KIND: Cluster VERSION: cluster.gdc.goog/v1 RESOURCE: spec <Object> DESCRIPTION: <empty> FIELDS: clusterNetwork <Object> The cluster network configuration. If unset, the default configurations with pod and service CIDR sizes are used. Optional. Mutable. initialVersion <Object> The GDCH version information of the user cluster during cluster creation. Optional. Default to use the latest applicable version. Immutable. loadBalancer <Object> The load balancer configuration. If unset, the default configuration with the ingress service IP address size is used. Optional. Mutable. nodePools <[]Object> The list of node pools for the cluster worker nodes. Optional. Mutable. releaseChannel <Object> The release channel a cluster is subscribed to. When a cluster is subscribed to a release channel, GDCH maintains the cluster versions for users. Optional. Mutable.
Mettez à jour ces paramètres à l'aide de la console GDC ou de la CLI
kubectl
. Par exemple, vous pouvez redimensionner un pool de nœuds.
Faire évoluer la taille de l'adresse IP du service d'entrée
Vous pouvez ajuster la taille de l'adresse IP de votre service d'entrée après avoir créé un cluster d'utilisateur.
Ouvrez la spécification de la ressource personnalisée
Cluster
avec la CLIkubectl
à l'aide de l'éditeur interactif :kubectl edit clusters.cluster.gdc.goog/USER_CLUSTER_NAME -n platform \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Remplacez la valeur du champ
ingressServiceIPSize
par la nouvelle taille de l'adresse IP :... spec: ... loadBalancer: ingressServiceIPSize: INGRESS_SERVICE_IP_SIZE ...
Remplacez
INGRESS_SERVICE_IP_SIZE
par la taille de l'adresse IP du service d'entrée mise à jour.Enregistrez le fichier et quittez l'éditeur.
Il n'existe aucune limite définie concernant la taille de l'adresse IP du service d'entrée. Le nombre d'adresses IP que vous demandez est fourni en fonction de votre organisation. Si la requête ne peut pas être traitée, le cluster signale une erreur.