kubeadm创建k8s集群一直失败排查
背景
某环境使用kubeadm创建3个master节点的高可用集群但是一直失败。
img
排查
1 .从日志可以看出 10.197.145.24为集群的kube-api的地址使用kubeadmjoin命令想把10.197.145.25节点添加到集群时报错报错提
示/etc/kubernetes/kubelet.conf /etc/kubernetes/bootstrap-kubelet.conf存在貌似是节点残留文件导致节点join失败。
2.使用清理脚本清理10.197.145.25的残留从新添加节点发现错误仍然存在且报错内容一样清理脚本如下
#!/bin/bashrm -rf /etc/kubernetessystemctl stop kubelet 2>/dev/nulldocker rm -f $(docker ps -aq) 2>/dev/nullsystemctl stop docker 2>/dev/nullip link del cni0 2>/etc/nullfor port in 80 2379 6443 8086 {10249. .10259} ; dofuser -k -9 ${port}/tcpdonerm -fv /root/.kube/configrm -rfv /var/lib/kubeletrm -rfv /var/lib/cnirm -rfv /etc/cnirm -rfv /var/lib/etcdrm -rfv /var/lib/postgresql /etc/core/token /var/lib/redis /storage /chart_storagesystemctl start docker 2>/dev/null
3.于是检查10.197.145.25节点情况docker和kubelet运行情况
• systemctl status docker
该节点docker进程为active和running的
• systemctl status kublet
节点kubelet进程为inactive状态
4.通过syste mctl restart kubelet重启kubelet进程发现启动后kubelet进程启动后一会后进程退出。
5.检查节点的message日志发现kubelet有如下报错kubelet: F0727 11:39:07.530805 23779 docker_service.go:414] Streaming server stopped unexpectedly: listen tcp
172.0.0.1:0: bind: cannot assign requested address
image-20200731221748691
1 . google上述错误发现如下链接
Minikube Start Fai lure
检查该节点的/etc/hosts,确实发现没有localhost的解析文件了。经咨询得知客户为了配置一个域名的自定义解析采用了echo “1.2.3.4 a.b.co m” > /etc/hosts的操作导致/etc/hosts中localhost解析被清空。
解决
参照https://coding-stream-of-consciousness.com/2020/01/15/minikube-start-fai lure-streaming-server-stopped-cannot-assign-requested-address/修复方式我们在/etc/hosts文件中增加localhost解析后 kubelet启动正常了节点添加成功。
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
: :1 localhost localhost.localdomain localhost6 localhost6.localdomain6
后记
1 . /etc/hosts中localhost的回环地址解析绝大多数应用都会依赖因此生产环境绝对不能删除。
2.在使用kubeadm创建k8s集群时进行必备条件的checkl ist检查常见检查条件如下
• 内核模块
须加载iptable_nat br_netfi lter内核模块
• 内核参数net.ipv4.ip_forward = 1net.bridge.bridge-nf-call-iptables = 1net.bridge.bridge-nf-call-arptables = 1
• 关闭sel inux
参照官方文档 https://kubernetes. io/docs/tasks/configure-pod-container/security-context/ 新版本的kubernetes可以开启sel inux但是sel inux配置很复杂开启sel inux时 docker可能无法创建出容器。除非安全要求很严格的场景一般情况建议关闭。
• 关闭节点swap
默认开启swap会导致kubelet无法启动
• 时间同步节点时区统一
建议时区设置为Asia/Shanghai
• 防火墙设置kubernetes组件运行需要的端口须保持开放如6443 2379 2380等。
• /etc/hosts文件
所有服务器可以通过hostname解析成ip 可以将localhost解析成127.0.0.1 同时hosts文件内不能有重复的hostname。
• /tmp/权限
/tmp目录的权限是777
• 集群全部节点安装socat软件包socat不仅kubeadm创建集群需要 helm使用时也需要。
• iptablesiptables FORWARD链为ACCEPTiptables -P FORWARD ACCEPT
在刚才更新Vultr 新年福利文章的时候突然想到前几天有网友问到自己有在Vultr 注册账户的时候无法用支付宝付款的问题,当时有帮助他给予解决,这里正好顺带一并介绍整理出来。毕竟对于来说,虽然使用的服务器不多,但是至少是见过世面的,大大小小商家的一些特性特征还是比较清楚的。在这篇文章中,和大家分享如果我们有在Vultr新注册账户或者充值购买云服务器的时候,不支持支付宝付款的原因。毕竟我们是知道的,...
在上个月的时候也有记录到 NameCheap 域名注册商有发布域名转入促销活动的,那时候我也有帮助自己和公司的客户通过域名转入到NC服务商这样可以实现省钱续费的目的。上个月续费转入的时候是选择9月和10月份到期的域名,这不还有几个域名年底到期的,正好看到NameCheap商家再次发布转入优惠,所以打算把剩下的还有几个看看一并转入进来。活动截止到9月20日,如果我们需要转入域名的话可以准备起来。 N...
妮妮云的来历妮妮云是 789 陈总 张总 三方共同投资建立的网站 本着“良心 便宜 稳定”的初衷 为小白用户避免被坑妮妮云的市场定位妮妮云主要代理市场稳定速度的云服务器产品,避免新手购买云服务器的时候众多商家不知道如何选择,妮妮云就帮你选择好了产品,无需承担购买风险,不用担心出现被跑路 被诈骗的情况。妮妮云的售后保证妮妮云退款 通过于合作商的友好协商,云服务器提供2天内全额退款到网站余额,超过2天...