AWS EC2实例配置Kubernetes主从节点Slave加入报错求助
解决Slave节点无法加入Kubernetes集群的问题
关于kubectl get pods的错误说明
执行kubectl get pods出现The connection to the server localhost:8080 was refused属于正常现象——Slave节点尚未成功加入集群,本地未配置有效的kubeconfig文件,无需提前处理,待节点加入集群后再配置即可。
重点排查join超时问题
net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)错误的核心原因是Slave节点无法访问Master节点的API Server端口(6443),或Master节点API Server未正常运行,按以下步骤逐一排查:
1. 检查AWS EC2安全组配置
- 确保Master节点的安全组允许Slave节点的私有IP/网段访问6443端口(TCP协议)
- 确认Slave节点的安全组允许出站访问Master节点的6443端口
- 若使用AWS默认VPC,需保证主从节点在同一安全组,或安全组规则互信
2. 验证Master节点API Server状态
在Master节点执行以下命令,确认API Server正常运行:
# 查看kube-apiserver pod状态 kubectl get pods -n kube-system | grep kube-apiserver # 检查6443端口监听情况 ss -tulpn | grep 6443
若kube-apiserver未运行,查看kubelet日志排查问题:
journalctl -u kubelet -f
必要时重新执行kubeadm init初始化Master节点。
3. 测试主从节点网络连通性
在Slave节点执行以下命令,验证网络可达性:
# 测试Master节点私有IP连通性 ping 172.31.25.122 # 测试6443端口连通性 telnet 172.31.25.122 6443 # 或用curl验证 curl -v https://172.31.25.122:6443
若网络不通,检查EC2实例子网配置、路由表是否正常。
4. 修复Slave节点cgroup警告
虽然missing optional cgroups: blkio是警告,但修复可避免潜在问题:
# 启用blkio cgroup echo "GRUB_CMDLINE_LINUX_DEFAULT=\"cgroup_enable=memory swapaccount=1 cgroup_enable=blkio\"" >> /etc/default/grub update-grub reboot
5. 重新执行join命令
完成以上排查修复后,重新执行Master生成的join命令:
kubeadm join 172.31.25.122:6443 --token ioewww.jrqwngf1t6ji94yp \ --discovery-token-ca-cert-hash sha256:de6116a51a8cae8b128f311d08ba47b2c381bd97403aae8da2a062cf89c83cb3
6. 配置Slave节点kubeconfig
节点成功加入后,配置本地kubeconfig:
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/kubelet.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
此时执行kubectl get pods即可正常连接集群。
内容的提问来源于stack exchange,提问作者Teja
相关产品推荐
相关产品推荐

