Vagrant部署K8s主节点时Flannel安装遇6443端口连接拒绝问题
Vagrant部署Debian 11 Kubernetes集群时Flannel安装遇6443端口连接拒绝问题排查
问题概述
在Vagrant部署的Debian 11虚拟机集群中安装Flannel Pod网络时,持续出现6443端口连接拒绝错误,尝试Stack Overflow上多数解决方案后仍未解决,kmaster节点始终处于NotReady状态。
环境配置细节
- kmaster虚拟机的
/etc/hosts内容:
127.0.0.1 localhost 127.0.0.2 bullseye ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters 127.0.1.1 kmaster kmaster 192.168.56.10 kmaster
- $IP变量通过
hostname -I | awk '{print $2}'获取,值为192.168.56.10;使用自定义TOKEN,主机名为kmaster - kubeadm初始化命令:
kubeadm init --apiserver-advertise-address=$IP --token="$TOKEN" --pod-network-cidr=10.244.0.0/16
- 生成的
/etc/kubernetes/admin.conf内容:
apiVersion: v1 clusters: - cluster: certificate-authority-data: [...] server: https://192.168.56.10:6443 name: kubernetes contexts: - context: cluster: kubernetes user: kubernetes-admin name: kubernetes-admin@kubernetes current-context: kubernetes-admin@kubernetes kind: Config preferences: {} users: - name: kubernetes-admin user: client-certificate-data: [...] client-key-data: [...]
执行步骤
kubeadm初始化后,执行以下操作:
mkdir -p $HOME/.kube cp /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config mkdir -p /home/vagrant/.kube cp /etc/kubernetes/admin.conf /home/vagrant/.kube/config sudo chown vagrant:vagrant /home/vagrant/.kube/config # 生成的配置文件权限: # -rw------- 1 root root 5641 Jul 16 04:35 /root/.kube/config # -rw------- 1 vagrant vagrant 5641 Jul 16 04:35 /home/vagrant/.kube/config export KUBECONFIG=/home/vagrant/.kube/config kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml systemctl enable kubelet service kubelet restart
错误信息
执行kubectl apply时反复出现:
kmaster: unable to recognize "https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml": Get "https://192.168.56.10:6443/api?timeout=32s": dial tcp 192.168.56.10:6443: connect: connection refused
切换KUBECONFIG指向/root/.kube/config问题依旧。
执行kubectl get nodes结果:
vagrant@kmaster:~$ kubectl get nodes NAME STATUS ROLES AGE VERSION kmaster NotReady control-plane 81s v1.24.3
排查建议
检查API Server状态
- 查看API Server日志:
journalctl -u kube-apiserver -f,排查启动失败原因(如证书错误、etcd连接失败、端口冲突) - 确认6443端口监听状态:
netstat -tulpn | grep 6443,确保端口被kube-apiserver占用
- 查看API Server日志:
修复/etc/hosts冲突
/etc/hosts中同时存在127.0.1.1 kmaster和192.168.56.10 kmaster,可能导致API Server绑定到本地回环地址而非指定的集群IP- 注释掉
127.0.1.1 kmaster一行,然后重启kube-apiserver和kubelet
验证kubeadm初始化参数
- 确认
--apiserver-advertise-address指定的IP为集群通信可用IP,可手动指定而非依赖变量:kubeadm init --apiserver-advertise-address=192.168.56.10 --token="$TOKEN" --pod-network-cidr=10.244.0.0/16
- 确认
检查kubelet运行状态
- 查看kubelet状态:
systemctl status kubelet - 查看kubelet日志:
journalctl -u kubelet -f,排查是否存在无法连接API Server或启动组件失败的信息
- 查看kubelet状态:
检查网络与防火墙
- 验证192.168.56.10在本机可ping通
- 检查Debian防火墙规则:
ufw status,若6443端口被禁止,执行ufw allow 6443/tcp开放端口
确认版本兼容性
- 当前Kubernetes版本为v1.24.3,需确保使用的Flannel配置与该版本兼容,建议使用适配v1.24的Flannel部署文件
内容的提问来源于stack exchange,提问作者Marc Le Bihan
相关产品推荐
相关产品推荐

