


情况一:token过期问题
如果是token过期问题,重新生成一下token在加入进去就行了
重新生成一个永不过期的token:
kubeadm token create --ttl 0
把初始化生成命令的token换成这个新生成的即可
重新生成一个永不过期的token并且打印加入命令:
kubeadm token create --ttl 0 --print-join-command
情况二:多网卡,监听ip地址错误
比如我们使用virtual box来安装centos虚拟机,想要虚拟机固定Ip,而且能够访问外网,一半需要配置两张网卡,结果执行k8e初始化的时候,没有去指定要使用的ip地址,他会默认是不到第一个网卡。监听到的就是第一个网卡的地址。
比如如果监听到的地址是10.0.2.15就是错的
因为这个10.0.2.15根本不该出现在这里!VirtualBox会默认给每个虚拟机创建一个NAT网卡,这个网卡的IP就是10.0.2.15,所有的虚拟机都是这个IP,互相之间不能通过这块NAT网卡互联。所以他默认监听到这个网卡的地址就是不对的。(我虚拟机默认开了两个网课,一个NAT一个是桥接网络,固定Ip配置的是桥接网络我们希望k8s监听的是桥接网络这个地址)
自己测试一下telnet加入的ip与端口访问就是拒绝的怎么能够加入进去嘛。
尝试解决问题
解决方法就是重置一下k8s初始化,在重新初始化一次
重置k8s初始化
kubeadm reset
重新执行初始化
kubeadm init \
--apiserver-advertise-address=192.168.12.219 \
--image-repository registry.aliyuncs.com/google_containers
执行kubeadm init 最好指定一下cluster Ip 网段和pod的IP网段,不然后续安装flannel或者calico时,master和node之前的网络通信可能会有异常,指定网段时,选择适合自己的网段,避免出现ip地址冲突。
—pod-network-cidr=10.244.0.0/16可以指定pod的网络,多网卡下还是指定一下最好
所以最好先这样初始化
kubeadm init \
--apiserver-advertise-address=192.168.12.244 \
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \
--kubernetes-version v1.18.0 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16
初始化的时候最好设置一下,pod,service网段这些,还有监听使用的ip地址这些。
不然如果有多网卡,不设置监听的ip,识别到错误的网卡,就会出现错误的ip,你集群都加入不进来的。还有不设置pod,service网段这些你可能后面部署应用后通信会有问题,比如使用了NodePort类型的service,只有工作节点能访问,master节点访问不到(-。-坑了我很久的一个问题)。当然也可以在配置文件中设置,就不用再kubeadm init中给参数了
安装上面的方法执行成功后是可以成功加入了,但是执行kubectl get nodes会报错:
Unable to connect to the server: x509: certificate is valid for 10.96.0.1, 192.168.12.219, not 10.0.2.15
我估计也是因为我这里多网卡的问题。
注意看错误提示中的最后一句Unable to connect to the server: x509: certificate is valid for 10.96.0.1, 192.168.12.219, not 10.0.2.15是说not 10.0.2.15,也就是没有这个ip地址,这个ip地址上面也有提到是第一个网卡的ip地址,所以我们按照这个要求,又重置一下,然后在初始化的时候用—apiserver-cert-extra-sans=10.0.2.15,指定一下他说的缺少的这个地址。
两边都执行一下重置,因为刚刚加入成功了的
kubeadm reset
然后在执行一次初始化,多加一个配置就是刚刚上面列的,它提示少什么ip就添加什么ip
kubeadm init \
--apiserver-advertise-address=192.168.12.219 \
--apiserver-cert-extra-sans=10.0.2.15 \
--image-repository registry.aliyuncs.com/google_containers
执行也成功了:
子节点也加入成功了,but访问集群还是报错:
Unable to connect to the server: x509: certificate signed by unknown authority (possibly because of “crypto/rsa: verification error” while trying to verify candidate authority certificate “kubernetes”)
可以使用如下命令查看证书:
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text
可以看到我们刚刚增加的ip地址其实已经成功加入进来了的:
是因为我们重置的时候没有删除以前的配置,所以有这个问题
删除在从新建一下即可
先删除
rm -rf /root/.kube/config
然后在执行:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
或者像这个一样:https://blog.csdn.net/woay2008/article/details/93250137
执行kubeadm reset命令后在执行一下删除相关配置命令:
rm -rf $HOME/.kube
我用的第一种是成功了的
把flannel组件下载一下,等一段时间,节点就ready了
情况三:时间同步问题
设置时间同步即可
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)