全部產品
Search
文件中心

Container Service for Kubernetes:容器安全FAQ

更新時間:Jun 19, 2024

本文介紹應用程式容器安全的常見問題及解決方案。

為什麼容器之間的網路不通?

您可以參考以下步驟解決Container ServiceKubernetes叢集由於安全性群組導致網路不通的問題。

  • 入方向授權對象Pod 網路CIDR,且協議類型全部的規則已被刪除。

    1. 登入Container Service管理主控台,在左側導覽列選擇叢集

    2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇叢集資訊

    3. 叢集資訊頁面,選擇叢集資源頁簽,單擊安全性群組右側的連結進入ECS控制台的安全性群組頁面。

    4. 安全性群組頁面的入方向頁簽下,單擊手動添加

    5. 填寫協議類型連接埠範圍授權對象,並單擊儲存

      說明
      • 協議類型請選擇全部

      • 授權對象填寫為Pod的網段地址。

        Pod的網段地址(Pod網路CIDR)可在Container Service管理主控台叢集詳細資料頁面,叢集資訊地區查看。叢集資訊

        授權對象的設定,可參見安全性群組應用案例

      入方向授權對象為Pod網路CIDR,且協議類型全部的規則已添加。

  • 新增ECS執行個體的安全性群組與叢集所在的安全性群組不同。

    1. 登入Container Service管理主控台,在左側導覽列選擇叢集

    2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇叢集資訊

    3. 叢集資訊頁面,選擇叢集資源頁簽,查看並記錄安全性群組右側的安全性群組ID。

    4. 將目標ECS執行個體加入上一步查到的叢集安全性群組中。將ECS執行個體加入指定安全性群組的相關操作,請參見在執行個體頁面進行安全性群組關聯的管理

如何給Kubernetes叢集指定安全性群組?

當前暫不支援給Kubernetes叢集指定安全性群組。但是建立Kubernetes叢集時,Container ServiceACK會自動建立一個預設安全性群組,您可以通過修改預設安全性群組的規則,達到指定安全性群組的效果。

叢集審計功能是否可以取消或者在建立叢集後再部署?

可以。具體操作,請參見使用叢集API Server審計功能

Kubernetes專有版本叢集如何更換認證有效期間,以及如何更換各個組件的認證?

Pod無法建立,報錯詳情:no providers available to validate pod request

Secret在建立的Namespace下面無法使用

Secret是命名空間層級的,您需要在建立的Namespace下建立Secret。

無法掛載default-token

無法掛載default-token,具體報錯資訊如下:

Normal Scheduled 13m default-scheduler Successfully assigned dev/alibaba-demo-67fcdbfb8-zklnp to cn-hangzhou.10.7.3.16  Warning FailedMount 13m (x2 over 13m) kubelet, cn-hangzhou.10.7.3.16 MountVolume.SetUp failed for volume 'default-token-8twx9' : mount failed: exit status 1 Mounting command: systemd-run Mounting arguments: --description=Kubernetes transient mount for /var/lib/kubelet/pods/62d39b35-9a4d-11ea-9870-c24d56a0e904/volumes/kubernetes.io~secret/default-token-8twx9 --scope -- mount -t tmpfs tmpfs /var/lib/kubelet/pods/62d39b35-9a4d-11ea-9870-c24d56a0e904/volumes/kubernetes.io~secret/default-token-8twx9 Output: Failed to start transient scope unit: Argument list too long  Warning FailedCreatePodContainer 3m40s (x49 over 13m) kubelet, cn-hangzhou.10.7.3.16 unable to ensure pod container exists: failed to create container for [kubepods burstable pod62d39b35-9a4d-11ea-9870-c24d56a0e904] : Argument list too long

Systemd版本太老舊。

  • 升級Systemd,具體操作,請參見systemd

  • 執行sudo systemctl daemon-reload命令重啟清零。更多資訊,請參見systemd

審計日誌查詢方法

RBAC相關變更操作的審計日誌查詢方法

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇叢集資訊

  3. 叢集資訊頁面,選擇叢集資源頁簽,單擊Log ServiceProject右側的連結。

  4. 日誌儲存 > 日誌庫頁面,選擇對應的 audit-<cluster_id>,單擊頁面右上方的查詢 / 分析

  5. 在頁面頂端的下拉式清單中,選擇需要查詢的時間範圍,例如最近15分鐘。

    說明

    時間段覆蓋的範圍是正常到出現問題時的這段時間,例如3天、7天或15天。

  6. 查詢 / 分析文字框中,輸入以下SQL查詢命令,然後單擊頁面右上方的查詢 / 分析

    requestURI: "rbac.authorization.k8s.io" not (verb: get or verb: watch) 
  7. 單擊45表徵圖,選擇下載日誌,在彈出的日誌下載對話方塊,選中通過Cloud Shell下載,單擊確認

ConfigMap相關變更操作的審計日誌查詢方法

查詢 / 分析文字框中輸入以下SQL查詢命令,然後單擊查詢 / 分析。更多操作,請參見審計日誌查詢方法

requestURI: "configmaps" and <configmap_name> not (verb: get or verb: watch or verb: list) 
說明

上述查詢命令在查詢時,需要將<configmap_name>替換為實際的ConfigMap名稱。

Deployment的Pod擴縮容相關操作的審計日誌查詢方法

查詢 / 分析文字框中輸入以下SQL查詢命令,然後單擊查詢 / 分析。更多操作,請參見審計日誌查詢方法

requestURI: deployments and (verb: update or verb: patch) and replicas and deployments and <deployment_name> not deployment-controller
說明

上述查詢命令在查詢時,需要將<deployment_name>替換為實際的Deployment名稱。