檢視次數:
設定檔適用性:等級 2
執行 GKE 中繼資料伺服器可防止工作負載存取敏感的實例中繼資料,並促進工作負載身份識別。
每個節點都將其元數據存儲在元數據伺服器上。部分元數據,例如kubelet憑證和 VM 實例身份令牌,屬於敏感資訊,不應暴露給 Kubernetes 工作負載。啟用 GKE 元數據伺服器可防止未在主機網路上運行的 Pod 存取這些元數據,並促進工作負載身份識別。
當未指定時,預設設定允許運行中的 pod 完全訪問節點的基礎元數據伺服器。
注意
注意
預設情況下,運行中的 pods 可以完全訪問節點的基礎元數據伺服器。

影響

使用工作負載身份時,必須運行 GKE Metadata Server。由於工作負載身份取代了使用 Metadata Concealment 的需求,這兩種方法不相容。當 GKE Metadata Server 和工作負載身份已啟動時,除非 Pod 在主機網路上運行,否則 Pod 無法使用 Compute Engine 的預設服務帳戶。
可能需要修改工作負載,以便它們使用工作負載身份,如GKE 文件身份中所述。

稽核

使用 Google Cloud 主控台
  1. 前往 Kubernetes Engine,請造訪 Google Cloud Console Kubernetes Engine 頁面
  2. 從叢集列表中,點擊感興趣的叢集名稱,並對叢集中的每個節點池打開詳細資訊窗格,確保 GKE Metadata Server 設置為已啟動。
使用命令列
要檢查每個叢集中的節點池是否已啟動 GKE Metadata Server,請定義叢集名稱、位置資訊和專案的三個變數,然後執行以下命令:
gcloud container clusters describe $CLUSTER_NAME --location $LOCATION -- project $PROJECT_ID --format json | jq '.nodePools[].config.workloadMetadataConfig' 
 
這應該為每個節點池返回以下內容:
{ 
      "mode": "GKE_METADATA" 
} 
如果 GKE Metadata Server 未已啟動,則返回 Null ({ })。

補救

GKE Metadata Server 需要在叢集上啟用 Workload Identity。請修改叢集以啟用 Workload Identity 並啟用 GKE Metadata Server。
使用 Google Cloud 主控台
  1. 前往 Kubernetes Engine,請造訪 Google Cloud Console Kubernetes Engine 頁面
  2. 從叢集列表中,選擇已停用工作負載身份的叢集。
  3. 在詳細資料窗格中,向下瀏覽至安全性子部分。
  4. 點擊名為編輯工作負載身份的鉛筆圖示,在彈出窗口中點擊啟用工作負載身份,並從下拉框中選擇一個工作負載池。預設情況下,它將是包含集群的雲端專案的命名空間,例如:<project_id>.svc.id.goog。
  5. 點擊儲存變更並等待叢集更新。
  6. 一旦叢集更新後,請在叢集詳細資訊頁面中選擇每個節點池。
  7. 在每個節點池的詳細資訊頁面中,選擇編輯。
  8. 在編輯節點池窗格中,勾選啟用 GKE Metadata Server核取方塊。
  9. 點擊儲存。
使用命令列
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 文件身份中所述。