我把三臺虛擬機重啟,發現2個節點一直處於 NotReady 狀態,便去查找問題,到最後是因為子節點的 kubelet 的狀態異常了,restart 一下就好了,下面轉一下解決的思路
某天晚上,針對 K8S 環境做了一次壓測,50路併發實施,早上起來看監控,發現昨晚8點之後,系統好像都宕掉了,一看 master 節點和一個 node 節點狀態變成了 not ready,主要定位手段如下:
1. 查看 master kubelet 狀態
systemctl status kubelet 狀態正常
2. 查看 master kube-proxy 狀態
systemctl status kube-proxy 狀態正常
3. 查看 master kube-apiserver 狀態
systemctl status kube-apiserver 狀態正常
4. 查看 master kube-scheduler 狀態
systemctl status kube-scheduler 狀態正常
5. 查看 master etcd 狀態
systemctl status etcd 狀態正常
6. 查看 flannel 狀態
在 kubernetes-dashboard 上看到 flannel 掛掉了,查看日誌如下
<code>Failedcreate
pod sandbox: rpcerror
: code =Unknown
desc
=failed
to
start
sandboxcontainer
for
pod"kube-flannel-ds-amd64-sc7sr"
:Error
responsefrom
daemon: OCI runtimecreate
failed
: container_linux.go:348
:starting
container
process caused"process_linux.go:301: running exec setns process for init caused "
signal: brokenpipe
\""
:unknown
/<code>
而這個問題,通過分析應該是 flannel 在網絡比較大的情況下,內存資源不足了,所以修改 flannel的配置,將內存擴大即可。
<code>"resources"
: {"limits"
: {"cpu"
:"300m"
,"memory"
:"200Mi"
},"requests"
: {"cpu"
:"300m"
,"memory"
:"200Mi"
} },/<code>
修改完成之後,需要重啟docker,在刪除原來的 flannel pod,這樣問題就解決拉
出處:http://dwz.date/c4NQ