在 Debian 上部署 Kubernetes 网络插件的实操指南
一 前置检查
二 选择并部署网络插件
插件与 Pod CIDR 对照(需在 kubeadm init 时或清单中保持一致):
部署 Flannel
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
部署 Calico
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
[keyfile]
unmanaged-devices=interface-name:cali*;interface-name:tunl*;interface-name:vxlan.calico
三 验证与常见问题
kubectl get nodes # 状态应为 Ready
kubectl get pods -n kube-system -w
kubectl get pods --all-namespaces
kubectl create deployment nginx-test --image=nginx:1.25 --replicas=2
kubectl expose deployment nginx-test --port=80 --type=NodePort
kubectl get svc nginx-test
# 从集群外访问 NodeIP:NodePort
sudo update-alternatives --config iptables
# 选择 iptables-legacy 以规避兼容性问题
sudo kubeadm reset
sudo rm -rf /etc/cni/net.d
sudo iptables -F && sudo iptables -t nat -F && sudo iptables -t mangle -F && sudo iptables -X
# 重新 init 后再部署 CNI
四 防火墙与端口放行清单
sudo ufw allow 6443/tcp # API Server
sudo ufw allow 2379:2380/tcp # etcd
sudo ufw allow 10250/tcp # kubelet API
sudo ufw allow 10251/tcp # kube-scheduler
sudo ufw allow 10252/tcp # kube-controller-manager
sudo ufw reload
sudo ufw allow 10250/tcp # kubelet API
sudo ufw allow 30000:32767/tcp # NodePort 范围
sudo ufw reload