CentOS虚拟机kubeadm集群中Kubernetes无法获取Ingress控制器日志求助
解决Kubectl无法获取Ingress Controller Pod日志(10250端口连接超时)的问题
你的问题核心在于kubectl尝试通过IPv4地址连接节点192.168.56.34的10250端口时超时,而netstat显示该端口仅在IPv6(tcp6)上监听——这说明kubelet服务当前只绑定了IPv6地址,导致IPv4请求无法到达。下面是一步步的解决方法:
1. 确认kubelet的监听配置
先在节点192.168.56.34上检查kubelet的启动参数,看是否明确指定了监听地址:
ps aux | grep kubelet
如果输出里没有--address或--listen-address参数,kubelet默认会监听[::](所有IPv6地址),但不会主动监听IPv4的10250端口,这就是连接超时的根源。
2. 修改kubelet配置,强制监听IPv4
kubeadm部署的集群中,kubelet的systemd配置通常在/etc/systemd/system/kubelet.service.d/10-kubeadm.conf。编辑这个文件:
vi /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
找到KUBELET_EXTRA_ARGS行(没有的话可以新增),添加--address=0.0.0.0参数,让kubelet同时监听所有IPv4和IPv6地址:
Environment="KUBELET_EXTRA_ARGS=--address=0.0.0.0"
3. 重启kubelet服务
保存配置后,重新加载systemd并重启kubelet:
systemctl daemon-reload systemctl restart kubelet
4. 验证端口监听状态
再次执行netstat命令,确认10250端口同时监听IPv4和IPv6:
netstat -tulpn | grep 10250
正常情况下会看到类似输出:
tcp 0 0 0.0.0.0:10250 0.0.0.0:* LISTEN 1234/kubelet tcp6 0 0 :::10250 :::* LISTEN 1234/kubelet
额外检查:防火墙规则
如果以上步骤完成后还是超时,检查节点的防火墙是否允许10250端口的入站流量:
- 对于firewalld:
firewall-cmd --add-port=10250/tcp --permanent firewall-cmd --reload
- 对于iptables:
iptables -A INPUT -p tcp --dport 10250 -j ACCEPT
完成这些操作后,再尝试执行kubectl logs命令,应该就能正常获取Pod日志了。
内容的提问来源于stack exchange,提问作者BOUKANDOURA Mhamed
相关产品推荐
相关产品推荐

