文章目录
Kubernetes 踩坑记录 (基于v1.19.2) —20201117
前言
在测试环境部署了一套 v1.19.2 的kubernetes 集群,可参考博客
记一次实操部署Kubernetes_v1.19.2
在调测熟悉的过程中,有些踩过的坑进行记录;
1/ 新部署kubernets 集群,配置flannel cni 后,pod 访问 pod 不通;
新版的docker版本中,会将iptables 中 FORWARD 链 默认策略调为 DROP;会导致pod 通信异常,同node 中pod 访问不通,或跨node pod 通信访问不通;需要将该FORWADR 链策略修改为 ACCEPT;
修改命令:iptables -P FORWARD ACCEPT
2/ 修改flannel type 类型
从vxlan 修改 为 ipip 后,会在node 和 pod 上下发flannel.ipip 设备和pod 内 tun设备;
直接修改完,设备口不会下掉;
需要重启机器,才会下掉对应的设备口;
目前看到的flannel 修改type类型的资料为不推荐在运行中的集群进行修改;----需要明确具体应该如何修改;
3/ 重启master节点后kubelat 没有自动拉起;
报错截图:
关键报错信息:
Nov 17 21:12:04 master kubelet: F1117 21:12:04.199153 3161 server.go:265] failed to run Kubelet: misconfiguration: kubelet cgroup driver: "systemd" is different from docker cgroup driver: "cgroupfs"
如字面意思,该报错为docker 和 kubernetes 默认配置文件中配置的cgroup配置不一致,导致启动报错;
docker 对应配置:
vi /lib/systemd/system/docker.service
docker info | grep -i cgroup
kubelet 对应配置:
vim /var/lib/kubelet/config.yaml
其中相关配置项为(cgroupDriver 这项需要修改为systemd):
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd
修改后重启服务:
systemctl daemon-reload
systemctl restart docker
systemctl restart kubelet
相关方法参考至如下链接:
https://www.cnblogs.com/hellxz/p/kubelet-cgroup-driver-different-from-docker.html
https://juejin.im/post/6844903689572843534
4/ 重启后 nginx pod 自动拉起失败报错;
第一个报错为 加载对应cni 配置文件失败;查看配置文件正常存在,删除pod 重建后,规避该错误;
第二个报错:pod 镜像pull 失败;
本次测试环境,默认还是去docker hub pull 镜像;由于网络原因导致pull失败;但是之前已经将对应镜像pull 至本地,docker image ls 可查看到本地已有nginx image;
kubectl edit deployment nginx-nets -o yaml
查看对应nginx delployment yaml 配置,发现默认有加字段:imagePullPolicy: Always
查看官网该字段解释为:该字段配置Always 后,每次启动pod都会拉取镜像;将该字段修改为Never 后,使用本地镜像即可成功拉起pod ;