目录 部分常见问题处理 Coredns CrashLoopBackOff 导致无法成功添加工作节点的问题 添加工作节点时提示token过期 kubectl 执行命令报“The connection to the server localhost:8080 was refused” 网络组件flannel无法完成初始化 部分节点无法启动pod 最后 部分常见问题处理 结合我们上篇文章(链接:集群故障处理之处理思路以及听诊三板斧(三十三)的处理思路和手段,接下来我们就进行一些实践讲解。 Coredns CrashLoopBackOff 导致无法成功添加工作节点的问题 k8s集群安装完成之后,当我们添加工作节点时,可能会在长久的等待之中而无任何进展,这时可以使用以下命令来查看k8s各个服务的状态: kubectl get pods -n kube-system -o wide 初步诊断容器崩溃,我们需要进一步查看日志,使用“kubectl logs”: kubectl log -f coredns-5c98db65d4-8wt9z -n kube-system 这次我们获得了以下具体错误: 复制代码 github.com/coredns/coredns/plugin/kubernetes/controller.go:322: Failed to list *v1.Namespace: Get https://10.96.0.1:443/api/v1/namespaces?limit=500&resourceVersion=0: dial tcp 10.96.0.1:443: connect: no route to host 复制代码 解决方案: 这问题很有可能是防火墙(iptables)规则错乱或者缓存导致的,可以依次执行以下命令进行解决: 复制代码 systemctl stop kubelet systemctl stop docker iptables --flush iptables -tnat --flush systemctl start kubelet systemctl start docker 复制代码 添加工作节点时提示token过期 集群注册token的有效时间为24小时,如果集群创建完成后没有及时添加工作节点,那么我们需要重新生成token。相关命令如下所示: 复制代码 #生成token kubeadm token generate #根据token输出添加命令 kubeadm token create --print-join-command --ttl=0 复制代码 然后仅需复制打印出来的命令到工作节点执行即可。 kubectl 执行命令报“The connection to the server localhost:8080 was refused” 作为集群管理的核心,工作节点上的kubectl可能一上来就跪了,如下图所示: 出现这个问题的原因是kubectl命令需要使用kubernetes-admin的身份来运行,在“kubeadm int”启动集群的步骤中就生成了“/etc/kubernetes/admin.conf”。 因此,解决方法如下,将主节点中的【/etc/kubernetes/admin.conf】文件拷贝到工作节点相同目录下: 复制代码 #复制admin.conf,请在主节点服务器上执行此命令 scp /etc/kubernetes/admin.conf 172.16.2.202:/etc/kubernetes/admin.conf scp /etc/kubernetes/admin.conf 172.16.2.203:/etc/kubernetes/admin.conf 复制代码 然后分别在工作节点上配置环境变量: 复制代码 #设置kubeconfig文件 export KUBECONFIG=/etc/kubernetes/admin.conf echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile 复制代码 接下来,工作节点就正常了,如: 网络组件flannel无法完成初始化 网络组件flannel安装完成后,通过命令查看时一直在初始化状态,并且通过日志输出内容如下所示: kubectl get pods -n kube-system -o wide kubectl logs -f kube-flannel-ds-amd64-hl89n -n kube-system 具体错误日志为: 复制代码 Error from server: Get https://172.16.2.203:10250/containerLogs/kube-system/kube-flannel-ds-amd64-hl89n/kube-flannel?follow=true: dial tcp 172.16.2.203:10250: connect: no route to host 复制代码 这时,我们可以登录节点所在的服务器,使用以下命令来查看目标节点上的kubelet日志: journalctl -u kubelet -f 注意:journalctl工具可以查看所有日志,包括内核日志和应用日志。 通过日志,我们发现是镜像拉取的问题。对此,大家可以参考上文中镜像拉取的方式以及重命名镜像标签来解决此问题,当然也可以通过设置代理来解决此问题。 部分节点无法启动pod 有时候,我们部署了应用之后,发现在部分工作节点上pod无法启动(一直处于ContainerCreating的状态): 通过排查日志最终我们得到重要信息如下所示: NetworkPlugin cni failed to set up pod "demo-deployment-675b5f9477-hdcwg_default" network: failed to set bridge addr: "cni0" already has an IP address different from 10.0.2.1/24 这是由于当前节点之前被反复注册,导致flannel网络出现问题。可以依次执行以下脚本来重置节点并且删除flannel网络来解决: 复制代码 kubeadm reset #重置节点 systemctl stop kubelet && systemctl stop docker && rm -rf /var/lib/cni/ && rm -rf /var/lib/kubelet/* && rm -rf /var/lib/etcd && rm -rf /etc/cni/ && ifconfig cni0 down && ifconfig flannel.1 down && ifconfig docker0 down && ip link delete cni0 && ip link delete flannel.1 systemctl start docker 复制代码 执行完成后,重新生成token并注册节点即可,具体可以参考上文内容。 最后 在k8s集群的部署过程中或者过后,大家可能会遇到很多问题。这也是本地部署k8s集群遇到的最大的挑战质疑,因此本篇笔者讲述了问题处理思路和常见错误,希望能够给予大家帮助。 如果通过详细异常和和日志还是无法推断出具体错误,建议大家可以根据具体信息在“https://stackoverflow.com”网站上进行搜索,也可以在相关社交网站(比如github)和群里请教,不过请教前,请给出你的诊断步骤和详细的错误日志。 往期内容链接 Docker+ Kubernetes已成为云计算的主流(二十五) 容器化之后如何节省云端成本?(二十六) 了解Kubernetes主体架构(二十七) 使用Minikube部署本地Kubernetes集群(二十八) 使用kubectl管理k8s集群(二十九) 使用Kubeadm创建k8s集群之部署规划(三十) 使用Kubeadm创建k8s集群之节点部署(三十一) 集群故障处理之处理思路以及健康状态检查(三十二) 集群故障处理之处理思路以及听诊三板斧(三十三) 作者:雪雁 出处:http://www.cnblogs.com/codelove/ 沟通渠道:编程交流群<85318032> 产品交流群<897857351> 如果喜欢作者的文章,请关注【麦扣聊技术】订阅号以便第一时间获得最新内容。本文版权归作者和湖南心莱信息科技有限公司共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 静听鸟语花香,漫赏云卷云舒。 标签: k8s集群部分常见问题处理, Docker最全教程, Docker, 教程, 从理论到实战, k8s, 集群 好文要顶 关注我 收藏该文 雪雁 关注 - 65 粉丝 - 1011 +加关注 0 « 上一篇: 集群故障处理之处理思路以及听诊三板斧(三十三) posted @ 2019-09-05 15:16 雪雁 阅读(30) 评论(0) 编辑 收藏 刷新评论刷新页面返回顶部 注册用户登录后才能发表评论,请 登录 或 注册, 访问 网站首页。 【推荐】超50万C++/C#源码: 大型实时仿真组态图形源码 【活动】阿里云910会员节多款云产品满减活动火热进行中 【推荐】新手上天翼云,数十款云产品、新一代主机0元体验 【推荐】零基础轻松玩转华为云产品,获壕礼加返百元大礼 【推荐】华为IoT平台开发者套餐9.9元起,购买即送免费课程 相关博文: · k8s和k8s集群安装常见问题 · kubernetes集群搭建(7):常见问题及处理 · k8s集群(不推荐) · K8S集群安装 · k8s集群部署 公告 编程交流:编程交流 产品交流:https://www.cnblogs.com/codelove/p/11466217.html