Red Hat 9.0环境下Kubespray部署Kubernetes后Service curl超时求助
Kubernetes Service访问超时问题排查(Red Hat 9.0 vs 8.6)
1. 防火墙规则差异排查
Red Hat 9.0默认使用nftables而非iptables,Kubespray的iptables规则可能未正确适配:
- 检查节点防火墙开放规则:
对比Red Hat 8.6节点的规则,确保NodePort端口(31348)或Kubernetes集群网段被允许通过。firewall-cmd --list-all - 验证Kubernetes相关iptables链是否存在:
若缺失对应Service的规则,需检查kube-proxy日志或重新部署CNI插件。iptables-save | grep KUBE-SVC
2. 内核网络参数验证
Red Hat 9.0内核版本更高,部分默认参数可能影响Kubernetes网络转发:
- 检查关键转发参数:
确保所有参数值为sysctl net.ipv4.ip_forward net.bridge.bridge-nf-call-iptables net.bridge.bridge-nf-call-ip6tables1,若存在差异,编辑/etc/sysctl.d/99-kubernetes.conf并执行sysctl --system生效。
3. Kubespray版本与配置适配
确认Kubespray版本对Red Hat 9.0的支持性:
- 检查使用的Kubespray版本是否兼容RHEL 9,建议使用v2.21.0及以上版本(官方已明确支持RHEL 9)。
- 核对inventory配置中的网络插件参数(如
kube_network_plugin: calico),部分插件在RHEL 9下需调整配置(如Calico的BPF模式兼容性)。 - 查看部署日志中是否存在网络相关错误:
grep -i "error" /path/to/kubespray/logs/ansible.log
4. Service与Pod状态验证
排除应用层面问题:
- 确认Pod正常运行且IP可达:
kubectl get pods -o wide curl <pod-ip>:<pod-port> - 检查Service关联的Endpoint状态:
确保Endpoints字段显示正常的Pod IP和端口,若为空则说明Service与Pod标签匹配错误。kubectl describe service <your-service-name>
5. NodePort端口监听检查
验证kube-proxy是否正确监听NodePort:
- 检查Kubernetes NodePort端口范围配置:
默认范围为kubectl get configmap kube-proxy -n kube-system -o yaml | grep nodePortRange30000-32767,确认31348在范围内。 - 检查节点上端口监听状态:
若未发现kube-proxy进程监听该端口,需重启kube-proxy或重新部署。ss -tulpn | grep 31348
内容的提问来源于stack exchange,提问作者SPK-Korn
相关产品推荐
相关产品推荐

