网站备案和不备案有什么区别,微信同城小程序开发教程,高端网站建设kgwl,备案网站名称怎么写目录部分常见问题处理Coredns CrashLoopBackOff 导致无法成功添加工作节点的问题添加工作节点时提示token过期kubectl 执行命令报“The connection to the server localhost:8080 was refused”网络组件flannel无法完成初始化部分节点无法启动pod最后部分常见问题处理结合我们上… 目录部分常见问题处理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?limit500amp;resourceVersion0: 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 lt;tokengt; --print-join-command --ttl0然后仅需复制打印出来的命令到工作节点执行即可。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 gt;gt; ~/.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?followtrue: 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 amp;amp; systemctl stop docker amp;amp; rm -rf /var/lib/cni/ amp;amp; rm -rf /var/lib/kubelet/* amp;amp; rm -rf /var/lib/etcd amp;amp; rm -rf /etc/cni/ amp;amp; ifconfig cni0 down amp;amp; ifconfig flannel.1 down amp;amp; ifconfig docker0 down amp;amp; ip link delete cni0 amp;amp; 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集群之节点部署三十二集群故障处理之处理思路以及健康状态检查三十三集群故障处理之处理思路以及听诊三板斧三十四