k8s集群安装问题及解决
新手安装k8s集群常见问题以及解决
k8s集群安装请参考我的另外两篇博文
单master集群安装
多master集群安装
- 网路插件问题
安装完网络插件后coredns pod状态一直处于pending状态,coredns错误一般都是和网络插件是否正常有关
kubectl logs 网络插件pod名 -n kube-system 查看插件启动日志,如有以下报错
Failed to list *v1.Service: Get https://10.96.0.1:443/api/v1/services?limit=500&resourceVersion=0: d,可按如下步骤操作解决
systemctl stop kubelet
systemctl stop docker
iptables --flush
iptables -tnat --flush
systemctl start kubelet
systemctl start docker
-
修改hostname问题
安装好kubelet过后,修改了机器的hostname,systemctl status kubelet -l 发现kubelet一直在寻找之前的hostname而找不到映射关系启动失败,需要修改/etc/systemd/system/kubelet.service.d/10-kubeadm.conf配置文件中–hostname-override此kubelet配置项为现在的hostname重启kubelet systemctl restart kubelet -
cni可执行文件误删
/opt/cni/bin 为安装集群时产生,如果误删会导致kubelet运行失败,可以执行从其他机器scp 过来即可然后重启kubelet即可 systemctl restart kubelet -
pod出网问题
集群安装完成后部署应用发现pod无法通过service名以及k8s集群域名访问其他pod服务,可以尝试删除coredns pod 让其被重启拉起(coredns负责集群内部dns域名解析)
删除所有coredns:
kubectl get pods -n kube-system | grep coredns | awk '{print $1}' | xargs kubectl delete pod -n kube-system
集群安装完成发现pod无法出网访问集群其他node所在内网网段或者外网,可能由于pod 网段和部署网络插件网络不一致导致,有两种解决办法
集群不是很大,node数量不是很多,可以直接添加iptables规则使得pod出网
iptables -t nat -I POSTROUTING -s 10.244.0.0/16 -j MASQUERADE
10.224.0.0./16为实际pod网段,注意更换
集群具有一定规模,可以卸载网络插件,重新安装,步骤参考如下
##删除集群相关资源
kubectl delete -f flannel.yaml
##卸载网络插件网卡(flannel为例)
ifconfig flannel.1 down && ip link delete flannel.1
##删除相关文件
rm -rf /run/flannel && rm -rf /var/run/flannel &&rm -rf /var/lib/cni && rm -rf /etc/cni/net.d
##重新部署flannel网络插件
kubectl apply -f flannel.yaml
##重启docker,kubelet
systemctl restart kubelet docker
##检查相关pod是否在正确网段以及历史pod是否为正确网段,不是可以删除相关pod让其被重新拉起
pod以及service网段至关重要修改比较麻烦一定要在集群安装之前最好规划以及和现有内网的区分
- docker家目录设置问题
集群安装结束更换docker家目录,可以根据一下步骤操作
systemctl stop docker kubelet
mkdir /data/docker
mv /var/lib/docker/* /data/docker/
ln -s /data/docker /var/lib/docker/
systemctl start docker
systemctl start kubelet
如果集群安装失败无法定位问题所在,可以将集群安装过程中产生的文件清理干净,切记一定要清理干净,否则影响下次安装,以下为清理步骤
集群中每台机器都执行
kubeadm reset
##删除相关文件夹
rm -rf /var/lib/etcd && rm -rf /run/flannel && rm -rf /var/run/flannel && rm -rf /var/lib/kubelet/* && rm -rf /var/lib/dockershim && rm -rf /var/run/kubernetes && rm -rf /var/lib/cni && rm -rf /etc/cni/net.d && rm -rf /root/.kube && rm -rf /etc/kubernetes && rm -rf /etc/systemd/system/kubelet.service.d/*
##卸载网络插件虚拟网卡
calico网卡:
ifconfig cni0 down && ip link delete cni0
flannel网卡:
ifconfig flannel.1 down && ip link delete flannel.1
##清理iptables以及ipvs规则
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X && ipvsadm --clear
##删除所有相关容器
docker ps -a | grep -v IMA | awk '{print $1}' | xargs docker rm -f
##重启docker,kubelet
systemctl restart docker kubelet
集群清理完毕后,可以重新安装集群
单master从以下步骤开始
kubeadm config print init-defaults > kubeadm-config.yaml
多master从步骤3开始即可
单master以及高可用集群安装参考开篇链接
更多推荐
所有评论(0)