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