2.4 KiB
2.4 KiB
06-01-k3s NetworkPolicy 使用与故障排查
本文只负责 网络策略与连通性排障。 若你要做 Traefik 部署、ServiceLB 池配置,请看
01-02-k3s-工作节点.md。
前置条件
- 已完成
01-02-k3s-工作节点.md - 已有至少一个后端服务(如 nginx/nodejs)
- 可执行
kubectl
三条先验结论
- 主链路看 Traefik -> Service,不是 Pod IP 直连。
- Pod 被 NetworkPolicy 选中后,该方向默认拒绝,需显式放行。
- 跨节点不通通常是“策略 + 主机防火墙 + 回包路径”叠加问题。
标准排查步骤
2.1 资源状态
kubectl get pod,svc,ing -A
2.2 入口可达性
curl -I --max-time 3 http://192.168.2.61:80
curl -I --max-time 3 http://192.168.2.62:80
2.3 快速检查命令
kubectl get pod,svc,ing -A
kubectl get networkpolicy -A
kubectl -n kube-system get pods -l app=svclb-traefik -o wide
2.4 全链路检查(手工)
# 从入口节点IP验证 HTTP 入口
curl -I --max-time 3 http://192.168.2.61:80
curl -I --max-time 3 http://192.168.2.62:80
关键策略建议
- Traefik egress 建议同时放行:
- 目标命名空间后端端口
- Service CIDR(如
10.43.0.0/16) - DNS(
53/udp、53/tcp)
- 后端 ingress 策略要匹配 Traefik 来源(命名空间或 IP 段)
已验证修复(Fedora/FCOS)
4.1 手动修复
# 1) 临时生效(当前运行时)
sudo firewall-cmd --zone=trusted --add-interface=flannel.1
sudo firewall-cmd --zone=trusted --add-interface=cni0
# 2) 持久化
sudo firewall-cmd --permanent --zone=trusted --add-interface=flannel.1
sudo firewall-cmd --permanent --zone=trusted --add-interface=cni0
# 3) 重载配置
sudo firewall-cmd --reload
# 4) 验证
sudo firewall-cmd --zone=trusted --list-interfaces
sudo firewall-cmd --get-active-zones
预期:trusted 区域中能看到 flannel.1 cni0,跨节点回包不再被 admin-prohibited 拦截。
本文不处理的内容
以下属于部署配置域,请转到 01-02-k3s-工作节点.md:
- Traefik 节点标签与
lbpool设计 - HelmChartConfig 配置写入方式
- Dashboard/ACME 等功能配置
关联文档
01-02-k3s-工作节点.md04-03-k3s-nginx-demo.md04-01-k3s-nodejs-高级部署.mdscripts/README.md
下一步
- 返回 00-00-构建总览.md,按导航继续。