CrashLoopBackOff、Reason: Get https://10.96.0.1:443/version: dial tcp 10.96.0.1:443: i/o timeout

CrashLoopBackOff、Reason: Get https://10.96.0.1:443/version: dial tcp 10.96.0.1:443: i/o timeout

Scroll Down

如果你的dashboard连接不到apiserver,且baidu、google的解决方法都不可用的话,那你可以直接跳转到本篇博客的最终解决方法

★ 刚搭建完k8s集群后,如果你发现集群的两个coreDNS状态是CrashLoopBackOff或其有频繁的restart记录,请看这篇博客https://www.ishells.cn/archives/coredns-crashloopbackoff

★ 安装kubernetes-dashboard之后发现其pod状态为CrashLoopBackOff 或 状态正常,浏览器却不能访问的时候,且发现此时dashboard的restart次数变成了1。这肯定是有问题的,所以我多用了几次get nodes与 logs,发现了如下报错:

Error while initializing connection to Kubernetes apiserver.

This most likely means that the cluster is misconfigured (e.g., it has invalid apiserver certificates or service account's configuration) or the --apiserver-host param points to a server that does not exist.

Reason: Get https://10.96.0.1:443/version: dial tcp 10.96.0.1:443: i/o timeout

Refer to our FAQ and wiki pages for more information: https://github.com/kubernetes/dashboard/wiki/FAQ

排错查看具体error原因:

# kubectl get pods -n kube-system -o wide 
# kubectl logs ………… --namespace=kube-system
# kubectl describe pod ………… -n kube-system

尝试了以下几种方法都未解决问题:

1、新建文件夹,用来存放自己创建的证书( 未成功 )

① 创建/certs文件夹并创建证书
② 卸载已经安装的k8s-dashboard
③ 重新安装dashboard

# mkdir /certs
# openssl req -nodes -newkey rsa:2048 -keyout certs/dashboard.key -out certs/dashboard.csr -subj "/C=/ST=/L=/O=/OU=/CN=kubernetes-dashboard"
# ls /certs
# openssl x509 -req -sha256 -days 365 -in certs/dashboard.csr -signkey certs/dashboard.key -out certs/dashboard.crt
# kubectl create secret generic kubernetes-dashboard-certs --from-file=certs -n kube-system

# vim kubernetes-dashboard.yaml
image.png

# 删除原有的dashboard的pod
kubectl delete deployment kubernetes-dashboard --namespace=kube-system 
kubectl delete service kubernetes-dashboard  --namespace=kube-system 
kubectl delete role kubernetes-dashboard-minimal --namespace=kube-system 
kubectl delete rolebinding kubernetes-dashboard-minimal --namespace=kube-system
kubectl delete sa kubernetes-dashboard --namespace=kube-system 
kubectl delete secret kubernetes-dashboard-certs --namespace=kube-system
kubectl delete secret kubernetes-dashboard-csrf --namespace=kube-system
kubectl delete secret kubernetes-dashboard-key-holder --namespace=kube-system
重新创建dashboard
# kubectl apply -f kubernetes-dashboard.yaml

2、修改kubernetes-dashboard.yaml中的--apiserver-host参数

① 通过logs查看dashboard的pod具体的报错来选择,注释kubernetes-dashboard.yaml的--apiserver-host参数自定义--apiserver-host参数
② 卸载已经安装的k8s-dashboard
③ 重新安装dashboard

通过指定kubenetes api server host而不让dashboard自动去寻找apiserver的位置
# vim kubernetes-dashboard.yaml

image.png

按上面的步骤,删除已经建立的dashboard的pod并重新创建dashboard

3、注释kubernetes-dashboard.yaml中特定配置信息

① 注释yaml文件中的特定行
② 卸载已经安装的k8s-dashboard
③ 重新安装dashboard

如果你没有对master节点做污点操作的话,请注意kubernetes-dashboard.yaml中的这几行信息:

#Comment the following tolerations if Dashboard must not be deployed on master
tolerations:
- key: node-role.kubernetes.io/master
  effect: NoSchedule

image.png

上面这三行的作用是:

使得pod不会分配到到master节点, 并且kubeadm部署的apiserver中启用的验证方式为Node和RBAC, 且关闭insecure-port。所以我尝试注释这几行来解决连接不上apiserver的问题。

最终解决:

问题:

① logs查看具体的出错原因,并发现原因是dial tcp 10.96.0.1:443: i/o timeout

② 看到原因是dashboard的工作节点无法连接API Server且master的api server的pod工作正常

原因:

① 我的问题就是在使用kubeadm初始化集群的时候没有指定pod-network-cidr,这样的话就没确保主机/主网络的IP在所引用的子网中。

即如果你的网络运行在192.168..,就使用10.0.0.0/16。如果您的网络是10.0..,就使用192.168.0.0/16。

也就是说,在使用”kubeadm init“命令初始化master节点时,在给网络插件分配CIDR网段时,自己环境中(master节点和工作节点)的ip地址不能够跟网络插件的网段重合!(如官网所说)
image.png

解决:

① 重置已经创建的k8s集群(master、node)
② 初始化集群master,指定pod网络的CIDR,并加入node节点
③ master下载kubernetes-dashboard.yaml并部署访问

# kubeadm reset
# kubeadm init --apiserver-advertise-address 192.168.52.100  --pod-network-cidr=10.244.0.0/16
# 192.168.52.100是master的IP
# …………

重新初始化集群遇到的问题都可以参考这里:https://www.ishells.cn/archives/k8s-solve-ip-changed

参考来源:
1、https://github.com/coredns/coredns/issues/2325
2、https://www.jianshu.com/p/650c1082f650
3、https://www.jianshu.com/p/f9a2bd82e368
4、https://blog.csdn.net/u011663005/article/details/87937800
5、https://medium.com/@cminion/quicknote-kubernetes-networking-issues-78f1e0d06e12