k8s加入集群一直卡在Running pre-flight checks
情况一:token过期问题
如果是token过期问题,重新生成一下token在加入进去就行了
重新生成一个永不过期的token:
kubeadm token create --ttl 0
把初始化生成命令的token换成这个新生成的即可
重新生成一个永不过期的token并且打印加入命令:
kubeadm token create --ttl 0 --print-join-command
情况二:多网卡
virtualbox默认是NAT模式
注意不同模式的区别:
NAT模式:虚拟机之间不可以互通,可以联网,但宿主机无法访问虚拟机
NAT网络模式:虚拟机之间可以互通可以联网,但宿主机无法访问虚拟机
仅主机网络:无网关所以无法连接外部网络,相当于建立一个局域网,只可内部通信。宿主机与虚拟机互通,虚拟机与虚拟机互通,与外网不互通
那么,在建立集群的时候kubeadm init
没有制定api的地址,就会导致kubeadm
选择默认网卡,如果你的默认网卡不能在集群中互通,那么就无法和api-server通信
worker节点上执行的这个命令会向master发送命令,如无法通信,则会一直卡着
kubeadm join MASTER_IP:6443 --token TOKEN --discovery-token-ca-cert-hash sha256:HASH_STRING
解决方案1:更改网卡模式为NAT网络模式
解决方案2:初始化添加参数
kubeadm reset
手动指定apiserver-advertise-address
kubeadm init \
--apiserver-advertise-address=192.168.12.219
重新执行命令
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
情况三:时间同步问题
设置时间同步即可