Debian 上部署 Kubernetes 的网络配置清单
一 基础网络与主机配置
- 为所有节点配置静态 IP、唯一主机名,并在 /etc/hosts 中写入各节点的 IP↔主机名 映射,确保节点间可直连。
- 集群内所有主机需互通(同网段或可达路由),并建议统一时区与 NTP 时间同步。
- 禁用 Swap(临时与永久):执行
sudo swapoff -a 并注释 /etc/fstab 中的 swap 行,避免 kubelet 异常。
二 内核与容器运行时网络参数
- 加载内核模块并开启桥接与转发:
- 模块:
overlay、br_netfilter
- Sysctl:
net.bridge.bridge-nf-call-iptables=1、net.bridge.bridge-nf-call-ip6tables=1、net.ipv4.ip_forward=1
- 使用 containerd 作为容器运行时,并启用与配置 systemd cgroup(常见做法为编辑 /etc/containerd/config.toml 的
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] 设置 SystemdCgroup = true),随后 systemctl restart containerd。
- 说明:自 Kubernetes v1.20 起内置的 dockershim 已移除,推荐 containerd/CRI-O。
三 防火墙与端口放行
- 若使用 UFW,按角色放行端口(示例):
- 控制平面(Master):6443/TCP(kube-apiserver)、2379–2380/TCP(etcd)、10250/TCP(kubelet API)、10251/TCP(kube-scheduler)、10252/TCP(kube-controller-manager)、10255/TCP(kubelet 只读端口,视安全策略可选)。
- 工作节点(Worker):10250/TCP(kubelet API)、30000–32767/TCP(NodePort 范围)。
- 如使用 firewalld/iptables,需确保等价规则已配置;云厂商安全组同样需要放行上述端口。
四 Pod 与服务网络规划及 CNI 插件
- 规划 Pod 网络 CIDR 与 Service CIDR,并在
kubeadm init 时通过 --pod-network-cidr 指定(例如 10.244.0.0/16);确保与宿主机网段及现有网络无冲突。
- 安装 CNI 网络插件 以落实 Kubernetes 网络模型(Pod 互通、Service 负载均衡、网络策略等):
- Flannel:覆盖网络(VXLAN/UDP),上手简单,适合测试/中小规模。
- Calico:基于路由/BGP,性能较好,支持网络策略,适合生产。
- Cilium:基于 eBPF,在吞吐与延迟方面通常更优,并提供增强的可观测与策略能力。
- 其他:Weave Net(加密开销略高)、Canal(Flannel+Calico 组合)等。
- 性能与选型提示:在标准化测试中(4×8核16GB、10Gbps、K8s v1.28.2),Cilium 在 UDP 吞吐与 P99 延迟上表现更优,Flannel 均衡易用,Weave Net 性能相对较弱;生产可优先评估 Cilium/Calico。
五 快速验证与常见问题
- 初始化完成后,部署所选 CNI 清单(如
kubectl apply -f calico.yaml 或 kubectl apply -f kube-flannel.yml),待节点 Ready 后验证:
kubectl get nodes -o wide(节点状态与 Pod CIDR 分配)
kubectl get pods -A -o wide(CNI 组件就绪)
kubectl run test-nginx --image=nginx:1.25 --restart=Never --rm -it -- curl -I http://kubernetes.default.svc.cluster.local(跨 Pod/Service 连通性)
- 常见问题排查要点:
- 节点 NotReady:检查 CNI DaemonSet 是否 Running、Pod CIDR 是否与
--pod-network-cidr 一致、节点间 UDP/TCP 8472(Flannel VXLAN)/BGP 179(Calico) 等是否被放行。
- Service 不通:确认 kube-proxy 正常运行、节点与云安全组放行 NodePort/ClusterIP 相关流量。
- 内核/转发未生效:复核
br_netfilter、ip_forward 与容器运行时 cgroup 配置是否持久化并生效。