設定檔適用性:等級 2
執行 GKE 中繼資料伺服器可防止工作負載存取敏感的實例中繼資料,並促進工作負載身份識別。
每個節點將其元數據存儲在元數據伺服器上。部分元數據,例如 kubelet 憑證和 VM 實例身份令牌,是敏感的,不應暴露給 Kubernetes 工作負載。啟用 GKE
元數據伺服器可防止未在主機網路上運行的 Pod 訪問此元數據,並促進工作負載身份。
當未指定時,預設設定允許運行的 pods 完全訪問節點的基礎元資料伺服器。
![]() |
注意預設情況下,運行的 Pod 可以完全訪問節點的基礎元數據伺服器。
|
影響
使用工作負載身份時,必須運行 GKE 元數據伺服器。由於工作負載身份取代了使用元數據隱藏的需求,這兩種方法不兼容。
當 GKE Metadata Server 和 Workload Identity 已啟動時,除非 Pod 在主機網路上運行,否則 Pod 無法使用 Compute
Engine 預設服務帳戶。
工作負載可能需要修改才能使用工作負載身份。請參閱GKE 文件以獲取詳細資訊。
稽核
使用 Google 雲端主控台:
- 前往Kubernetes Engine 網站。
- 從群集列表中,點擊感興趣的群集名稱。
- 對於叢集中的每個節點池,打開詳細資訊窗格,並確保 GKE Metadata Server 設置為
已啟動
。
使用命令列:
要檢查叢集中的每個節點池是否已啟動 GKE Metadata Server,請執行以下命令:
gcloud container clusters describe <cluster_name> --zone <cluster_zone> -- format json | jq .nodePools[].config.workloadMetadataConfig
這應該為每個節點池返回以下內容:
{ "mode": "GKE_METADATA" }
如果 GKE Metadata Server 未啟動,則返回 Null (
{ }
)。補救
GKE 中繼資料伺服器需要在叢集上啟用工作負載身份。修改叢集以啟用工作負載身份並啟用 GKE 中繼資料伺服器。
使用 Google 雲端主控台:
- 前往Kubernetes Engine 網站。
- 從叢集列表中,選擇已停用工作負載身份的叢集。
- 在DETAILS窗格下,向下導航至安全子部分。
- 點擊名為Edit Workload Identity的鉛筆圖示,在彈出窗口中點擊Enable Workload Identity,並從下拉框中選擇工作負載池。預設情況下,它將是包含集群的雲端專案的命名空間,例如:
<project_id>.svc.id.goog.
- 點擊SAVE CHANGES並等待叢集更新。
- 群集更新後,請在群集詳細資訊頁面中選擇每個節點池。
- 對於每個節點池,請在節點池詳細資訊頁面中選擇EDIT。
- 在Edit node pool窗格中,勾選Enable GKE Metadata Server核取方塊。
- 按一下「SAVE」。
使用命令列:
gcloud container clusters update <cluster_name> --identity- namespace=<project_id>.svc.id.goog
![]() |
注意現有的節點池不受影響。新的節點池預設為
--workload-metadata-from-node=GKE_METADATA_SERVER 。 |
要修改現有的節點池以啟用 GKE Metadata Server:
gcloud container node-pools update <node_pool_name> --cluster=<cluster_name> --workload-metadata-from-node=GKE_METADATA_SERVER
工作負載可能需要修改才能使用工作負載身份。請參閱GKE 文件以獲取詳細資訊。