本文介紹應用程式容器安全的常見問題及解決方案。
為什麼容器之間的網路不通?
您可以參考以下步驟解決Container ServiceKubernetes叢集由於安全性群組導致網路不通的問題。
入方向授權對象為Pod 網路CIDR,且協議類型為全部的規則已被刪除。
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇叢集資訊。
在叢集資訊頁面,選擇基本資料頁簽,單擊控制面安全性群組右側的連結進入ECS控制台的安全性群組頁面。
在安全性群組頁面的入方向頁簽下,單擊手動添加。
填寫協議類型、連接埠範圍、授權對象,並單擊儲存。
說明協議類型請選擇全部。
授權對象填寫為Pod的網段地址。
Pod的網段地址(Pod網路CIDR)可在Container Service管理主控台叢集詳細資料頁面,叢集資訊地區查看。
授權對象的設定,可參見安全性群組應用案例。
入方向授權對象為Pod網路CIDR,且協議類型為全部的規則已添加。
新增ECS執行個體的安全性群組與叢集所在的安全性群組不同。
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇叢集資訊。
在叢集資訊頁面,選擇基本資料頁簽,查看並記錄安全性群組右側的安全性群組ID。
將目標ECS執行個體加入上一步查到的叢集安全性群組中。將ECS執行個體加入指定安全性群組的相關操作,請參見將執行個體加入、移出或替換安全性群組。
如何給Kubernetes叢集指定安全性群組?
當前暫不支援給Kubernetes叢集指定安全性群組。但是建立Kubernetes叢集時,Container ServiceACK會自動建立一個預設安全性群組,您可以通過修改預設安全性群組的規則,達到指定安全性群組的效果。
叢集審計功能是否可以取消或者在建立叢集後再部署?
可以。具體操作,請參見使用叢集API Server審計功能。
Kubernetes專有版本叢集如何更換認證有效期間,以及如何更換各個組件的認證?
叢集臨近到期前兩個月左右,您會收到站內和簡訊通知,收到通知後,在控制台叢集列表頁面單擊認證更新按鈕即可。具體操作,請參見更新專有版叢集即將到期的認證。
如果Kubernetes叢集認證已到期,具體操作,請參見更新專有版叢集已到期的認證。
Pod無法建立,報錯詳情:no providers available to validate pod request
如果您沒有自訂PSP,出現該報錯是因為您刪除了預設的PSP,恢複使用預設的PSP規則即可。具體操作,請參見【已棄用】使用Pod安全性原則。
如果您需要自訂PSP,具體操作,請參見啟用安全性原則管理。
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版本太老舊。
審計日誌查詢方法
RBAC相關變更操作的審計日誌查詢方法
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇叢集資訊。
在叢集資訊頁面,選擇基本資料頁簽,單擊審計日誌右側的連結。
在
audit-<cluster_id>
,單擊頁面右上方的查詢 / 分析。 頁面,選擇對應的在頁面頂端的下拉式清單中,選擇需要查詢的時間範圍,例如最近15分鐘。
說明時間段覆蓋的範圍是正常到出現問題時的這段時間,例如3天、7天或15天。
在查詢 / 分析文字框中,輸入以下SQL查詢命令,然後單擊頁面右上方的查詢 / 分析。
requestURI: "rbac.authorization.k8s.io" not (verb: get or verb: watch)
單擊表徵圖,選擇下載日誌,在彈出的日誌下載對話方塊,選中通過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名稱。