温馨提示×

debian k8s怎么配网络

小樊
41
2026-09-08 07:39:29
栏目: 智能运维

在 Debian 上部署 Kubernetes(k8s)时,“配网络”通常包含 三层

  1. 节点网络(Node 网络):Debian 系统本身的 IP、网关
  2. Pod 网络(CNI 网络):k8s 集群内容器通信(必须装 CNI 插件)
  3. Service 网络:k8s 虚拟 IP(kube-proxy + iptables/ipvs)

下面按最常用的 Debian + kubeadm方式说明。


一、Debian 节点基础网络配置

1. 设置静态 IP(可选但推荐)

编辑:

/etc/network/interfaces

示例:

auto eth0
iface eth0 inet static
    address 192.168.1.10
    netmask 255.255.255.0
    gateway 192.168.1.1
    dns-nameservers 8.8.8.8

应用:

systemctl restart networking

2. 关闭 swap(k8s 要求)

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

3. 内核参数(必须)

cat <<EOF | tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF

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

二、安装 k8s(kubeadm)

1. 安装 containerd

apt install -y containerd
containerd config default > /etc/containerd/config.toml
systemctl restart containerd

2. 安装 kubeadm/kubelet/kubectl

apt-get 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/kubernetes-apt-keyring.gpg

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

apt update
apt install -y kubelet kubeadm kubectl

三、初始化集群 + 配置 Pod 网络(关键)

1. 初始化 Master

kubeadm init --pod-network-cidr=10.244.0.0/16

10.244.0.0/16 是 Flannel 默认网段

2. 配置 kubectl

mkdir -p $HOME/.kube
cp /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

四、安装 CNI 网络插件(必须)

方案 1:Flannel(最简单,推荐新手)

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

验证:

kubectl get pods -n kube-flannel

方案 2:Calico(生产常用)

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

Calico 默认使用 192.168.0.0/16


五、Worker 节点加入集群

在 Master 上获取命令:

kubeadm token create --print-join-command

在 Worker(Debian)上执行:

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

六、验证网络是否正常

kubectl get nodes
kubectl get pods -A

测试 Pod 通信:

kubectl run test --image=busybox -it --rm -- sh
ping 10.244.0.1

七、常见问题

Pod 一直 Pending

✅ 没装 CNI
pod-network-cidr 不匹配

节点 NotReady

kubectl describe node

通常是 CNI 没起来

跨节点不通

  • 检查防火墙
  • Debian 默认 iptables 是 nft,需确认 containerd/kube-proxy 兼容

八、总结(最简流程)

Debian 网络 → 关 swap → 装 containerd
→ kubeadm init
→ 装 Flannel/Calico
→ join worker

如果你愿意,我可以:

  • 给你 Debian 12 完整一键脚本
  • 帮你选 Flannel / Calico / Cilium
  • 教你 多网卡 / 离线环境 配 k8s 网络

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

0