我把三台虚拟机重启,发现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