k8s 部署后 node 节点无法访问是怎么回事?

文章导读
K8s 部署后 Node 节点无法访问,多数情况是网络配置、核心组件状态或安全策略拦截导致的问题,需要按照从底层网络到上层服务的顺序逐一排查。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 参考来源
A A

K8s 部署后 Node 节点无法访问,多数情况是网络配置、核心组件状态或安全策略拦截导致的问题,需要按照从底层网络到上层服务的顺序逐一排查。

先说结论:Node 节点无法访问通常源于网络不通、kubelet 服务异常或防火墙拦截,建议优先检查节点状态和组件日志。

  • 先确认:检查 kubectl get nodes 状态及网络连通性
  • 先处理:重启 kubelet 服务并修正防火墙规则
  • 再验证:通过 telnet 或 curl 测试端口及服务访问

命令速用版

# 查看节点状态
kubectl get nodes

# 检查 kubelet 服务状态
systemctl status kubelet

# 查看 kubelet 日志
journalctl -u kubelet -f

# 检查防火墙规则
iptables-save | grep NodePort

为什么会这样

Kubernetes 集群中,Node 节点需要与 Master 节点保持通信以汇报状态和接收任务。如果底层网络不通,或者节点上的 kubelet 代理服务未运行,Master 就无法感知节点存活。此外,网络插件(如 Calico、Flannel)负责分配 Pod IP,若配置缺失会导致网络不可达。云环境的安全组或本地防火墙也可能直接丢弃进入节点的流量,导致端口无法访问。

分步处理

1. 检查节点状态
在 Master 节点执行 kubectl get nodes。如果状态为 NotReady,说明节点未正常汇报心跳。若节点列表中完全没有该 Node,可能未成功加入集群,需使用 kubeadm join 重新加入。

2. 检查核心组件服务
登录故障 Node 节点,检查 kubelet 和 kube-proxy 服务。使用 systemctl status kubelet 查看状态。如果服务未运行,尝试重启。查看日志 journalctl -u kubelet,关注是否有证书过期、配置错误或 CNI 配置缺失的报错。

k8s 部署后 node 节点无法访问是怎么回事?

3. 检查网络连通性
在 Node 节点上 ping Master 节点 IP,确保物理网络通畅。检查 Master 节点的 etcd 和 kube-apiserver 服务是否正常运行,这两个组件异常会导致所有节点失联。

4. 检查防火墙与安全组
如果是云服务器,检查控制台安全组是否放行了节点端口(如 NodePort 范围 30000-32767)。本地防火墙可使用 iptables -L 查看,必要时临时关闭测试。对于 NodePort 无法访问,需确认 iptables 中是否有 KUBE-NODEPORTS 规则。

5. 检查网络插件配置
查看 /etc/cni/net.d 目录下是否有网络配置文件。如果日志提示"Unable to update cni config: No networks found",说明网络插件未正确安装或配置丢失,需重新部署网络组件。

怎么验证是否生效

修复后,再次执行 kubectl get nodes 确认状态变为 Ready。在集群外部使用 telnet <节点 IP> <NodePort> 测试端口连通性。尝试在集群内创建测试 Pod,确认能否正常调度到该节点并拉取镜像。

常见坑

  • Master 节点默认有污点,普通 Pod 无法调度,不要误认为是节点故障。
  • 云厂商安全组规则未更新,导致外部流量被拦截。
  • kube-proxy 模式切换可能导致部分节点 NodePort 不通,需检查日志。
  • DNS 配置错误会导致服务域名无法解析,影响内部访问。

参考来源

  • K8s 部署后 Node 节点不能访问问题的科普性解析
  • K8s 1.22.17 中 NodePort 端口不通?可能是 kube-proxy 模式惹的祸 (附详细排查步骤)
  • k8s 部署 node 节点网络不通
  • k8s 无法连接 node 节点
  • K8s 中 NodePort 无法访问的终极排查指南:从网络策略到生产环境优化 - Leo_Yide - 博客园
  • kubernetes(K8S) 容器部署,重新启动后,node 节点提示 notready 无法正常工作。
  • K8S 线上集群排查,实测排查 Node 节点 NotReady 异常状态
  • k8s service nodePort 无法访问的问题解决
  • K8s NodePort 访问故障排查
  • K8s 集群看不到 node