温馨提示×

怎样在Debian调K8s网络

小樊
39
2026-10-11 04:41:45
栏目: 智能运维

在 Debian 上“调 K8s 网络”通常涉及 操作系统网络参数、CNI 插件、路由/防火墙、DNS 和服务网络 几个方面。下面按“从底层到上层”的方式给你一套实用排查与调优思路,适用于 Debian 11/12 + kubeadm 常见场景。


一、先明确你用的网络模型

常见组合:

  • CNI:Calico / Cilium / Flannel / Weave
  • 网络模式:Overlay(VXLAN/IPIP)或 直连(BGP / 主机路由)

先确认:

kubectl get pods -n kube-system
kubectl get nodes -o wide
ip route

二、Debian 系统层网络调优(很重要)

1. 关闭冲突网络组件

Debian 常带:

  • firewalld(较少)
  • ufw
  • systemd-networkd vs NetworkManager

建议:

systemctl stop ufw
systemctl disable ufw

确保 NetworkManager 不接管 CNI 接口(Calico/Cilium 很敏感):

# /etc/NetworkManager/conf.d/calico.conf
[keyfile]
unmanaged-devices=interface-name:cali*;interface-name:cilium*;interface-name:flannel*

2. 内核参数(必须)

cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
net.ipv4.conf.all.rp_filter         = 0
net.ipv4.conf.default.rp_filter     = 0
EOF

sysctl --system

3. 加载必需内核模块

modprobe br_netfilter
modprobe overlay

三、CNI 网络层排查(最常见问题)

1. Pod 无法互通

kubectl run test --image=busybox -it --rm -- sh
ping <其他Pod IP>

检查:

ip a
ip route
iptables -t nat -L -n

Calico 示例

kubectl get pods -n kube-system | grep calico
calicoctl node status

2. 跨节点不通

常见原因:

  • 节点间 8472 (Flannel) / 179 (BGP) / VXLAN 端口被防火墙挡
  • 云厂商安全组未放行

Debian 本地检查:

iptables -L -n -v
nft list ruleset

四、Service / DNS 问题

1. Service 不通

kubectl get svc
curl <ClusterIP>:<port>

检查 kube-proxy 模式:

kubectl get configmap -n kube-system kube-proxy -o yaml
  • iptables(稳定)
  • ipvs(性能更好,但需加载模块)

IPVS:

modprobe ip_vs
modprobe ip_vs_rr

2. DNS 解析失败(非常常见)

kubectl exec -it <pod> -- nslookup kubernetes.default

检查:

kubectl get pods -n kube-system | grep coredns
cat /etc/resolv.conf

Debian 注意:

  • /etc/resolv.conf 被 systemd-resolved 改坏
  • 可关闭:
systemctl stop systemd-resolved
systemctl disable systemd-resolved

五、常见“调网络”场景速查

场景 1:Pod 能通,Service 不通

→ kube-proxy / iptables / ipvs

场景 2:跨节点 Pod 不通

→ CNI / 路由 / 防火墙

场景 3:DNS 慢或失败

→ CoreDNS / resolv.conf

场景 4:网络抖动

→ MTU(VXLAN 常见)

ip link show

Calico 可设 MTU=1400~1450


六、推荐调试工具(Debian 直接装)

apt install -y tcpdump iproute2 curl dnsutils

示例:

tcpdump -i any port 53

七、如果你愿意,我可以更“精准”

你可以告诉我:

  1. Debian 版本
  2. K8s 安装方式(kubeadm / 云 / 二进制)
  3. 用的 CNI(Calico / Cilium / Flannel?)
  4. 具体现象(Pod 不通?Service 不通?DNS?)

我可以直接给你 针对性命令或配置文件。

0 踩