温馨提示×

Debian K8s网络怎设置

小樊
37
2026-10-16 22:36:03
栏目: 智能运维

在 Debian 上部署 Kubernetes(K8s) 时,“网络怎么设置”通常包含 三层:
1️⃣ 节点(OS)网络
2️⃣ K8s 网络模型(Pod / Service / DNS)
3️⃣ 网络插件(CNI)选择

下面给你一个 从基础到实战的完整说明。


一、Debian 节点网络基础设置(必须)

1. 静态 IP(推荐)

# /etc/network/interfaces
auto eth0
iface eth0 inet static
    address 192.168.10.10
    netmask 255.255.255.0
    gateway 192.168.10.1
    dns-nameservers 8.8.8.8

或(Debian 12+ 用 NetworkManager):

nmcli con mod eth0 ipv4.method manual \
ipv4.addresses 192.168.10.10/24 \
ipv4.gateway 192.168.10.1 \
ipv4.dns 8.8.8.8

2. 关闭 swap(K8s 强制)

swapoff -a
sed -i '/swap/d' /etc/fstab

3. 内核参数(重要)

cat <<EOF | tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF

sysctl --system

加载模块:

modprobe br_netfilter

4. 防火墙(建议)

# 简单方案(测试)
ufw disable

# 生产可放行端口
# 6443, 10250, 2379-2380, 10250-10252

二、Kubernetes 网络模型(原理)

K8s 要求:

  • 每个 Pod 有独立 IP
  • Pod 之间可直接通信(不 NAT)
  • Node 与 Pod 可直接通信
  • Service 是虚拟 IP(ClusterIP)

Debian 本身不提供这些,必须装 CNI 插件。


三、安装 Container Runtime(containerd)

apt update
apt install -y containerd

containerd config default > /etc/containerd/config.toml
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml

systemctl restart containerd

四、安装 K8s(kubeadm)

apt install -y apt-transport-https ca-certificates curl
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/k8s.gpg

echo "deb [signed-by=/etc/apt/keyrings/k8s.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /" > /etc/apt/sources.list.d/k8s.list

apt update
apt install -y kubelet kubeadm kubectl

五、初始化 Master(关键网络设置)

kubeadm init \
  --pod-network-cidr=10.244.0.0/16 \
  --service-cidr=10.96.0.0/12

--pod-network-cidr 必须和 CNI 匹配


六、安装 CNI 网络插件(最重要)

✅ 方案 1:Flannel(最简单,推荐入门)

kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml

✅ 要求:

  • pod cidr = 10.244.0.0/16

✅ 方案 2:Calico(生产推荐)

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

支持:

  • 网络策略(NetworkPolicy)
  • BGP
  • 跨子网

✅ 方案 3:Cilium(高级)

kubectl apply -f https://raw.githubusercontent.com/cilium/cilium/v1.15/install/kubernetes/quick-install.yaml

支持:

  • eBPF
  • 高性能
  • 安全策略

七、Node 加入集群

kubeadm join 192.168.10.10:6443 \
  --token xxx \
  --discovery-token-ca-cert-hash sha256:xxx

八、验证网络

kubectl get nodes
kubectl get pods -n kube-system

测试 Pod 通信:

kubectl run test --image=busybox -it -- sh
ping 10.244.x.x

九、常见问题

❌ Pod 无法互通

  • CNI 没装
  • pod cidr 不匹配
  • 防火墙拦截

❌ DNS 不通

kubectl get pods -n kube-system coredns

十、总结(推荐组合)

✅ Debian + containerd + kubeadm + Calico
✅ 测试环境:Flannel


如果你愿意,我可以:

  • 给你 完整一键脚本
  • 针对 云 / 本地 / 虚拟机 分开讲
  • 帮你排错(贴 kubectl get pods 输出)

你现在是 单机测试还是多节点集群?

0 踩