在 CentOS 上部署 Kubernetes(k8s),网络配置是关键一步。下面我按常见生产可用方案给你一个清晰、可操作的说明。
K8s 网络必须满足:
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab
cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
EOF
sysctl --system
yum install -y containerd
systemctl enable --now containerd
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
EOF
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet
kubeadm init \
--pod-network-cidr=192.168.0.0/16
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
✅ Calico 特点:
kubeadm init \
--pod-network-cidr=10.244.0.0/16
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
✅ Flannel 特点:
在 Master 上查看命令:
kubeadm token create --print-join-command
在 Node 上执行:
kubeadm join <master-ip>:6443 --token xxx --discovery-token-ca-cert-hash sha256:xxx
kubectl get nodes
kubectl get pods -n kube-system
测试 Pod 互通:
kubectl run test1 --image=busybox -it --rm -- sh
ping <其他pod-ip>
ip route 查看路由kubectl get pods -n kube-system | grep coredns
CentOS + kubeadm + containerd + Calico
这是目前最稳定、最推荐的组合。
如果你愿意,我可以:
你现在是 学习环境 还是 生产部署?