Gérer les clusters Kubernetes

Google Distributed Cloud (GDC) air-gapped vous permet de gérer vos clusters Kubernetes après leur création à l'aide de GKE sur GDC. Ce service vous permet de vous adapter aux exigences évolutives de vos charges de travail de conteneurs.

Avant de commencer

Pour afficher et gérer les pools de nœuds dans un cluster Kubernetes, vous devez disposer des rôles suivants :

  • Administrateur de cluster d'utilisateur (user-cluster-admin)
  • Lecteur de nœuds de cluster d'utilisateur (user-cluster-node-viewer)

Ces rôles ne sont pas liés à un espace de noms.

Pour exécuter des commandes sur un cluster Kubernetes, assurez-vous de disposer des ressources suivantes :

  1. Recherchez le nom du cluster Kubernetes ou demandez-le à votre administrateur de plate-forme.

  2. Connectez-vous et générez le fichier kubeconfig pour le cluster Kubernetes si vous n'en avez pas.

  3. Utilisez le chemin d'accès kubeconfig du cluster Kubernetes pour remplacer KUBERNETES_CLUSTER_KUBECONFIG dans ces instructions.

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 et 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ément NodeSelector 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 :

  1. 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 edit cluster KUBERNETES_CLUSTER_NAME \
        -n KUBERNETES_CLUSTER_NAMESPACE \
        --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG
    

    Remplacez les éléments suivants pour le cluster Kubernetes :

    • KUBERNETES_CLUSTER_NAME : nom du cluster.
    • KUBERNETES_CLUSTER_NAMESPACE : espace de noms du cluster
    • KUBERNETES_CLUSTER_KUBECONFIG : chemin d'accès au fichier kubeconfig.

    Une fois la configuration du cluster appliquée, le cluster met les nœuds concernés en mode maintenance.

  2. 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
    ...
    
  3. Obtenez l'état des nœuds de votre cluster :

    kubectl get nodes -n KUBERNETES_CLUSTER_NAME \
        --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG
    

    La réponse est semblable à ce qui suit :

    NAME                STATUS                     ROLES    AGE     VERSION
    user-gdc-01        Ready                      master   2d22h   v1.23.5-gke.1502
    user-gdc-04        Ready                      none     2d22h   v1.23.5-gke.1502
    user-gdc-05        Ready,SchedulingDisabled   none     2d22h   v1.23.5-gke.1502
    user-gdc-06        Ready                      none     2d22h   v1.23.5-gke.1502
    

    L'état SchedulingDisabled indique qu'un nœud est en mode maintenance.

  4. Obtenez le nombre de nœuds en mode maintenance :

    kubectl get nodepools --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG
    

    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 KUBERNETES 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 Kubernetes, vous devez disposer du rôle Administrateur de cluster utilisateur (user-cluster-admin). Ce rôle n'est pas lié à un espace de noms.

Pour mettre à l'échelle un pool de nœuds dans un cluster existant, procédez comme suit :

Console

  1. Dans le tableau de bord, sélectionnez le projet dans lequel se trouve le cluster que vous souhaitez modifier.
  2. Dans le menu de navigation, sélectionnez Kubernetes Engine > Clusters.
  3. Sélectionnez le nom du cluster auquel le pool de nœuds est associé. La page Détails du cluster s'affiche.
  4. Cliquez sur l'onglet Pools de nœuds.
  5. Sélectionnez l'icône Modifier  pour le pool de nœuds que vous souhaitez redimensionner. L'invite Modifier le pool de nœuds s'affiche.
  6. 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.

  7. Cliquez sur Enregistrer.

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

    Vérifiez que votre pool de nœuds est prêt à l'aide de la console.

API

  1. Ouvrez la spécification de la ressource personnalisée Cluster avec la CLI kubectl à l'aide de l'éditeur interactif :

    kubectl edit clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME -n platform \
          --kubeconfig MANAGEMENT_API_SERVER
    

    Remplacez les éléments suivants :

    • KUBERNETES_CLUSTER_NAME : nom du cluster qui héberge le pool de nœuds.
    • MANAGEMENT_API_SERVER : chemin d'accès kubeconfig du serveur d'API zonal où le cluster Kubernetes est hébergé. Si vous n'avez pas encore généré de fichier kubeconfig pour le serveur d'API dans votre zone cible, consultez Se connecter pour en savoir plus.
  2. 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.

  3. Enregistrez le fichier et quittez l'éditeur.

  4. 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/KUBERNETES_CLUSTER_NAME -n platform -o json \
        --kubeconfig MANAGEMENT_API_SERVER | 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.

Déplacer des clusters dans la hiérarchie de projet

Les projets permettent de regrouper logiquement les instances de service. Vous pouvez ajouter et supprimer des clusters Kubernetes dans la hiérarchie des projets GDC pour regrouper vos services de manière appropriée.

Associer un projet à un cluster

Lorsque vous créez un cluster à partir de la console GDC, vous devez associer au moins un projet avant de pouvoir y déployer des charges de travail de conteneur. Si vous devez ajouter des projets à un cluster existant, procédez comme suit :

  1. Dans le menu de navigation, sélectionnez Kubernetes Engine > Clusters.
  2. Cliquez sur le cluster dans la liste des clusters pour ouvrir la page Détails du cluster.
  3. Sélectionnez Associer un projet.
  4. Sélectionnez les projets disponibles à ajouter dans la liste des projets. Cliquez sur Enregistrer.

Dissocier un projet d'un cluster

Pour dissocier un projet d'un cluster Kubernetes existant, procédez comme suit :

  1. Dans le menu de navigation, sélectionnez Kubernetes Engine > Clusters.
  2. Cliquez sur le cluster dans la liste des clusters pour ouvrir la page Détails du cluster.
  3. Cliquez sur Détacher pour détacher le projet du cluster.

Afficher tous les clusters d'une organisation

Vous pouvez afficher tous les clusters Kubernetes disponibles dans une organisation, y compris leur état, leur version Kubernetes et d'autres informations. Étant donné que les clusters Kubernetes sont des ressources zonales, vous ne pouvez lister les clusters que par zone.

Console

  • Dans le menu de navigation, sélectionnez Kubernetes Engine > Clusters.

    Tous les clusters disponibles dans l'organisation, ainsi que leur état et d'autres informations, s'affichent :

    Page d'informations sur les clusters, qui indique l'état et d'autres informations pour chaque cluster Kubernetes de l'organisation.

kubectl

  • Listez les clusters Kubernetes disponibles dans une organisation pour une zone donnée :

    kubectl get clusters.cluster.gdc.goog -n platform \
        --kubeconfig MANAGEMENT_API_SERVER
    

    Remplacez MANAGEMENT_API_SERVER par le chemin d'accès kubeconfig du serveur d'API zonal. Si vous n'avez pas encore généré de fichier kubeconfig pour le serveur d'API dans la zone cible, consultez Se connecter pour en savoir plus.

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

  1. Dans le menu de navigation, sélectionnez Kubernetes Engine > Clusters.

  2. Dans la liste des clusters Kubernetes, cliquez sur le nom d'un cluster pour afficher ses propriétés.

  3. Les propriétés modifiables sont associées à une icône 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 MANAGEMENT_API_SERVER
    

    Remplacez MANAGEMENT_API_SERVER par le chemin d'accès kubeconfig du serveur d'API zonal. Si vous n'avez pas encore généré de fichier kubeconfig pour le serveur d'API dans la zone cible, consultez Se connecter pour en savoir plus.

    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 GDC air-gapped 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, GDC 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 Kubernetes.

  1. Ouvrez la spécification de la ressource personnalisée Cluster avec la CLI kubectl à l'aide de l'éditeur interactif :

    kubectl edit clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME -n platform \
        --kubeconfig MANAGEMENT_API_SERVER
    

    Remplacez les éléments suivants :

    • KUBERNETES_CLUSTER_NAME : nom du cluster qui fournit l'adresse IP.
    • MANAGEMENT_API_SERVER : chemin d'accès kubeconfig du serveur d'API zonal où le cluster Kubernetes est hébergé. Si vous n'avez pas encore généré de fichier kubeconfig pour le serveur d'API dans votre zone cible, consultez Se connecter pour en savoir plus.
  2. 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.

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

Mettre à niveau un cluster Kubernetes

Vous pouvez mettre à niveau votre cluster Kubernetes de manière automatique ou manuelle. Pour obtenir plus d'instructions sur la mise à niveau de votre cluster, consultez la section Mise à niveau du cluster.