现象1:IPVS:rr:TCP 10.68.0.2:53 - no destination available

  • 节点状态:NotReady
  • 服务器不断打印:

IPVS:rr:TCP 10.68.0.2:53 - no destination available
IPVS:rr:UDP 10.68.0.2:53 - no destination available
猜想:
ipvs的ip没有轮询到

操作

  1. 查看ipvs里面是否有这个ip
ipvsadm -Ln | grep 10.68.0.2

有返回结果,说明ipvs里面有这个ip

  1. 查看svc中是否有这个ip
kubectl get svc -A | grep 10.68.0.2

有返回结果,说明有对应这个ip的svc

  1. 删除对应svc资源
kubectl delete svc -n kube-system kube-dns
  1. 重启服务器

重启服务器后服务器正常,但此时k8s集群缺少kube-system名称空间下kube-dns的svc资源

  1. 手动执行脚本进行创建缺少的svc资源
kubectl apply -f /etc/kubeasz/clusters/k8s-01/yml/coredns.yaml

等待一段时间后,集群节点状态以及服务恢复正常

现象2:cannot allocate memory

  • pod状态:ContainerCreating
  • 节点状态:Ready
  • describe pod:

image.png

Events:
  Type     Reason                    Age                From                              Message
  ----     ------                    ----               ----                              -------
  Normal   Scheduled                 <unknown>          default-scheduler                 Successfully assigned common-szzwy-dev/cloudeasy-billdata-adapter-5fd4cf6775-wnv7d to cbp-dy-dev-k8snode-0003
  Warning  FailedCreatePodContainer  13s (x5 over 64s)  kubelet, cbp-dy-dev-k8snode-0003  unable to ensure pod container exists: failed to create container for [kubepods besteffort podd1bd0393-4c48-4e23-a839-7c0e84ba8396] : mkdir /sys/fs/cgroup/memory/kubepods/besteffort/podd1bd0393-4c48-4e23-a839-7c0e84ba8396: cannot allocate memory
  • 节点实际内存:

image.png

Kubernetes中Cgroup泄露的问题(Cgroup文档:https://www.kernel.org/doc/Documentation/cgroup-v1/memory.txt
绝大多数的kubernetes集群都有这个隐患。只不过一般情况下,泄漏得比较慢,还没有表现出来而已。
一个pod可能泄漏两个memory cgroup数量配额。即使pod百分之百发生泄漏, 那也需要一个节点销毁过三万多个pod之后,才会造成后续pod创建失败。
一旦表现出来,这个节点就彻底不可用了,必须重启才能恢复

解决

重启机器
参考:http://www.manongjc.com/detail/64-ivqsbsdthtwejct.html

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐