Problèmes connus de GKE

Cette page répertorie les problèmes connus liés à GKE. Cette page s'adresse aux administrateurs et aux architectes qui gèrent le cycle de vie de l'infrastructure technologique sous-jacente, et qui gèrent les alertes et les pages lorsque les objectifs de niveau de service (SLO) ne sont pas atteints ou que les applications échouent.

Cette page répertorie les problèmes connus pour toutes les versions compatibles et pour les deux versions mineures qui précèdent immédiatement la version la plus ancienne de la prise en charge étendue. Une fois qu'une version a atteint la fin de l'assistance étendue, tous les problèmes N-2 sont supprimés. Par exemple, lorsque la version 1.30 arrive à la fin de la période de compatibilité étendue, les problèmes connus spécifiques aux versions 1.28 et antérieures sont supprimés.

Si vous faites partie du Google Developer Program, enregistrez cette page pour recevoir des notifications lorsqu'une note de version la concernant est publiée. Pour en savoir plus, consultez Pages enregistrées.

Pour filtrer les problèmes connus en fonction d'une version de produit ou d'une catégorie, sélectionnez vos filtres dans les menus déroulants suivants.

Sélectionnez votre version de GKE :

Sélectionnez votre catégorie de problème :

Vous pouvez également rechercher votre problème :

Catégorie Version(s) identifiée(s) Version(s) corrigée(s) Problème et solution
Opération Versions 1.33 antérieures à 1.33.4-gke.1036000 1.33.4-gke.1036000 et versions ultérieures

Niveau de performances incorrect pour les instances Lustre provisionnées dynamiquement

Lors du provisionnement dynamique d'une instance Lustre, la création de l'instance échoue avec une erreur InvalidArgument pour PerUnitStorageThroughput, quelle que soit la valeur perUnitStorageThroughput spécifiée dans la requête API.

Solution :

Mettez à niveau le cluster GKE vers la version 1.33.4-gke.1036000 ou ultérieure. Si vous utilisez le canal stable, il est possible qu'une version plus récente ne soit pas encore disponible. Dans ce cas, vous pouvez sélectionner manuellement une version des canaux "Standard" ou "Rapide" qui inclut le correctif.

Opération
  • 1.32.3-gke.1099000 et versions ultérieures
  • 1.33
1.33.3-gke.1266000 et versions ultérieures

Erreur d'entrée/sortie lors du renommage ou du déplacement de fichiers à l'aide du pilote CSI Cloud Storage FUSE

Lorsque vous utilisez une version concernée du pilote CSI Cloud Storage FUSE, il est possible que le renommage ou le déplacement de fichiers dans des buckets Cloud Storage échoue et génère une erreur d'E/S.

Solution :

Ajoutez temporairement une définition d'image side-car spécifique à votre fichier manifeste de pod. Dans la section spec.containers du fichier manifeste de votre pod, ajoutez la définition de conteneur suivante avec l'image gcr.io/gke-release/gcs-fuse-csi-driver-sidecar-mounter:v1.8.9-gke.2.

    # Add the following block to use the fixed sidecar image
    - name: gke-gcsfuse-sidecar
      image: gcr.io/gke-release/gcs-fuse-csi-driver-sidecar-mounter:v1.8.9-gke.2
    

Pour en savoir plus, consultez le fichier manifeste du pod dans Configurer une image privée pour le conteneur side-car.

Après avoir mis à niveau votre cluster vers une version GKE corrigée ou ultérieure, vous devez supprimer l'intégralité du bloc gke-gcsfuse-sidecar de votre fichier manifeste. Une fois ce bloc supprimé, GKE reprendra l'injection et la gestion automatiques de l'image side-car appropriée pour la version mise à niveau de votre cluster.

Journalisation et surveillance Toutes les versions À déterminer

Condition de concurrence dans les DaemonSets gke-metrics-agent

Lorsque vous ajoutez le libellé cloud.google.com/gke-metrics-agent-scaling-level à un pool de nœuds pour augmenter manuellement l'allocation de mémoire du DaemonSet gke-metrics-agent, une condition de concurrence se produit dans le DaemonSet lors de la création d'un nœud. Cette condition de concurrence entraîne des redémarrages intermittents et peut entraîner une perte de métriques.

Ce problème se produit, car il y a un délai avant que le libellé ne soit ajouté à un nouveau nœud du pool de nœuds. Pendant ce délai, le DaemonSet crée un pod avec l'allocation de mémoire d'origine sur ce nœud. Une fois le libellé appliqué, le DaemonSet crée un pod avec la nouvelle allocation de mémoire. Le pod existant n'est pas complètement supprimé lorsque le pod mis à jour démarre. Ces deux pods tentent de se lier au même numéro de port.

Solution :

Après avoir ajouté le libellé cloud.google.com/gke-metrics-agent-scaling-level à un pool de nœuds, redémarrez le DaemonSet gke-metrics-agent :

kubectl -n kube-system rollout restart daemonset gke-metrics-agent
Mises à niveau 1.33 1.33.2-gke.1043000

Limite de fichiers ouverts abaissée avec containerd 2.0

Pour les pools de nœuds exécutant la version 1.33 de GKE, qui utilise containerd 2.0, la limite logicielle par défaut pour les fichiers ouverts (ulimit -n) pour les conteneurs est abaissée à 1 024.

Il s'agit d'une modification apportée à containerd lui-même (voir la demande d'extraction containerd #8924), où LimitNOFILE a été supprimé de containerd.service en tant que bonne pratique, ce qui a entraîné l'application de la limite logicielle par défaut du système.

Les charges de travail qui s'attendent à une limite logicielle par défaut plus élevée (par exemple, celles qui s'appuient implicitement sur l'ancienne limite par défaut plus élevée) peuvent rencontrer des échecs, tels que des erreurs Too many open files.

Solution :

Mettez à niveau une version de correctif 1.33 antérieure vers la version 1.33.2-gke.1043000 ou ultérieure.

Solution :

Augmentez la limite de fichiers ouverts pour vos charges de travail à l'aide de l'une des méthodes suivantes :

  • Ajustement au niveau de l'application : modifiez le code ou la configuration de l'application pour définir explicitement ulimit -n ou prlimit --nofile=524288.
  • Plug-in d'ajustement de l'ulimit NRI Containerd  : utilisez le plug-in containerd/nri ulimit-adjuster pour ajuster l'ulimit.
  • Rétrograder un pool de nœuds (Standard uniquement) : pour les clusters GKE Standard, vous pouvez temporairement rétrograder votre pool de nœuds vers la version 1.32 afin d'éviter ce problème jusqu'à ce qu'une solution permanente soit disponible.
Pour en savoir plus sur la migration vers containerd 2, consultez Migrer des nœuds vers containerd 2.
Mises à niveau 1.31.5-gke.1169000, 1.32.1-gke.1376000 1.31.7-gke.1164000, 1.32.3-gke.1512000

État CRD "storedVersions" non valide pour les CRD gérés

Il est possible que certains CRD gérés par GKE comportent un champ status.storedVersions non valide, ce qui risque de compromettre l'accès aux objets CRD après une mise à niveau.

Ce problème affecte les clusters qui remplissent les deux conditions suivantes :

  • Clusters ayant utilisé une version GKE concernée à un moment donné.
  • Clusters dont les versions (served=false) des objets CRD stockés dans etcd n'étaient pas compatibles.

Solution :

La solution de contournement recommandée consiste à retarder les mises à niveau du cluster jusqu'à ce que le problème soit résolu.

Si vous savez que votre cluster contient des versions non compatibles d'objets CRD, vous pouvez également ajouter ces versions au champ status.storedVersions à l'aide de la commande kubectl patch.

Fonctionnement, journalisation et surveillance 1.32.2-gke.1652000, 1.31.6-gke.1221000, 1.30.10-gke.1227000
  • 1.32.2-gke.1652003 ou versions ultérieures
  • 1.31.6-gke.1221001 ou version ultérieure
  • 1.30.10-gke.1227001 ou version ultérieure

Métriques manquantes ou autoscaler de charge de travail qui ne fait pas de scaling

Vous pouvez observer des écarts dans les données de métriques sur les versions concernées après que la taille du cluster a augmenté de plus de cinq nœuds. Ce problème peut également avoir un impact sur les opérations d'autoscaling.

Ce problème n'affecte que les clusters mis à niveau vers les versions concernées. Les clusters nouvellement créés devraient fonctionner comme prévu.

Solution :

Si vous êtes concerné, vous pouvez revenir à une version antérieure ou passer à une version corrigée plus récente.

Opération

Limites de taille et de pièces jointes de Google Cloud Hyperdisk

En règle générale, un pod qui ne peut pas être planifié en raison des limites de rattachement de volume d'un nœud déclenche le provisionnement automatique d'un nouveau nœud. Lorsque des charges de travail utilisant un produit Hyperdisk sont planifiées sur un nœud exécutant une VM C3, le provisionnement automatique des nœuds ne se produit pas et le pod est planifié sur le nœud déjà complet.

La charge de travail est planifiée sur le nœud malgré l'absence de disque disponible. La charge de travail ne parvient pas non plus à démarrer en raison d'une erreur semblable à la suivante :

 AttachVolume.Attach failed for volume "[VOLUME NAME]" : rpc error: code = InvalidArgument desc = Failed to Attach: failed when waiting for zonal op: rpc error: code = InvalidArgument desc = operation operation-[OPERATION NUMBERS] failed (UNSUPPORTED_OPERATION): Maximum hyperdisk-balanced disks count should be less than or equal to [16], Requested : [17]

Le problème est présent pour tous les produits Hyperdisk sur les machines C3.

Les limites d'association Hyperdisk varient en fonction du nombre de processeurs virtuels de la VM et du produit Hyperdisk. Pour en savoir plus, consultez Limites de performances Hyperdisk.

Solution :

Les produits Hyperdisk déclenchent le provisionnement automatique sur d'autres formes de VM. Nous vous recommandons de choisir une forme qui n'est compatible qu'avec Hyperdisk.

Opération 1.32.3-gke.1927000, 1.32.3-gke.1785000, 1.32.3-gke.1717000, 1.32.3-gke.1440000, 1.32.3-gke.1170000, 1.32.3-gke.1250000, 1.32.3-gke.1671000, 1.32.3-gke.1596000, 1.32.3-gke.1298000

gke-metadata-server est OOMKilled sur les nœuds TPU/GPU

Sur les nœuds TPU (par exemple, ct4p-hightpu-4t) et GPU (par exemple, a3-highgpu-8g) de GKE, le noyau peut mettre fin à gke-metadata-server avec un OOMKilled lorsque l'utilisation de la mémoire du serveur dépasse 100 Mo.

Solution :

Si vous constatez des événements OOMKilled pour gke-metadata-server sur des nœuds TPU ou GPU, contactez l'équipe GKE Identity de permanence (ID de composant : 395450) pour connaître les options d'atténuation.

Opération
  • 1.32.0-gke.1358000 à 1.32.4-gke.1106006, 1.32.4-gke.1236007, 1.32.4-gke.1353001, 1.32.4-gke.1415001, 1.32.4-gke.1533000
  • 1.33.0-gke.0 à 1.33.0-gke.1552000
  • 1.32.4-gke.1353003 et versions ultérieures
  • 1.33.0-gke.1552000 et versions ultérieures

Le redimensionnement de volumes peut être bloqué en raison de l'état "NodePendingResize" en suspens sur les PVC.

Les clusters de version 1.32 dont les nœuds sont de version 1.31 ou antérieure ne pourront pas mettre à jour l'état PersistentVolumeClaim lors du redimensionnement. Cet état incorrect empêche le démarrage des opérations de redimensionnement ultérieures, ce qui empêche effectivement tout redimensionnement supplémentaire.

Un PVC dans cet état comporte un champ status.allocatedResourceStatuses qui contient NodePendingResize ou les champs status.allocatedResources et status.conditions.type: FileSystemResizePending.

Si un PVC a été créé alors que votre cluster utilisait une version concernée, ce problème peut persister même après la mise à niveau de votre cluster vers une version corrigée connue. Dans ce scénario, votre PVC doit être corrigé pour supprimer le champ status.allocatedResources à l'aide d'une solution de contournement ponctuelle.

Solution :

Les PVC bloqués en raison d'un état en attente peuvent être corrigés pour supprimer cet état. Vous pouvez utiliser une commande patch comme celle ci-dessous pour supprimer l'état "en attente" :

kubectl patch pvc $PVC_NAME --subresource='status' --type='merge' -p '{"status":{"allocatedResourceStatuses":null}}'
kubectl patch pvc $PVC_NAME --subresource='status' --type='merge' -p '{"status":{"allocatedResources":null}}'
Opération
  • 1.32.4-gke.1236007, 1.32.4-gke.1353001
  • 1.32.4-gke.1353003 et versions ultérieures

Le pilote PDCSI peut enregistrer des journaux de manière excessive

Les clusters GKE exécutant certaines versions de 1.32 peuvent émettre un nombre excessif de messages de journaux à partir du pilote PDCSI. Cette journalisation excessive consommerait le quota de l'API Cloud Logging Write.

Solution :

Vous pouvez réduire cette journalisation excessive en ajoutant un filtre d'exclusion. Pour empêcher l'ingestion des messages de journaux dans Cloud Logging, utilisez la requête suivante :

      resource.type="k8s_container"
      resource.labels.container_name="gce-pd-driver"
      (sourceLocation.file="cache.go" OR "Cannot process volume group")
    
Opérations
  • 1.27.16-gke.2440000 et versions ultérieures
  • 1.28.15-gke.1673000 et versions ultérieures
  • 1.29.13-gke.1038000 et versions ultérieures
  • 1.30.9 et versions ultérieures
  • 1.31.7 et versions ultérieures
  • 1.32.1-gke.1357001 et versions ultérieures
  • 1.27.16-gke.2691000 et versions ultérieures
  • 1.28.15-gke.2152000 et versions ultérieures
  • 1.29.15-gke.1218000 et versions ultérieures
  • 1.30.11-gke.1190000 et versions ultérieures
  • 1.31.7-gke.1363000 et versions ultérieures
  • 1.32.4-gke.1106000 et versions ultérieures
  • 1.33.0-gke.1552000 et versions ultérieures

Les pods qui tentent d'installer des volumes persistants NFS sur des nœuds COS qui avaient auparavant un montage en lecture seule (RO) ne seront montés qu'en mode RO.

Pour GKE version 1.27 et ultérieure, les volumes NFS utilisant le pilote CSI intégré à Kubernetes ne peuvent monter des volumes persistants en mode lecture seule qu'après un montage en lecture seule précédent sur le même nœud.

Solution :

Rétrograder les pools de nœuds vers une version antérieure à celles concernées

Opérations
  • Versions 1.32 de 1.32.1-gke.1357001 à 1.32.4-gke.1106000 (non incluse)
  • Toutes les versions 1.33 antérieures à 1.33.0-gke.1552000
  • Version 1.32 : 1.32.4-gke.1106000 et versions ultérieures
  • Version 1.33 : 1.33.0-gke.1552000 et versions ultérieures

Les pods qui tentent d'installer des volumes persistants NFS sur des nœuds Ubuntu ne pourront pas s'exécuter.

Pour GKE version 1.32 et ultérieures, les volumes NFS utilisant le pilote CSI "in-tree" Kubernetes ne pourront pas installer de volumes persistants sur les nœuds Ubuntu. Dans ce cas, les messages d'erreur suivants peuvent s'afficher :

"MountVolume.SetUp failed for volume 'nfs-storage' : mount failed: exit status 1"
Output: Mount failed: mount failed: exit status 127
"Output: chroot: failed to run command 'mount': No such file or directory failed to run command mount on Ubuntu nodes"
En plus de ces messages d'erreur, les pods utilisant ces volumes ne pourront pas démarrer.

Solution :

Rétablissez une version antérieure des pools de nœuds vers la version 1.31.

Opération >= 1.28.15-gke.1436000, < 1.28.15-gke.1668000, >= 1.29.12-gke.1040000, < 1.29.13-gke.1028000, >= 1.30.8-gke.1053000, < 1.30.8-gke.1287000, >= 1.31.4-gke.1057000, < 1.31.6-gke.1020000, >= 1.32.0-gke.1281000, < 1.32.1-gke.1302000
  • 1.28.15-gke.1668000 ou versions ultérieures
  • 1.29.13-gke.1028000 ou versions ultérieures
  • 1.30.8-gke.1287000 (et versions ultérieures)
  • 1.31.6-gke.1020000 ou versions ultérieures
  • 1.32.1-gke.1302000 ou versions ultérieures

En raison d'un bug dans le noyau Linux, les pods qui utilisent des appels système liés à io_uring peuvent passer à l'état D (veille du disque), également appelé TASK_UNINTERRUPTIBLE. Les processus à l'état D ne peuvent pas être réactivés par des signaux, y compris SIGKILL.

Lorsqu'un pod est concerné par ce problème connu, ses conteneurs peuvent ne pas s'arrêter normalement. Dans les journaux containerd, vous pouvez observer des messages répétés semblables à ce qui suit : Kill container [container-id], indiquant que le système tente à plusieurs reprises d'arrêter un conteneur.
Parallèlement, les journaux kubelet affichent des messages d'erreur, tels que les suivants :

"Kill container failed" err="rpc error: code = DeadlineExceeded desc = context deadline exceeded"

ou

"Error syncing pod, skipping" err="[failed to \"KillContainer\" for \"container-name\" with KillContainerError: \"rpc error: code = DeadlineExceeded desc = an error occurs during waiting for container \\\"container-id\\\" to be killed: wait container \\\"container-id\\\": context deadline exceeded\", failed to \"KillPodSandbox\" for \"pod-uuid\" with KillPodSandboxError: \"rpc error: code = DeadlineExceeded desc = context deadline exceeded\"]" pod="pod-name" podUID="pod-uuid"

Ces symptômes indiquent que des processus du conteneur sont bloqués dans un état de veille ininterrompue (état D), ce qui empêche l'arrêt correct du pod.

Les charges de travail qui utilisent io_uring directement ou indirectement via un environnement d'exécution de langage comme NodeJS peuvent être affectées par ce problème connu. Les charges de travail concernées ont un processus à l'état D (veille du disque) dans le fichier /proc/<pid>/state et affichent la chaîne io_uring dans le contenu de /proc/<pid>/stack. Les charges de travail NodeJS peuvent désactiver l'utilisation d'io_uring via UV_USE_IO_URING=0.

Solution :

Mettez à niveau les nœuds du cluster vers une version corrigée ou ultérieure.

Opération 1.28, 1.29, 1.30, 1.31
  • 1.30.8-gke.1261000 et versions ultérieures
  • 1.31.4-gke.1183000 et versions ultérieures
  • 1.32.0-gke.1448000 et versions ultérieures

Échec des charges de travail utilisant le streaming d'images avec des erreurs d'authentification

Un bug dans la fonctionnalité de streaming d'images peut entraîner l'échec des charges de travail lorsqu'un ensemble de conditions spécifiques sont remplies pendant que le conteneur lit des fichiers. Des messages d'erreur liés à des échecs d'authentification peuvent s'afficher dans le journal gcfsd.

Pour vérifier si vous êtes concerné, recherchez dans les journaux à l'aide de la requête de recherche suivante : resource.type="k8s_node" resource.labels.project_id="[project_id]" resource.labels.cluster_name="[cluster_name]" logName="projects/[project_id]/logs/gcfsd" "backend.FileContent failed" "Request is missing required authentication credential."

La présence de ces erreurs indique que les nœuds sont concernés.

Si vous êtes concerné par ce problème, vous pouvez mettre à niveau vos pools de nœuds vers une version GKE corrigée.

Opération
  • 1.30.0 à 1.30.5-gke.1443001
  • 1.31.0 à 1.31.1-gke.1678000
  • 1.30.5-gke.1628000 et versions ultérieures
  • 1.31.1-gke.1846000 et versions ultérieures

Augmentation des taux d'éviction de pods dans les versions 1.30 et 1.31 de GKE

Certaines versions de GKE 1.30 et GKE 1.31 qui utilisent respectivement COS 113 et COS 117 disposent de noyaux créés avec l'option CONFIG_LRU_GEN_ENABLED=y. Cette option active la fonctionnalité de noyau LRU multigénération, ce qui entraîne une erreur de calcul de l'utilisation de la mémoire par le kubelet et peut entraîner l'expulsion des pods par le kubelet.

L'option de configuration CONFIG_LRU_GEN_ENABLED est désactivée dans cos-113-18244-151-96 et cos-117-18613-0-76.

Il est possible que vous ne voyiez pas toujours un taux d'éviction de pods inhabituel, car ce problème dépend du modèle d'utilisation de la mémoire de la charge de travail. Le risque que le kubelet expulse des pods est plus élevé pour les charges de travail qui n'ont pas défini de limite de mémoire dans le champ "resources". En effet, les charges de travail peuvent demander plus de mémoire que celle que le kubelet indique comme disponible.

Si vous constatez une utilisation plus élevée de la mémoire d'une application après la mise à niveau vers les versions GKE mentionnées, sans aucune autre modification, vous êtes peut-être concerné par l'option du noyau.

Pour vérifier si les taux d'éviction de pods sont inhabituels, analysez les métriques suivantes avec l'explorateur de métriques : kubernetes.io/container_memory_used_bytes et kubernetes.io/container_memory_request_bytes.

Vous pouvez utiliser les requêtes PromQL suivantes. Remplacez les valeurs de cluster_name, namespace_name, metadata_system_top_level_controller_type et metadata_system_top_level_controller_name par le nom et le type de charge de travail que vous souhaitez analyser :

max by (pod_name)(max_over_time(kubernetes_io:container_memory_used_bytes{monitored_resource="k8s_container",memory_type="non-evictable",cluster_name="REPLACE_cluster_name",namespace_name="REPLACE_namespace",metadata_system_top_level_controller_type="REPLACE_controller_type",metadata_system_top_level_controller_name="REPLACE_controller_name"}[${__interval}]))

sum by (pod_name)(avg_over_time(kubernetes_io:container_memory_request_bytes{monitored_resource="k8s_container",cluster_name="REPLACE_cluster_name",namespace_name="REPLACE_namespace",metadata_system_top_level_controller_type="REPLACE_controller_type",metadata_system_top_level_controller_name="REPLACE_controller_name"}[${__interval}]))

Si vous constatez des pics inhabituels dans l'utilisation de la mémoire qui dépassent la mémoire demandée, il est possible que la charge de travail soit expulsée plus souvent.

Solution

Si vous ne pouvez pas effectuer la mise à niveau vers les versions corrigées et que vous exécutez dans un environnement GKE où vous pouvez déployer des pods privilégiés, vous pouvez désactiver l'option LRU multigénération à l'aide d'un DaemonSet.

  1. Mettez à jour les pools de nœuds GKE à partir desquels vous souhaitez exécuter le DaemonSet avec une annotation pour désactiver l'option LRU multigénération. Par exemple, disable-mglru: "true".
  2. Mettez à jour le paramètre nodeSelector dans le fichier manifeste DaemonSet avec la même annotation que celle utilisée à l'étape précédente. Par exemple, consultez le fichier disable-mglru.yaml dans le dépôt GoogleCloudPlatform/k8s-node-tools.
  3. Déployez le DaemonSet sur votre cluster.

Une fois le DaemonSet exécuté dans tous les pools de nœuds sélectionnés, la modification prend effet immédiatement et le calcul de l'utilisation de la mémoire kubelet redevient normal.

Opération 1.28, 1.29, 1.30, 1.31
  • 1.28.14-gke.1175000 et versions ultérieures
  • 1.29.9-gke.1341000 et versions ultérieures
  • 1.30.5-gke.1355000 et versions ultérieures
  • 1.31.1-gke.1621000 et versions ultérieures

Pods bloqués à l'état "Arrêt en cours"

Un bug dans l'environnement d'exécution du conteneur (containerd) peut entraîner le blocage des pods et des conteneurs à l'état "Terminating" (En cours d'arrêt) avec des erreurs semblables à celles ci-dessous :

OCI runtime exec failed: exec failed: cannot exec in a stopped container: unknown

Si vous êtes concerné par ce problème, vous pouvez mettre à niveau vos nœuds vers une version de GKE avec une version corrigée de containerd.

Opération 1.28,1.29
  • 1.28.9-gke.1103000 et versions ultérieures
  • 1.29.4-gke.1202000 et versions ultérieures
  • 1.30 : toutes les versions

Un bug dans la fonctionnalité de streaming d'images peut empêcher le démarrage des conteneurs.

Les conteneurs exécutés sur un nœud avec le streaming d'images activé sur des versions GKE spécifiques peuvent ne pas être créés et générer l'erreur suivante :

"CreateContainer in sandbox from runtime service failed" err="rpc error: code = Unknown desc = failed to create containerd container: failed to mount [PATH]: too many levels of symbolic links"

Si vous êtes concerné par ce problème, vous pouvez rechercher des couches vides ou en double. Si vous ne parvenez pas à supprimer les couches vides ou en double, désactivez le streaming d'images.

Opération 1.27,1.28,1.29
  • 1.28.9-gke.1103000 et versions ultérieures
  • 1.29.4-gke.1202000 et versions ultérieures
  • 1.30 : toutes les versions

Échec du streaming d'images en raison de fichiers manquants

Un bug dans la fonctionnalité de streaming d'images peut entraîner l'échec des conteneurs en raison d'un ou plusieurs fichiers manquants.

Les conteneurs exécutés sur un nœud avec le streaming d'images activé sur les versions suivantes peuvent ne pas démarrer ou s'exécuter avec des erreurs indiquant que certains fichiers n'existent pas. Voici quelques exemples de ce type d'erreurs :

  • No such file or directory
  • Executable file not found in $PATH

Si vous êtes concerné par ce problème, vous pouvez désactiver le streaming d'images.

Mise en réseau,mises à niveau et mises à jour 1.28

Erreur de configuration TLS de la passerelle

Nous avons identifié un problème de configuration de TLS pour les passerelles dans les clusters exécutant la version 1.28.4-gke.1083000 de GKE. Cela affecte les configurations TLS utilisant un SSLCertificate ou un CertificateMap. Si vous mettez à niveau un cluster avec des passerelles existantes, les modifications apportées à la passerelle échoueront. Pour les nouvelles passerelles, les équilibreurs de charge ne seront pas provisionnés. Ce problème sera résolu dans une prochaine version corrective de GKE 1.28.

Mises à niveau et mises à jour 1.27 1.27.8 ou ultérieure

Problème lié au plug-in d'appareil GPU

Les clusters qui exécutent des GPU et qui sont mis à niveau de la version 1.26 vers une version de correctif 1.27 antérieure à la version 1.27.8 peuvent rencontrer des problèmes avec les plug-ins de périphérique GPU de leurs nœuds (nvidia-gpu-device-plugin). Suivez les étapes ci-dessous en fonction de l'état de votre cluster :

  • Si votre cluster exécute la version 1.26 et dispose de GPU, ne mettez pas à niveau manuellement votre cluster tant que la version 1.27.8 n'est pas disponible dans le version disponible de votre cluster.
  • Si votre cluster exécute une version de correctif 1.27 antérieure et que les nœuds sont affectés, redémarrez les nœuds ou supprimez manuellement le pod nvidia-gpu-device-plugin sur les nœuds (le gestionnaire de modules complémentaires créera un nouveau plug-in fonctionnel).
  • Si votre cluster utilise les mises à niveau automatiques, cela ne vous concerne pas, car les mises à niveau automatiques ne déplacent les clusters que vers les versions de correctif contenant la correction.
Opération 1.27,1.28
  • 1.27.5-gke.1300 et versions ultérieures
  • 1.28.1-gke.1400 et versions ultérieures

L'autoscaling de toutes les charges de travail s'arrête

Les HorizontalPodAutoscaler (AHP) et VerticalPodAutoscaler (VPA) peuvent arrêter l'autoscaling de toutes les charges de travail d'un cluster s'il contient des objets AHP autoscaling/v2 mal configurés. Ce problème affecte les clusters exécutant des versions de correctif antérieures des versions 1.27 et 1.28 de GKE (par exemple, 1.27.3-gke.100).

Solution :

Corrigez les objets AHP autoscaling/v2 mal configurés en vous assurant que les champs de spec.metrics.resource.target correspondent, par exemple :

  • Lorsque spec.metrics.resource.target.type est défini sur Utilization, la cible doit être averageUtilization.
  • Lorsque spec.metrics.resource.target.type est défini sur AverageValue, la cible doit être averageValue.

Pour en savoir plus sur la configuration des objets autoscaling/v2 AHP, consultez la documentation Kubernetes sur HorizontalPodAutoscaler.

Opération 1.28,1.29
  • 1.28.7-gke.1026000
  • 1.29.2-gke.1060000

Échec du déploiement de Container Threat Detection

Il est possible que Container Threat Detection ne parvienne pas à se déployer sur les clusters Autopilot exécutant les versions GKE suivantes :

  • 1.28.6-gke.1095000 à 1.28.7-gke.1025000
  • 1.29.1-gke.1016000 à 1.29.1-gke.1781000
Mise en réseau, mises à niveau 1.27, 1.28, 1.29, 1.30
  • 1.30.4-gke.1282000 ou version ultérieure
  • 1.29.8-gke.1157000 ou versions ultérieures
  • 1.28.13-gke.1078000 ou versions ultérieures
  • 1.27.16-gke.1342000 ou versions ultérieures

Problèmes de connectivité pour les pods hostPort après la mise à niveau du plan de contrôle

Les clusters pour lesquels la règle de réseau est activée peuvent rencontrer des problèmes de connectivité avec les pods hostPort. De plus, les pods nouvellement créés peuvent mettre 30 à 60 secondes supplémentaires à être prêts.

Le problème se produit lorsque le plan de contrôle GKE d'un cluster est mis à niveau vers l'une des versions GKE suivantes :

  • 1.30 à 1.30.4-gke.1281999
  • 1.29.1-gke.1545000 à 1.29.8-gke.1156999
  • 1.28.7-gke.1042000 à 1.28.13-gke.1077999
  • 1.27.12-gke.1107000 à 1.27.16-gke.1341999

Solution :

Mettez à niveau ou recréez les nœuds immédiatement après la mise à niveau du plan de contrôle GKE.

Mise en réseau 1.31, 1.32
  • 1.32.1-gke.1729000 ou versions ultérieures
  • 1.31.6-gke.1020000 ou versions ultérieures

Trafic UDP interrompu entre les pods s'exécutant sur le même nœud

Les clusters pour lesquels la visibilité intranœud est activée peuvent rencontrer des problèmes de trafic UDP entre les pods qui s'exécutent sur le même nœud.

Le problème se produit lorsque le nœud du cluster GKE est mis à niveau ou créé avec l'une des versions GKE suivantes :

  • 1.32.1-gke.1729000 ou versions ultérieures
  • 1.31.6-gke.1020000 ou versions ultérieures

Le chemin concerné est le trafic UDP entre pods sur le même nœud via Hostport ou Service.

Solution

Mettez à niveau le cluster vers l'une des versions corrigées suivantes :

  • 1.32.3-gke.1927000 ou versions ultérieures
  • 1.31.7-gke.1390000 ou versions ultérieures
Opération 1.29,1.30,1.31
  • 1.29.10-gke.1071000 ou versions ultérieures
  • 1.30.5-gke.1723000 (et versions ultérieures)
  • 1.31.2-gke.1115000 ou versions ultérieures

Incompatibilité entre l'opérateur Ray et le chiffrement de la base de données Cloud KMS

Certaines versions de Ray Operator ne sont pas compatibles avec le chiffrement de la base de données Cloud KMS.

Solutions :

Mettez à niveau le plan de contrôle du cluster vers une version corrigée ou ultérieure.

Mises à niveau et mises à jour 1.30, 1.31
  • 1.30.8-gke.1051000 ou versions ultérieures
  • 1.31.1-gke.2008000 et versions ultérieures

Pod du gestionnaire de maintenance GPU bloqué dans l'état CrashLoopBackOff

Dans ce cas, les pods gpu-maintenance-handler sont bloqués à l'état "CrashLoopBackOff" sur leurs nœuds respectifs. Cet état empêche l'application du libellé "Maintenance à venir" aux nœuds GKE, ce qui peut avoir un impact sur les processus de vidange des nœuds et d'éviction des pods pour les charges de travail.

"Node upcoming maintenance label not applied due to error: Node "gke-yyy-yyy" is invalid: metadata.labels: Invalid value: "-62135596800": a valid label must be an empty string or consist of alphanumeric characters, '-','' or '.', and must start and end with an alphanumeric character (e.g.'MyValue', or 'my_value', or '12345', regex used for validation is '(([A-Za-z0-9][-A-Za-z0-9.]*)?[A-Za-z0-9])?')"

Si vous êtes concerné par ce problème, vous pouvez le résoudre en mettant à niveau votre plan de contrôle vers une version GKE incluant le correctif.

Opération 1.33.1-gke.1522000 et versions ultérieures 1.33.4-gke.1142000 et versions ultérieures

Les pods ne démarrent pas sur les nœuds avec le streaming d'images activé

Sur les nœuds sur lesquels le streaming d'image est activé, les charges de travail peuvent ne pas démarrer avec la signature d'erreur suivante : Failed to create pod sandbox ... context deadline exceeded

Les journaux du port série d'un nœud concerné contiennent également la signature d'erreur suivante : task gcfsd ... blocked for more than X seconds

La présence de ces deux signatures d'erreur indique un blocage dans l'un des composants de streaming d'images. Ce blocage empêche les pods de démarrer correctement.

Atténuation :

Redémarrez le nœud pour une atténuation rapide. Notez que le nœud redémarré peut toujours rencontrer à nouveau l'impasse. Pour une atténuation plus robuste, désactivez le streaming d'images sur le pool de nœuds en exécutant la commande suivante :

gcloud container node-pools update NODE_POOL_NAME --cluster CLUSTER_NAME --no-enable-image-streaming
Remarque : La désactivation du streaming d'images recrée tous les nœuds d'un pool de nœuds.

Étapes suivantes