1. 鏡像倉庫被設定為公有,導緻鏡像洩露風險:
錯誤現象:
公有鏡像倉庫可能會被雲上其它使用者拉取,導緻洩露鏡像安全風險;部分運維或者開發同學,因為沒有設定準确的 secret 到 Deployment,為了解決無法拉取鏡像問題,直接開放鏡像倉庫為公有。
解決方法:
鏡像倉庫的命名空間一定要設定為私有,準确設定綁定雲效中docker 鏡像賬号,通過雲效釋出應用;
嚴格設定容器鏡像倉庫的維護權限;
2. 鏡像拉取失敗:
錯誤現象:
## 檢視 pod 部署日志
kubectl logs {pod}
## 錯誤資訊
Failed to pull image "registry-vpc.{region_id}.aliyuncs.com/{app_name}-daily/{app_name}:20190823150817":
rpc error: code = Unknown desc = Error response from daemon:
pull access denied for registry-vpc.{region_id}.aliyuncs.com/{app_name}-daily/{app_name}, repository does not exist or may require 'docker login'
錯誤原因:
-
目前 tag 的鏡像不存在、鏡像位址錯誤、鏡像網絡不通,沒法通路;
解決方法:
隻需修改正确位址或者打通網絡即可;
-
Deployment 或者 Statefulset 的imagePullSecrets 沒有設定或者設定錯誤
解決方法:
控制台或者使用指令建立保密字典,然後使用 imagePullSecrets 引入,或者自己建立 Secret:
## deplyment yaml 設定:
imagePullSecrets:
- name: acr-credential-be5ac8be6a88c42ac1d831b85135a585
3. SLB被容器服務清除,導緻故障,需要重建和安全配置:
錯誤現象:
與容器服務關聯配置的負載均衡(SLB)被清除;
錯誤原因:
因為有狀态副本或者 Deployment集部署删除,存在級聯删除 Service 情況,開發和運維人員使用重建方式修改自己配置的時候,導緻 service 級聯相應 SLB 被删除,導緻故障,需要緊急重建 SLB 并多方增加通路控制等配置。
Service 配置任意修改或者删除,比如将 SLB 模式修改為 NodePort 或者 Cluster 模式,導緻 SLB 負載均衡配置被清除。
解決與防止方法:
kubernetes 使用 NodePort,再通過手動建立負載均衡(SLB)與 NodePort 關聯,解耦 Service 與 SLB 級聯關系。
使用 Ingress 暴露服務,Service 使用虛拟叢集 IP,與 Ingress 關聯。
使用此種方式需要注意 SLB 到後端服務的負載均衡,具體參考
負載均衡中負載均衡請求部分。
4. ECS 添加到叢集失敗:
叢集增加已有節點或者擴容失敗。
錯誤日志例如下:
2019-07-31 19:44:59cf7c629dbf1dc4088a5a6b316fa5e561a | Wait k8s node i-9dpfd2n6ijvdd5tb642r join cluster timeout
2019-07-31 19:44:59cf7c629dbf1dc4088a5a6b316fa5e561a | Failed to check instance i-9dpfd2n6ijvdd5tb642r healthy : Wait for cn-north-2-gov-1.i-9dpfd2n6ijvdd5tb642r join to cluster cf7c629dbf1dc4088a5a6b316fa5e561a timeout
2019-07-31 19:44:59cf7c629dbf1dc4088a5a6b316fa5e561a | Failed to init instance i-9dpfd2n6ijvdd5tb642r, err Wait for cn-north-2-gov-1.i-9dpfd2n6ijvdd5tb642r join to cluster cf7c629dbf1dc4088a5a6b316fa5e561a timeout
2019-07-31 19:44:59cf7c629dbf1dc4088a5a6b316fa5e561a | Failed to attach node i-9dpfd2n6ijvdd5tb642r, err Wait for cn-north-2-gov-1.i-9dpfd2n6ijvdd5tb642r join to cluster cf7c629dbf1dc4088a5a6b316fa5e561a timeout
錯誤原因:
- 單個叢集内節點數量配額達到門檻值,導緻 ECS 幾點沒法加入;
- 虛拟網絡 VPC中路由表的路由條目達到門檻值,導緻新增節點沒法添加路由條目;
- kubernetes apiserver 的 SLB 負載均衡設定有通路控制,導緻添加的 ECS 沒法通路 ApiServer;
- 添加的 ECS 節點自身安全組限制或者底層網絡故障,導緻沒法通路 apiserver;
解決方法:
- 聯系阿裡雲同學增加叢集或者路由表門檻值;
- 配置 SLB 通路控制,增加白名單;
- 配置安全組,增加白名單,或者重建 ECS,釋放故障 ECS;
5. 叢集中,個别 POD 網絡通路不通:
個别應用産生一定比例的通路逾時錯誤報告,經過監控系統 sunfire 配置發現特定的A 應用 pod 與另外一個應用B pod 網絡不通;
網絡測試:
- A pod 通路不通 B pod;
- B pod 能通路通 A pod;
- A pod 主控端 ECS 能通路通 B pod主控端 ECS;
- B pod 主控端 ECS 能通路通 A pod主控端 ECS;
- A pod 通路通 B pod主控端 ECS;
-
B pod 通路通 A pod主控端 ECS;
抓包并與阿裡雲同學網絡排查發現, 雲上 VPC 的 NC 網絡控制子產品沒有正确下發路由資訊,導緻網絡故障。
解決方法:
聯系阿裡雲 vpc 同學,排查 vpc 中 NC 路由下發問題。
6. 部分 ECS 網絡故障,Master 通路Node 的 kube-proxy 端口通路不通:
新添加一批 ECS 節點,個别 ECS 總是添加失敗,報告逾時,排除 SLB 通路控制等原因;
監控 kubelet-TelnetStatus.Value 報警;
【阿裡雲監控】應用分組-k8s-cbf861623f10144c488813375a8a0d489-worker-1個執行個體發生報警, 觸發規則:kubelet-TelnetStatus.Value
14:16 可用性監控[kubelet dingtalk-a-prod-node-X06/172.16.6.9] ,狀态碼(631>400 ),持續時間1天3分鐘
錯誤原因:
經過觀察和多次測試,失敗的 ECS 網絡很不穩定,經常網絡不通;
該故障排查錯層較長,一直沒懷疑機器問題;
ECS 主控端基礎設施有問題,排除釋放此主控端上的 ECS。
建立 ECS, 釋放故障 ECS,重新加入 kubernetes 叢集。