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以及高可用集群安装参考开篇链接

Logo

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

更多推荐