下面按常见场景给你讲下 Debian 上 Kubernetes 网络怎么设置,从“系统层 → 容器网络 → 集群网络”一步步来。
sudo swapoff -a
sudo sed -i '/swap/d' /etc/fstab
cat <<EOF | sudo 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
sudo sysctl --system
sudo apt update
sudo apt install -y containerd
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
sudo systemctl restart containerd
K8s 网络有 3 个基本要求:
⚠️ K8s 本身不提供网络实现,需要 CNI 插件
适合生产、稳定、支持网络策略
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
特点:
192.168.0.0/16适合测试、学习
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
特点:
10.244.0.0/16适合高性能、云原生
kubectl apply -f https://raw.githubusercontent.com/cilium/cilium/v1.15/install/kubernetes/quick-install.yaml
sudo kubeadm init \
--pod-network-cidr=192.168.0.0/16
⚠️ --pod-network-cidr 必须和 CNI 插件一致
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
K8s 需要很多端口,建议直接关:
sudo ufw disable
或放行:
如果 Debian 有多个网卡:
kubeadm init --apiserver-advertise-address=192.168.1.10
kubectl get pods -n kube-system
kubectl run test --image=busybox -it --rm -- sh
ping 8.8.8.8
| 问题 | 原因 |
|---|---|
| Pod 不通 | CNI 没装 |
| 跨节点不通 | 防火墙 / 路由 |
| DNS 失败 | CoreDNS 没起来 |
| 外网不通 | 缺 IP 转发 |
我可以帮你:
你可以告诉我: