在 CentOS 上部署 Kubernetes(k8s)并配置网络,通常包括 节点网络、Pod 网络、Service 网络 三部分。下面我用实战角度,从“能跑起来”到“网络怎么配”给你讲清楚。
Kubernetes 默认要求:
CentOS 本身不提供 Pod 网络,需要 CNI 插件。
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
cat > /etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
EOF
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet
kubeadm init \
--pod-network-cidr=10.244.0.0/16 \
--service-cidr=10.96.0.0/12 \
--apiserver-advertise-address=192.168.1.10
✅
--pod-network-cidr必须和 CNI 插件一致
✅apiserver-advertise-address是 Master 的 IP
kubectl apply -f \
https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
Flannel 默认使用:
10.244.0.0/16kubectl apply -f \
https://docs.projectcalico.org/manifests/calico.yaml
Calico 特点:
Master 初始化后会输出:
kubeadm join 192.168.1.10:6443 --token xxx --discovery-token-ca-cert-hash xxx
在 Node 上执行即可。
kubectl get nodes
kubectl get pods -n kube-system
测试 Pod 通信:
kubectl run test --image=busybox -it --rm -- sh
ping 10.244.x.x
iptables -P FORWARD ACCEPT
ip link delete cni0
ip link delete flannel.1
--apiserver-advertise-address--iface=eth0
CentOS 上 k8s 网络 = 内核转发 + CNI 插件 + 正确 CIDR
如果你愿意,我可以:
你现在是 单机测试 还是 多节点生产?