GKE の既知の問題

このページでは、GKE の既知の問題について説明します。このページは、基盤となる技術インフラストラクチャのライフサイクルを管理し、サービスレベル目標(SLO)が達成されていない場合やアプリケーションで障害が発生した場合にアラートやページに対応する管理者、アーキテクトを対象としています。

このページでは、サポートされているすべてのバージョンと、延長サポートの最も古いバージョンの直前の 2 つのマイナー バージョンの既知の問題について説明します。バージョンが拡張サポートの終了を迎えると、N-2 の問題はすべて削除されます。たとえば、バージョン 1.30 の拡張サポートが終了すると、バージョン 1.28 以前に固有の既知の問題は削除されます。

Google Developer Program に参加している場合は、このページを保存して、このページに関連するリリースノートが公開されたときに通知を受け取るようにしてください。詳細については、保存したページをご覧ください。

既知の問題をプロダクト バージョンまたはカテゴリでフィルタするには、次のプルダウン メニューからフィルタを選択します。

GKE バージョンを選択します。

問題のカテゴリを選択:

または、問題を検索します。

カテゴリ 該当するバージョン 解決済みのバージョン 問題と回避策
オペレーション 1.33.4-gke.1036000 より前の 1.33 バージョン 1.33.4-gke.1036000 以降

動的にプロビジョニングされた Lustre インスタンスのパフォーマンス ティアが正しくない

Lustre インスタンスを動的にプロビジョニングすると、API リクエストで指定された perUnitStorageThroughput 値に関係なく、PerUnitStorageThroughput の InvalidArgument エラーでインスタンスの作成が失敗します。

回避策:

GKE クラスタをバージョン 1.33.4-gke.1036000 以降にアップグレードします。安定版チャンネルを使用している場合、新しいバージョンがまだ利用できない可能性があります。この場合は、修正を含む Regular チャンネルまたは Rapid チャンネルのバージョンを手動で選択できます。

オペレーション
  • 1.32.3-gke.1099000 以降
  • 1.33
1.33.3-gke.1266000 以降

Cloud Storage FUSE CSI ドライバを使用してファイルの名前変更または移動を行う際に入出力エラーが発生する

影響を受けるバージョンの Cloud Storage FUSE CSI ドライバを使用している場合、Cloud Storage バケット内のファイルの名前変更または移動が I/O エラーで失敗することがあります。

回避策:

特定のサイドカー イメージ定義を Pod マニフェストに一時的に追加します。Pod マニフェストの spec.containers セクションに、イメージ 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
    

詳細については、サイドカー コンテナのプライベート イメージを構成するの Pod マニフェストをご覧ください。

クラスタを修正済みの GKE バージョン以降にアップグレードしたら、マニフェストから gke-gcsfuse-sidecar ブロック全体を削除する必要があります。このブロックを削除すると、GKE はアップグレードされたクラスタ バージョンの正しいサイドカー イメージの自動挿入と管理を再開します。

ロギングとモニタリング すべてのバージョン 未定

gke-metrics-agent DaemonSet の競合状態

cloud.google.com/gke-metrics-agent-scaling-level ラベルをノードプールに追加して gke-metrics-agent DaemonSet のメモリ割り当てを手動で増やすと、新しいノードの作成中に DaemonSet で競合状態が発生します。この競合状態により、再起動が断続的に発生し、指標が失われる可能性があります。

この問題は、ラベルがノードプールの新しいノードに追加されるまでに遅延が発生するために発生します。この遅延中に、DaemonSet はそのノードに元のメモリ割り当てで Pod を作成します。ラベルが適用されると、DaemonSet は新しいメモリ割り当てを持つ Pod を作成します。更新された Pod が起動しても、既存の Pod は完全に削除されません。これらの Pod はどちらも同じポート番号にバインドしようとします。

回避策:

ノードプールに cloud.google.com/gke-metrics-agent-scaling-level ラベルを追加したら、gke-metrics-agent DaemonSet を再起動します。

kubectl -n kube-system rollout restart daemonset gke-metrics-agent
アップグレード 1.33 1.33.2-gke.1043000

containerd 2.0 で開いているファイルの制限が引き下げられた

containerd 2.0 を使用する GKE バージョン 1.33 を実行するノードプールの場合、コンテナのオープン ファイル(ulimit -n)のデフォルトのソフト上限が 1,024 に引き下げられます。

これは containerd 自体の変更(containerd PR #8924 を参照)で、ベスト プラクティスとして LimitNOFILEcontainerd.service から削除され、デフォルトのシステム ソフト上限が適用されるようになりました。

デフォルトのソフト上限が高いことを想定しているワークロード(以前のデフォルトが高いことを暗黙的に前提としているワークロードなど)では、Too many open files エラーなどの障害が発生する可能性があります。

解決策:

以前の 1.33 パッチ バージョンから 1.33.2-gke.1043000 以降にアップグレードします。

回避策:

次のいずれかの方法で、ワークロードのオープン ファイルの上限を引き上げます。

containerd 2 への移行の詳細については、ノードを containerd 2 に移行するをご覧ください。
アップグレード 1.31.5-gke.1169000、1.32.1-gke.1376000 1.31.7-gke.1164000、1.32.3-gke.1512000

マネージド CRD の CRD ステータス storedVersions が無効

一部の GKE 管理の CRD に無効な status.storedVersions フィールドが含まれている場合があり、アップグレード後に CRD オブジェクトへのアクセスが中断される可能性があります。

この問題は、次の両方に該当するクラスタに影響します。

  • 影響を受ける GKE バージョンを過去に使用したクラスタ。
  • etcd にサポートされていない(served=false)バージョンの CRD オブジェクトが保存されているクラスタ。

回避策:

推奨される回避策は、問題が解決するまでクラスタのアップグレードを遅らせることです。

また、クラスタにサポートされていないバージョンの CRD オブジェクトが含まれていることがわかっている場合は、kubectl patch コマンドを使用して、これらのバージョンを status.storedVersions フィールドに追加できます。

運用、ロギング、モニタリング 1.32.2-gke.1652000、1.31.6-gke.1221000、1.30.10-gke.1227000
  • 1.32.2-gke.1652003 以降
  • 1.31.6-gke.1221001 以降
  • 1.30.10-gke.1227001 以降

指標が見つからない、またはワークロード オートスケーラーがスケーリングしない

クラスタサイズが 5 つ以上のノードで増加すると、影響を受けるバージョンで指標データにギャップが生じることがあります。この問題は、自動スケーリング オペレーションにも影響する可能性があります。

この問題は、影響を受けるバージョンにアップグレードされたクラスタにのみ影響します。新しく作成されたクラスタは想定どおりに動作します。

回避策:

影響を受ける場合は、1 つのパッチ バージョンをダウングレードするか、新しい修正済みバージョンにアップグレードできます。

オペレーション

Google Cloud Hyperdisk のサイズとアタッチメントの上限

通常、ノードのボリューム アタッチメントの上限が原因でスケジュールできない Pod は、新しいノードの自動プロビジョニングをトリガーします。Hyperdisk プロダクトを使用するワークロードが C3 VM を実行するノードにスケジュールされると、ノードの自動プロビジョニングは行われず、Pod はすでに満杯のノードにスケジュールされます。

使用可能なディスク アタッチメントがないにもかかわらず、ワークロードがノードにスケジュールされます。ワークロードも、次のようなエラーで起動に失敗します。

 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]

この問題は、C3 マシンのすべての Hyperdisk プロダクトで発生します。

Hyperdisk のアタッチメントの上限は、VM の vCPU 数と Hyperdisk プロダクトによって異なります。詳細については、Hyperdisk のパフォーマンスの上限をご覧ください。

回避策:

Hyperdisk プロダクトは、他の VM シェイプで自動プロビジョニングをトリガーします。Hyperdisk のみをサポートするシェイプをおすすめします。

オペレーション 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

TPU/GPU ノードで gke-metadata-server が OOMKilled される

GKE TPU ノード(ct4p-hightpu-4t など)と GPU ノード(a3-highgpu-8g など)では、サーバーのメモリ使用量が 100 MB を超えると、カーネルが OOMKilledgke-metadata-server を終了する可能性があります。

回避策:

TPU ノードまたは GPU ノードで gke-metadata-serverOOMKilled イベントが発生した場合は、GKE Identity オンコール チーム(コンポーネント ID: 395450)に連絡して、緩和策についてお問い合わせください。

オペレーション
  • 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 以降
  • 1.33.0-gke.1552000 以降

PVC の NodePendingResize ステータスが残っているため、ボリュームのサイズ変更が停止することがあります。

バージョン 1.31 以前のノードがあるバージョン 1.32 のクラスタでは、サイズ変更中に PersistentVolumeClaim ステータスの更新が失敗します。このステータスが正しくないため、後続のサイズ変更オペレーションが開始されず、サイズ変更が効果的に防止されます。

この状態の PVC には、NodePendingResize フィールド、または status.allocatedResources フィールドと status.conditions.type: FileSystemResizePending の両方を含む status.allocatedResourceStatuses フィールドがあります。

クラスタが影響を受けるバージョンで PVC が作成された場合、クラスタを既知の修正バージョンにアップグレードした後も、この問題が解決しないことがあります。このシナリオでは、PVC をパッチ適用して、1 回限りの回避策で status.allocatedResources フィールドを削除する必要があります。

回避策:

ステータスがぶら下がっているために PVC がスタックしている場合は、そのステータスを削除するようにパッチを適用できます。次のようなパッチ コマンドを使用して、dangling ステータスを削除できます。

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}}'
オペレーション
  • 1.32.4-gke.1236007、1.32.4-gke.1353001
  • 1.32.4-gke.1353003 以降

PDCSI ドライバが過剰にロギングする可能性がある

1.32 の特定のバージョンの GKE クラスタでは、PDCSI ドライバから過剰なログメッセージが出力されることがあります。この過剰なロギングは、Cloud Logging Write API の割り当てを消費します。

回避策:

この過剰なロギングを減らすには、除外フィルタを追加します。ログメッセージが Cloud Logging に取り込まれないようにするには、次のクエリを使用します。

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

以前に読み取り専用(RO)マウントがあった COS ノードに NFS 永続ボリュームをマウントしようとする Pod は、RO モードでのみマウントされます

GKE バージョン 1.27 以降では、Kubernetes in-tree CSI ドライバを使用する NFS ボリュームは、同じノードで以前に RO マウントを行った後にのみ、RO モードで永続ボリュームをマウントできます。

回避策:

影響を受けるバージョンより前のバージョンにノードプールをダウングレードします。

運用
  • 1.32.1-gke.1357001 から 1.32.4-gke.1106000 より前までの 1.32 バージョン
  • 1.33.0-gke.1552000 より前の 1.33 のすべてのバージョン
  • 1.32 リリース: 1.32.4-gke.1106000 以降
  • 1.33 リリース: 1.33.0-gke.1552000 以降

Ubuntu ノードで NFS 永続ボリュームをマウントしようとする Pod は実行できません。

GKE バージョン 1.32 以降では、Kubernetes in-tree CSI ドライバを使用する NFS ボリュームは、Ubuntu ノードに永続ボリュームをマウントできません。この場合、次のエラー メッセージが表示されることがあります。

"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"
これらのエラー メッセージが表示されるだけでなく、これらのボリュームを使用する Pod が起動しなくなります。

回避策:

ノードプールをダウングレードしてバージョン 1.31 にします。

オペレーション >= 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 以降
  • 1.29.13-gke.1028000 以降
  • 1.30.8-gke.1287000 以降
  • 1.31.6-gke.1020000 以降
  • 1.32.1-gke.1302000 以降

Linux カーネルのバグにより、io_uring 関連の syscall を使用する Pod が D(ディスク スリープ)状態(TASK_UNINTERRUPTIBLE とも呼ばれます)になることがあります。D 状態のプロセスは、SIGKILL などのシグナルでウェイクアップできません。

この既知の問題の影響を受ける Pod では、コンテナが正常に終了しないことがあります。containerd ログに、次のようなメッセージが繰り返し表示されることがあります。Kill container [container-id] は、システムがコンテナの停止を繰り返し試行していることを示します。
同時に、kubelet ログに次のようなエラー メッセージが表示されます。

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

または

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

これらの症状は、コンテナ内のプロセスが割り込み不可スリープ(D 状態)で停止し、Pod の適切な終了を妨げていることを示しています。

io_uring を直接使用するワークロード、または NodeJS などの言語ランタイムを介して io_uring を間接的に使用するワークロードは、この既知の問題の影響を受ける可能性があります。影響を受けるワークロードでは、/proc/<pid>/state ファイルに D(ディスク スリープ)状態のプロセスがあり、/proc/<pid>/stack の内容の一部として io_uring 文字列が表示されます。NodeJS ワークロードは、UV_USE_IO_URING=0 を使用して io_uring の使用を無効にできる場合があります。

回避策:

クラスタノードを修正バージョン以降にアップグレードします。

オペレーション 1.28、1.29、1.30、1.31
  • 1.30.8-gke.1261000 以降
  • 1.31.4-gke.1183000 以降
  • 1.32.0-gke.1448000 以降

イメージ ストリーミングを使用するワークロードが認証エラーで失敗する

イメージ ストリーミング機能のバグにより、コンテナがファイルを読み取っているときに特定の条件が満たされると、ワークロードが失敗することがあります。認証エラーに関連するエラー メッセージが gcfsd ログに表示されることがあります。

影響を受けているかどうかを確認するには、次の検索クエリでログを検索します。 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."

これらのエラーが存在する場合は、ノードが影響を受けていることを示します。

この問題の影響を受けている場合は、パッチが適用された GKE バージョンに ノードプールをアップグレードできます。

オペレーション
  • 1.30.0 ~ 1.30.5-gke.1443001
  • 1.31.0 ~ 1.31.1-gke.1678000
  • 1.30.5-gke.1628000 以降
  • 1.31.1-gke.1846000 以降

GKE バージョン 1.30 と 1.31 で Pod のエビクション率が増加した

COS 113 と COS 117 をそれぞれ使用する GKE 1.30 と GKE 1.31 の一部のバージョンには、オプション CONFIG_LRU_GEN_ENABLED=y でビルドされたカーネルがあります。このオプションを有効にすると、カーネル機能 Multi-Gen LRU が有効になります。これにより、kubelet がメモリ使用量を誤って計算し、kubelet が Pod を削除する可能性があります。

構成オプション CONFIG_LRU_GEN_ENABLED は、cos-113-18244-151-96cos-117-18613-0-76 で無効になっています。

この問題はワークロードのメモリ使用パターンに依存するため、異常な Pod の削除率が常に表示されるとは限りません。resources フィールドでメモリ上限を設定していないワークロードの場合、kubelet が Pod を強制排除するリスクが高くなります。これは、ワークロードが kubelet が使用可能と報告したメモリよりも多くのメモリをリクエストする可能性があるためです。

他の変更を行わずに上記の GKE バージョンにアップグレードした後、アプリケーションのメモリ使用量が増加した場合は、カーネル オプションの影響を受けている可能性があります。

異常な Pod の強制排除率があるかどうかを確認するには、Metrics Explorer で次の指標を分析します。kubernetes.io/container_memory_used_byteskubernetes.io/container_memory_request_bytes

次の PromQL クエリを使用できます。cluster_namenamespace_namemetadata_system_top_level_controller_typemetadata_system_top_level_controller_name の値を、分析するワークロードの名前とタイプに置き換えます。

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}]))

メモリ使用量がリクエストされたメモリを超えて異常に急増している場合は、ワークロードが頻繁に強制排除されている可能性があります。

回避策

修正バージョンにアップグレードできない場合、特権 Pod をデプロイできる GKE 環境で実行している場合は、DaemonSet を使用して Multi-Gen LRU オプションを無効にできます。

  1. Multi-Gen LRU オプションを無効にするアノテーションを使用して、DaemonSet を実行する GKE ノードプールを更新します。例: disable-mglru: "true"
  2. 前の手順で使用したアノテーションを使用して、DaemonSet マニフェストの nodeSelector パラメータを更新します。たとえば、GoogleCloudPlatform/k8s-node-tools リポジトリの disable-mglru.yaml ファイルをご覧ください。
  3. DaemonSet をクラスタにデプロイします。

選択したすべてのノードプールで DaemonSet が実行されると、変更は直ちに有効になり、kubelet のメモリ使用量の計算が正常に戻ります。

オペレーション 1.28、1.29、1.30、1.31
  • 1.28.14-gke.1175000 以降
  • 1.29.9-gke.1341000 以降
  • 1.30.5-gke.1355000 以降
  • 1.31.1-gke.1621000 以降

Pod が Terminating ステータスで停止する

コンテナ ランタイム(containerd)のバグにより、Pod とコンテナが Terminating 状態のままになり、次のようなエラーが発生する可能性があります。

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

この問題の影響を受ける場合は、containerd の修正バージョンを含む GKE バージョンに ノードをアップグレードできます。

オペレーション 1.28、1.29
  • 1.28.9-gke.1103000 以降
  • 1.29.4-gke.1202000 以降
  • 1.30: すべてのバージョン

イメージ ストリーミング機能のバグにより、コンテナが起動しないことがあります。

特定の GKE バージョンでイメージ ストリーミングが有効になっているノードで実行されているコンテナが、次のエラーで作成に失敗することがあります。

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

この問題の影響を受ける場合は、 空のレイヤまたは重複するレイヤを確認できます。空のレイヤまたは重複するレイヤを削除できない場合は、イメージ ストリーミングを無効にします

オペレーション 1.27、1.28、1.29
  • 1.28.9-gke.1103000 以降
  • 1.29.4-gke.1202000 以降
  • 1.30: すべてのバージョン

ファイルが欠落しているため、イメージ ストリーミングが失敗する

イメージ ストリーミング機能のバグにより、ファイルが欠落しているためにコンテナが失敗することがあります。

次のバージョンでイメージ ストリーミングが有効になっているノードで実行されているコンテナは、起動に失敗したり、特定のファイルが存在しないことを示すエラーで実行されたりする可能性があります。このようなエラーの例を次に示します。

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

この問題の影響を受ける場合は、イメージ ストリーミングを無効にすることができます。

ネットワーキング、アップグレード、更新 1.28

Gateway TLS 構成エラー

GKE バージョン 1.28.4-gke.1083000 を実行しているクラスタの Gateway で TLS を構成する際に問題が確認されています。これは、SSLCertificate または CertificateMap のいずれかを使用する TLS 構成に影響します。既存の Gateway を使用してクラスタをアップグレードすると、Gateway に対する更新は失敗します。新しい Gateway の場合、ロードバランサはプロビジョニングされません。この問題は、今後の GKE 1.28 パッチ バージョンで修正される予定です。

アップグレードと更新 1.27 1.27.8 以降

GPU デバイス プラグインの問題

GPU を実行していて、1.26 から 1.27.8 より前の 1.27 パッチ バージョンにアップグレードされたクラスタでは、ノードの GPU デバイス プラグイン(nvidia-gpu-device-plugin)で問題が発生する可能性があります。クラスタの状態に応じて、次の手順を行います。

  • クラスタがバージョン 1.26 を実行していて GPU がある場合は、クラスタのリリース チャンネルでバージョン 1.27.8 が利用可能になるまで、クラスタを手動でアップグレードしないでください。
  • クラスタで以前の 1.27 パッチ バージョンが実行されていて、ノードが影響を受けている場合は、ノードを再起動するか、ノードの nvidia-gpu-device-plugin Pod を手動で削除します(アドオン マネージャーが新しい動作中のプラグインを作成します)。
  • クラスタで自動アップグレードを使用している場合、自動アップグレードでは修正を含むパッチ バージョンにのみクラスタが移行されるため、この問題の影響はありません。
オペレーション 1.27、1.28
  • 1.27.5-gke.1300 以降
  • 1.28.1-gke.1400 以降

すべてのワークロードの自動スケーリングが停止する

HorizontalPodAutoscaler(HPA)と VerticalPodAutoscaler(VPA)には、構成が誤った autoscaling/v2 HPA オブジェクトが含まれている場合、クラスタ内のすべてのワークロードの自動スケーリングが停止する可能性があります。この問題は、GKE バージョン 1.27 と 1.28 の以前のパッチ バージョン(1.27.3-gke.100 など)を実行しているクラスタに影響します。

回避策:

spec.metrics.resource.target のフィールドが一致するようにして、誤って構成された autoscaling/v2 HPA オブジェクトを修正します。例:

  • spec.metrics.resource.target.typeUtilization の場合、ターゲットは averageUtilization になります。
  • spec.metrics.resource.target.typeAverageValue の場合、ターゲットは averageValue になります。

autoscaling/v2 HPA オブジェクトの構成方法の詳細については、HorizontalPodAutoscaler Kubernetes ドキュメントをご覧ください。

オペレーション 1.28、1.29
  • 1.28.7-gke.1026000
  • 1.29.2-gke.1060000

Container Threat Detection のデプロイが失敗する

次の GKE バージョンを実行している Autopilot クラスタでは、Container Threat Detection のデプロイが失敗する可能性があります。

  • 1.28.6-gke.1095000 ~ 1.28.7-gke.1025000
  • 1.29.1-gke.1016000 ~ 1.29.1-gke.1781000
ネットワーキング、アップグレード 1.27、1.28、1.29、1.30
  • 1.30.4-gke.1282000 以降
  • 1.29.8-gke.1157000 以降
  • 1.28.13-gke.1078000 以降
  • 1.27.16-gke.1342000 以降

コントロール プレーンのアップグレード後の hostPort Pod の接続性の問題

ネットワーク ポリシーが有効になっているクラスタでは、hostPort Pod で接続性の問題が発生する可能性があります。また、新しく作成された Pod の準備が完了するまでに 30~60 秒ほどかかることがあります。

この問題は、クラスタの GKE コントロール プレーンが次のいずれかの GKE バージョンにアップグレードされると発生します。

  • 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

回避策:

GKE コントロール プレーンのアップグレード直後にノードをアップグレードまたは再作成します。

ネットワーキング 1.31、1.32
  • 1.32.1-gke.1729000 以降
  • 1.31.6-gke.1020000 以降

同じノードで実行されている Pod 間の UDP トラフィックが中断される

ノード内の可視化が有効になっているクラスタでは、同じノードで実行されている Pod 間の UDP トラフィックが中断されることがあります。

この問題は、GKE クラスタノードが次のいずれかの GKE バージョンにアップグレードされた場合、または次のいずれかの GKE バージョンで作成された場合に発生します。

  • 1.32.1-gke.1729000 以降
  • 1.31.6-gke.1020000 以降

影響を受けるパスは、Hostport または Service を介した同じノード上の Pod 間 UDP トラフィックです。

解決策

クラスタを次のいずれかの修正バージョンにアップグレードします。

  • 1.32.3-gke.1927000 以降
  • 1.31.7-gke.1390000 以降
オペレーション 1.29、1.30、1.31
  • 1.29.10-gke.1071000 以降
  • 1.30.5-gke.1723000 以降
  • 1.31.2-gke.1115000 以降

Ray Operator と Cloud KMS データベースの暗号化の互換性がない

一部の Ray Operator バージョンは、Cloud KMS データベースの暗号化と互換性がありません。

回避策

クラスタ コントロール プレーンを修正バージョン以降にアップグレードします。

アップグレードと更新 1.30、1.31
  • 1.30.8-gke.1051000 以降
  • 1.31.1-gke.2008000 以降

GPU メンテナンス ハンドラ Pod が CrashLoopBackOff 状態のままになる

この問題では、gpu-maintenance-handler Pod がそれぞれのノードで `CrashLoopBackOff` 状態のままになります。この状態では、GKE ノードに `upcoming maintenance` ラベルが適用されません。これにより、ワークロードのノードドレインと Pod の強制排除の両方のプロセスに影響する可能性があります。

"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])?')"

この問題の影響を受けている場合は、修正を含む GKE バージョンにコントロール プレーンをアップグレードすることで解決できます。

オペレーション 1.33.1-gke.1522000 以降 1.33.4-gke.1142000 以降

イメージ ストリーミングが有効になっているノードで Pod が起動しない

イメージ ストリーミングが有効になっているノードでは、ワークロードが次のエラー シグネチャで起動に失敗することがあります。 Failed to create pod sandbox ... context deadline exceeded

影響を受けるノードのシリアルポート ログにも、次のエラー シグネチャが含まれています。 task gcfsd ... blocked for more than X seconds

これらの 2 つのエラー シグネチャが存在する場合、イメージ ストリーミング コンポーネントのいずれかでデッドロックが発生していることを示します。このデッドロックにより、Pod が正常に起動しなくなります。

解決策

ノードを再起動して、迅速に緩和します。再起動したノードでデッドロックが再び発生する可能性があります。より堅牢な緩和策として、次のコマンドを実行してノードプールでイメージ ストリーミングを無効にします。

gcloud container node-pools update NODE_POOL_NAME --cluster CLUSTER_NAME --no-enable-image-streaming
注: イメージ ストリーミングを無効にすると、ノードプール内のすべてのノードが再作成されます。

次のステップ

  • このドキュメントで問題を解決できない場合は、サポートを受けるで、次のトピックに関するアドバイスなど、詳細なヘルプをご覧ください。