kubectl logs执行后挂起并触发I/O超时错误的问题求助
问题排查与解决
问题现象
执行kubectl logs nginx时挂起后报错:
ubuntu@ip-172-31-12-195:~$ kubectl logs nginx Error from server: Get "https://172.31.6.112:10250/containerLogs/default/nginx/nginx": dial tcp 172.31.6.112:10250: i/o timeout
集群Pod信息:
ubuntu@ip-172-31-12-195:~$ kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx 1/1 Running 0 62m 192.168.43.76 ip-172-31-6-112 <none> <none>
排查方向及解决办法
1. 控制节点到工作节点的10250端口连通性问题
172.31.6.112:10250是kubelet的API端口,控制平面需通过该端口获取容器日志:
- 在执行kubectl的控制节点(ip-172-31-12-195)上测试端口连通性:
nc -zv 172.31.6.112 10250 # 或 telnet 172.31.6.112 10250 - 如果测试失败,先验证节点间基础网络:
ping 172.31.6.112
2. 防火墙/安全组拦截
- 工作节点本地防火墙:登录工作节点ip-172-31-6-112,检查iptables规则是否允许10250端口入站:
若没有允许规则,添加对应规则:sudo iptables -L -n | grep 10250sudo iptables -A INPUT -p tcp --dport 10250 -j ACCEPT - 云环境安全组:如果是云厂商集群,检查工作节点安全组是否开放10250端口给控制节点IP段。
3. kubelet服务异常或配置错误
- 登录工作节点ip-172-31-6-112,检查kubelet运行状态:
若服务未运行或异常,重启kubelet:sudo systemctl status kubeletsudo systemctl restart kubelet - 检查kubelet配置,确认监听地址是否允许控制节点访问:
查看配置文件(通常路径为/var/lib/kubelet/config.yaml或/etc/kubernetes/kubelet.conf),确保address字段设置为0.0.0.0或节点内网IP,而非仅本地回环地址。
4. 网络策略或CNI插件问题
- 检查当前命名空间的网络策略是否阻断控制平面到节点的通信:
如有限制策略,调整规则以允许控制节点IP访问工作节点10250端口。kubectl get networkpolicies - 检查CNI插件状态,确保网络组件正常运行:
查看flannel、calico等CNI相关Pod是否处于kubectl get pods -n kube-systemRunning状态,如有异常,重启对应Pod或重新部署CNI插件。
内容的提问来源于stack exchange,提问作者Philoxopher
相关产品推荐
相关产品推荐

