- 博客/
kubernetes 集群中 控制平面 组件频繁发生重启的问题排查记录
作者
Johny
熟练的 云原生搬砖师
Table of Contents
环境说明#
- Kubernetes 版本: v1.19.6
- 使用操作系统: Centos-7.9.2009
现象说明#
最近在使用k8s集群的时候,发现集群变慢了许多,排查发现
master
节点中controller-manager
及scheduler
组件频繁的发生重启
排查记录#
抓取日志#
使用重定向将日志写入至文件中再慢慢分析 (一开始使用前台抓取,打印日志太长,超出终端的默认显示行)
kubectl logs -f kube-controller-manager-master01 -n kube-system >> controller.log
错误信息如下所示#
通过搜索引擎,有人说是etcd性能导致,重试使用了
此文档文档
进行了etcd的优化,没有什么效果。
检测网络及io#
安装工具#
yum install dstat iotop -y
iotop -oP # 检查 io
dstat -nf # 显示所有网络接口使用情况
dstat -df # 显示所有磁盘使用情况, 当接口过多时 可使用 "-N" 加指定的网口, "-D" 加磁盘
排除得到 io 占用高且被flanneld这个进程占用着
找到问题#
发现社区也有人反馈这个问题,但是目前暂没有人员回复
kubectl delete -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
ifconfig cni0 down
ip link delete cni0
ifconfig flannel.1 down
ip link delete flannel.1
rm -rf /var/lib/cni/
rm -f /etc/cni/net.d/*
systemctl restart kubelet
删除flannel后
各节点的io恢复正常,原因应该就是这个了,但是flannel组件不可缺少,得想个办法将它再次安装上才行。
更换版本#
检查正在使用的版本#
降级版本#
curl https://raw.githubusercontent.com/coreos/flannel/v0.13.0/Documentation/kube-flannel.yml|sed 's#10.244.0.0/16#172.20.0.0/16#g' | kubectl apply -f - # 我这里进行了替换子网,如没有修改默认的pod子网地址请直接使用下面语句即可
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.13.0/Documentation/kube-flannel.yml
watch kubectl get pod -n kube-system # 等待 pod 启动完成
启动完成后再次使用
iotop -oP
观察io是否异常, 确认正常后观察controller-manager
是否会再次发生重启kubectl logs -f kube-controller-manager-master01 -n kube-system > controller.log
绑定网卡#
降低 flannel 的版本后,还是会出现 io 较高的情况。 后测试出,是因为我的集群机器中
存在着多张网卡
,解决方法就是: 在 flannel 资源清单中添加一下--iface=ethX
来绑定一下网卡 ,这里就要求集群中每一个节点多存在
此网卡。
wget https://raw.githubusercontent.com/coreos/flannel/v0.13.0/Documentation/kube-flannel.yml
vim kube-flannel.yml
修改后的配置展示
containers:
- name: kube-flannel
image: quay.io/coreos/flannel:v0.13.0
command:
- /opt/bin/flanneld
args:
- --ip-masq
- --kube-subnet-mgr
- --iface=eth0
再次部署创建
kubectl apply -f kube-flannel.yml
执行后,没有再次出现 io 占用高的情况了
相关文章
Kind 部署本地k8s集群的使用记录
·326 字·1 分钟·
k8s
docker
devops
centos7
kind
部署 Devops 必备利器 OpenLdap
·953 字·2 分钟·
devops
openldap
centos7
Docker Quickstart Redis Server
·174 字·1 分钟·
docker
redis
centos7
Docker 部署多网口 openWrt 软路由
·810 字·2 分钟·
openwrt
linux
centos7
Docker 部署的 openWrt 软路由, 并解决无法与宿主机通信问题
·923 字·2 分钟·
fix
openwrt
n1
docker-compose
docker
openwrt