檢視次數:
設定檔適用性:等級 1
使用 Container-Optimized OS (cos_containerd) 作為受管理、優化及強化的基礎作業系統,以限制主機的攻擊面。
COS 是一個針對 Compute Engine 虛擬機器優化的作業系統映像,專門用於運行容器。使用 COS,容器可以在 Google Cloud Platform 上快速、高效且安全地啟動。
使用 COS 作為節點映像具有以下優點:
  • 開箱即用容器:COS 實例預先安裝了容器運行時和雲端初始化。使用 COS 實例,容器可以在虛擬機創建的同時啟動,無需在主機上進行設置。
  • 較小的攻擊面:COS 佔用的資源較少,從而減少實例的潛在攻擊面。
  • 預設鎖定:COS 實例預設包含鎖定的防火牆和其他安全設定。
注意
注意
以容器為優化的作業系統搭配 containerd(cos_containerd)(預設)是叢集節點映像檔的預設選項。

影響

如果將現有叢集的節點池修改為運行 COS,則所使用的升級操作是長時間運行的,並且會封鎖叢集上的其他操作(包括刪除),直到其完成為止。COS 節點還提供了一個選項,使用 containerd 作為主要容器運行時,直接與 Kubernetes 集成,而不是使用 docker。
因此,在這些節點上,Docker 無法查看或存取由 Kubernetes 管理的容器或映像。應用程式不應直接與 Docker 互動。對於一般疑難排解或除錯,請改用 crictl。

稽核

使用 Google Cloud 主控台:
  1. 前往 Kubernetes Engine,請造訪:Google Cloud Console Kubernetes Engine 頁面
  2. 從叢集列表中選擇要測試的叢集。
  3. 在節點池部分,確保每個節點池的映像類型欄位中列出Container-Optimized OS (cos_containerd)。
使用命令列:
要檢查現有叢集的節點池的節點映像類型,首先定義節點池、叢集名稱、位置資訊和專案的4個變數,然後執行以下命令:
gcloud container node-pools describe $NODE_POOL --cluster $CLUSTER_NAME --location $LOCATION --project $PROJECT_ID --format json | jq '.config.imageType'
如果節點映像使用 COS_CONTAINERD,則上述命令的輸出應返回以下輸出:
"config": {
  ..
  "imageType": "COS_CONTAINERD",
  ..
}

補救

使用 Google Cloud 主控台:
  1. 前往 Kubernetes Engine,請造訪:Google Cloud Console Kubernetes Engine 頁面
  2. 選擇不使用 COS 的 Kubernetes 叢集。
  3. 在節點池標題下,選擇需要更改的節點池。
  4. 點擊編輯。
  5. 在影像類型標題下點擊更改。
  6. 從彈出式選單中選擇Container-optimised OS with containerd (cos_containerd) (default),然後點擊更改。
  7. 對所有不合規的節點池重複此操作。
使用命令列:
將現有叢集的節點池的節點映像設置為 cos:
gcloud container clusters upgrade <cluster_name> --image-type cos_containerd --location <location> --node-pool <node_pool_name>