GKE 已知問題

本頁列出 GKE 的已知問題。本頁內容適用於管理基礎技術基礎架構生命週期,以及在服務等級目標 (SLO) 未達成或應用程式失敗時,回應快訊和頁面的管理員和架構師。

本頁列出所有支援版本的已知問題,以及延長支援中最早版本的前兩個次要版本。版本結束延長支援後,所有 N-2 問題都會移除。舉例來說,當 1.30 版的延長支援期結束時,系統會移除 1.28 版和更早版本特有的已知問題。

如果您是 Google 開發人員計畫成員,請儲存這個頁面,以便在發布與這個頁面相關的版本說明時收到通知。詳情請參閱「已儲存的頁面」一文。

如要依產品版本或類別篩選已知問題,請從下列下拉式選單選取篩選條件。

選取 GKE 版本:

選取問題類別:

或者,搜尋您的問題:

類別 已識別版本 已修正的版本 問題和解決方法
效能
  • GKE 1.32 的 1.32.8-gke.1134000 以上版本
  • GKE 1.33 的 1.33.3-gke.1392000 以上版本
  • GKE 1.34 和 1.35 的所有修補程式版本
  • GKE 1.32 的 1.32.11-gke.1075000 以上版本

一般用途網路在 A 系列和 G4 GPU 機器類型上的效能會下降

在 GKE 1.32.8-gke.1134000 以上版本 (適用於 GKE 1.32),以及 GKE 1.33.3-gke.1392000 以上版本中,搭載 A 系列和 G4 GPU 節點的 GKE 叢集一般用途網路效能會降低。一般用途網路效能下降會影響 GPU 機型,包括 A3、A4、A4X 和 G4 系列機型。請注意,A3 Mega 上的 GPUDirect-TCPXO,以及 A3 Ultra、A4 和 A4X 上的 GPUDirect-RDMA 不會受到影響。

這是因為設定中斷親和性的節點層級指令碼 (/usr/bin/google_set_multiqueue) 設定有誤。

解決方法:

如果是 GKE 1.32 節點集區,請將 GKE 節點集區版本升級至 1.32.11-gke.1075000 以上版本。如果是 GKE 1.33、1.34 和 1.35 節點集區,請將 GKE 節點集區版本降級至 1.33.3-gke.1392000 之前的版本。

效能
  • GKE 1.32 的 1.32.8-gke.1134000 以上版本
  • GKE 1.33 以上版本:1.33.3-gke.1392000 以上版本
  • GKE 1.32 的 1.32.11-gke.1075000 以上版本

GPUDirect-TCPX 在 A3 High 上的效能會下降

在 GKE 1.32.8-gke.1134000 以上版本 (適用於 GKE 1.32) 和 GKE 1.33.3-gke.1392000 以上版本中,如果使用 GPUDirect-TCPX,搭載 A3 High (a3-highgpu-8g) 節點的 GKE 叢集效能會降低。

這是因為設定中斷親和性的節點層級指令碼 (/usr/bin/google_set_multiqueue) 設定有誤。

解決方法:

如果是 GKE 1.32 節點集區,請將 GKE 節點集區版本升級至 1.32.11-gke.1075000 以上版本。如果是 GKE 1.33 以上版本的節點集區,請將 GKE 節點集區版本降級至 1.33.3-gke.1392000 之前的版本。如為 GKE 1.34 節點集區,請參閱「GPUDirect-TCPX is unavailable with A3 High for GKE version 1.34 and later」(GPUDirect-TCPX 不適用於 GKE 1.34 以上版本的 A3 High)。

升級 1.35 待定

GKE Dataplane V2 叢集中的 Cilium 身分重複

如果 GKE 叢集執行 1.35 版,且已啟用 GKE Dataplane V2,ciliumidentities.cilium.io自訂資源數量可能會增加。這個問題是由於 Kubernetes 1.35 版將 topology.kubernetes.io 標籤新增至 Pod,導致系統為工作負載中排定 Pod 的每個可用區產生額外的 Cilium 身分。

在區域和區域叢集中,排定新的工作負載可能會導致暫時重複的 Cilium 身分。發生重複情況的原因是,Pod 在建立時會根據初始標籤取得一個身分,而在排定至節點時,會因新增拓撲標籤而取得另一個身分。在地區叢集中,身分數量可能會額外增加,增幅與叢集涵蓋的區域數量成正比。

影響:

如果身分總數超過 65,535 個,新工作負載可能無法排定時間。

解決方法:

如要限制身分識別資訊總數,請避免在 Pod 中加入具有大量不重複值的標籤。

詳情請參閱下列 Cilium 說明文件:

升級 1.34 以上版本 待定

GPUDirect-TCPX 不適用於 GKE 1.34 以上版本的 A3 High

搭載 A3 High (a3-highgpu-8g) 節點的 GKE 叢集可使用 GPUDirect-TCPX,盡量提高 GPU 網路頻寬。如果節點使用 TCPX 和 A3 High,升級至 GKE 1.34 以上版本可能會導致 TCPX 發生功能或效能問題。這是因為 TCPX 與 Container-Optimized OS Milestone 125 以上版本使用的 Linux Kernel 6.12 不相容。GKE 1.34 版使用里程碑 125。

其他 A3 High (a3-highgpu-1ga3-highgpu-2ga3-highgpu-4g) GPU 機器類型和其他 GPU 機器系列不受影響,因為這些類型不支援 GPUDirect-TCPX。

為避免發生問題,GKE 會封鎖下列情境:

  • 您無法使用 1.34 以上版本,建立具有 A3 High (a3-highgpu-8g) 節點的節點集區。
  • 您無法手動將含有 A3 High (a3-highgpu-8g) 節點的節點集區升級至 1.34 以上版本。
  • 對於含有 A3 High (a3-highgpu-8g) 節點的節點集區,GKE 不會自動升級至 1.34 以上版本。

解決方法:

目前您不需要採取任何行動。GKE 會自動禁止在 1.34 以上版本中,建立含有 A3 High (a3-highgpu-8g) 節點的節點集區,並禁止將含有 A3 High (a3-highgpu-8g) 節點的節點集區升級至 1.34 以上版本。

作業 1.34.0-gke.2285000 之前的版本 1.34.0-gke.2285000 以上版本

更新執行個體容量下限

代管 Lustre 執行個體的容量下限已更新為 9000 GiB。如果叢集執行的版本早於 1.34.0-gke.2285000,就無法透過 Managed Lustre CSI 驅動程式,以這個最低容量建立執行個體。

解決方法:

將叢集版本升級至 1.34.0-gke.2285000 以上版本,即可建立容量下限為 9000 GiB 的受管理 Lustre 執行個體。

作業 所有版本 待定

Google Cloud 節點自動修復期間,控制台 UI 會變成無法編輯

GKE 節點進行自動修復時,由於作業正在進行中,因此無法透過 Google Cloud 控制台編輯節點集區。

解決方法:

您仍可使用 gcloud CLI 指令編輯節點集區設定。

作業 1.33.4-gke.1036000 之前的 1.33 版本 1.33.4-gke.1036000 以上版本

動態佈建的 Lustre 執行個體效能層級不正確

動態佈建 Lustre 執行個體時,無論 API 要求中指定的 perUnitStorageThroughput 值為何,執行個體建立作業都會因 InvalidArgument 錯誤而失敗。

解決方法:

將 GKE 叢集升級至 1.33.4-gke.1036000 以上版本。如果使用穩定版,可能還無法取得較新版本。在這種情況下,您可以從「一般」或「快速」管道手動選取包含修正程式的版本。

作業
  • 1.32.3-gke.1099000 以上版本
  • 1.33
1.33.3-gke.1266000 以上版本

使用 Cloud Storage FUSE CSI 驅動程式重新命名或移動檔案時發生輸入/輸出錯誤

使用受影響版本的 Cloud Storage FUSE CSI 驅動程式時,重新命名或移動 Cloud Storage bucket 中的檔案可能會失敗,並顯示 I/O 錯誤。

解決方法:

在 Pod 資訊清單中暫時新增特定 Sidecar 映像檔定義。在 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
    

詳情請參閱「為 Sidecar 容器設定私人映像檔」中的 Pod 資訊清單。

將叢集升級至修正後的 GKE 版本或更新版本後,您必須從資訊清單中移除整個 gke-gcsfuse-sidecar 區塊。移除這個區塊後,GKE 會繼續自動為升級後的叢集版本插入及管理正確的 Sidecar 映像檔。

記錄和監控 所有版本 待定

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 時,開啟檔案的限制較低

對於執行 GKE 1.33 版的節點集區 (使用 containerd 2.0),容器的開啟檔案預設軟限制 (ulimit -n) 會降低至 1024。

這是 containerd 本身的變更 (請參閱 containerd PR #8924),其中 LimitNOFILE 已從 containerd.service 中移除,這是最佳做法,因此會套用預設的系統軟性限制。

如果工作負載預期會有較高的預設軟性限制 (例如隱含依賴先前的較高預設值),可能會發生 Too many open files 等錯誤。

解決方法:

從 1.33 之前的修補程式版本升級至 1.33.2-gke.1043000 以上版本。

解決方法:

請使用下列任一方法,提高工作負載的開啟檔案數上限:

  • 應用程式層級調整:修改應用程式程式碼或設定,明確設定 ulimit -nprlimit --nofile=524288
  • Containerd NRI Ulimit Adjuster 外掛程式 :使用 containerd/nri ulimit-adjuster 外掛程式調整 ulimit。
  • 降級節點集區 (僅限 Standard):如果是 Standard GKE 叢集,您可以暫時降級節點集區至 1.32 版,避免發生這個問題,直到永久解決方案推出為止。
如要進一步瞭解如何遷移至 containerd 2,請參閱「將節點遷移至 containerd 2」。
升級 1.31.5-gke.1169000、1.32.1-gke.1376000 1.31.7-gke.1164000、1.32.3-gke.1512000

Invalid CRD status.storedVersions for managed CRDs

部分 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 以上版本

缺少指標或工作負載自動調度器未調度資源

如果叢集大小增加超過五個節點,您可能會發現受影響版本的指標資料有缺漏。這個問題也可能影響自動調度作業。

只有升級至受影響版本的叢集會發生這個問題。新建立的叢集應可正常運作。

解決方法:

如果受到影響,可以降級一個修補程式版本,或升級至較新的修正版本。

作業

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,核心可能會以 OOMKilled 終止 gke-metadata-server

解決方法:

如果 TPU 或 GPU 節點出現 OOMKilled 事件,請與 GKE Identity 待命團隊聯絡 (元件 ID:395450),瞭解緩解措施。 gke-metadata-server

作業
  • 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.32,且節點版本為 1.31 或更舊,則在調整大小期間,系統將無法更新 PersistentVolumeClaim 狀態。這個錯誤狀態會導致後續的調整大小作業無法開始,進而無法繼續調整大小。

處於這個狀態的 PVC 具有 status.allocatedResourceStatuses 欄位,其中包含 NodePendingResize,或同時包含 status.allocatedResources 欄位和 status.conditions.type: FileSystemResizePending

如果叢集使用受影響的版本時建立了 PVC,即使叢集升級至已知修正版本,您可能仍會遇到這個問題。在這種情況下,您需要修補 PVC,以透過一次性解決方法移除 status.allocatedResources 欄位。

解決方法:

如果 PVC 處於懸而未決的狀態,可以修補來移除該狀態。您可以使用類似下列的修補程式指令,移除懸而未決的狀態:

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 以上版本

如果 Pod 嘗試在先前已掛接唯讀 (RO) 磁碟區的 COS 節點上掛接 NFS 永久磁碟區,則只會以 RO 模式掛接

如果是 GKE 1.27 以上版本,使用 Kubernetes 樹內 CSI 驅動程式的 NFS 磁碟區,只能在同一節點上先前 RO 掛接後,以 RO 模式掛接永久磁碟區。

解決方法:

將節點集區降級至受影響版本之前的版本

作業
  • 1.32 版本,從 1.32.1-gke.1357001 到 1.32.4-gke.1106000 (不含)
  • 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 樹內 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.1369000
  • 1.28.15-gke.1668000 以上版本
  • 1.29.13-gke.1028000 以上版本
  • 1.30.8-gke.1287000 以上版本
  • 1.31.6-gke.1020000 以上版本
  • 1.32.1-gke.1369000 以上版本

由於 Linux 核心的錯誤,使用 io_uring 相關系統呼叫的 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 驅逐率提高

部分 GKE 1.30 和 GKE 1.31 版本分別使用 COS 113 和 COS 117,這些版本具有以 CONFIG_LRU_GEN_ENABLED=y 選項建構的 Kernel。這個選項會啟用核心功能「Multi-Gen LRU」,導致 Kubelet 誤算記憶體用量,並可能導致 Kubelet 逐出 Pod。

cos-113-18244-151-96cos-117-18613-0-76 中,設定選項 CONFIG_LRU_GEN_ENABLED 已停用。

您不一定會看到異常的 Pod 驅逐率,因為這個問題取決於工作負載的記憶體用量模式。 如果工作負載未在資源欄位中設定記憶體限制,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. 更新要執行 DaemonSet 的 GKE 節點集區,並使用註解停用 Multi-Gen LRU 選項。例如 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 卡在「終止中」狀態

容器執行階段 (containerd) 中的錯誤可能會導致 Pod 和容器停滯在 Terminating 狀態,並出現類似下列的錯誤:

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

如果受到這個問題影響,您可以 升級節點至 GKE 版本,其中包含已修正的 containerd 版本。

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

閘道 TLS 設定錯誤

我們發現,在執行 GKE 1.28.4-gke.1083000 版的叢集中,設定閘道 TLS 時會發生問題。這會影響使用 SSLCertificateCertificateMap 的 TLS 設定。如果升級的叢集已有閘道,更新閘道會失敗。對於新的閘道,系統不會佈建負載平衡器。我們將在日後推出的 GKE 1.28 修補程式版本中修正這個問題。

升級與更新 1.27 1.27.8 以上版本

GPU 裝置外掛程式問題

如果叢集執行 GPU,且從 1.26 升級至 1.27 修補程式版本 (早於 1.27.8),節點的 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 以上版本

停止所有工作負載的自動調度資源功能

如果叢集包含設定錯誤的 autoscaling/v2 HPA 物件,HorizontalPodAutoscaler (HPA) 和 VerticalPodAutoscaler (VPA) 可能會停止自動調度叢集中的所有工作負載。這個問題會影響執行舊版 GKE 1.27 和 1.28 修補程式版本的叢集 (例如 1.27.3-gke.100)。

解決方法:

請確認 spec.metrics.resource.target 中的欄位相符,例如: autoscaling/v2

  • 如果 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 無法部署

如果 Autopilot 叢集執行下列 GKE 版本,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 版本時,就會觸發這個問題:

  • 1.32.1-gke.1729000 以上版本
  • 1.31.6-gke.1020000 以上版本

受影響的路徑是同一節點上透過 Hostport 或 Service 的 Pod 對 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 運算子與 Cloud KMS 資料庫加密不相容

部分 Ray 運算子版本與 Cloud KMS 資料庫加密功能不相容。

解決方法:

將叢集控制層升級至固定版本或更新版本。

升級與更新 1.30、1.31
  • 1.30.8-gke.1051000 以上版本
  • 1.31.1-gke.2008000 以上版本

GPU 維護處理常式 Pod 停滯在 CrashLoopBackOff 狀態

發生這個問題時,gpu-maintenance-handler Pod 會在各自的節點上處於 `CrashLoopBackOff` 狀態。這個狀態可防止系統將 `upcoming maintenance` 標籤套用至 GKE 節點,這可能會影響工作負載的節點排空和 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

如果出現這兩個錯誤簽章,表示其中一個圖像串流元件發生死結。這個死結會導致 Pod 無法順利啟動。

降低威脅的方法:

重新啟動節點,即可快速緩解問題。請注意,重新啟動的節點可能還是會再次遇到死結。如要採取更完善的緩解措施,請執行下列指令,停用節點集區的映像檔串流功能:

gcloud container node-pools update NODE_POOL_NAME --cluster CLUSTER_NAME --no-enable-image-streaming
注意:停用映像檔串流功能後,系統會重新建立節點集區中的所有節點。

作業
  • 1.32.4-gke.1198000 以上版本
  • 1.33.5-gke.1862000 之前的 1.33 版本
  • 1.34.1-gke.2541000 之前的 1.34 版本
  • 1.33.5-gke.1862000 以上版本
  • 1.34.1-gke.2541000 以上版本

使用 ImageType 的自訂 ComputeClass 不會使用現有的 GKE 節點集區。

使用定義 ImageType 欄位的自訂 ComputeClass 時,叢集自動配置器會重複建立及調度新節點集區,而不是調度現有節點集區。ComputeClass 狀態不良。

解決方法:

將叢集升級至下列其中一個修正版本:

  • 1.33.5-gke.1862000 以上版本
  • 1.34.1-gke.2541000 以上版本

或者,您也可以在自訂 ComputeClass 中不定義特定欄位,以減輕這個問題的影響。

  • 如果您未使用 Autopilot 自訂 ComputeClass,請勿定義 ImageType 欄位。在這種情況下,系統會使用預設的叢集層級設定,也就是 cos_containerd
  • 如果您使用 Autopilot 自訂 ComputeClass,請勿定義 nodePoolConfig 欄位,該欄位為一個層級 ImageType

後續步驟