温馨提示×

CentOS部署K8s网络怎么配

小樊
41
2026-08-20 01:39:32
栏目: 智能运维

CentOS 上部署 Kubernetes(k8s) 时,网络配置 是核心环节之一,主要包括 主机网络、内核参数、容器网络(CNI)、Service 网络、Pod 网络。下面按 生产可用的标准流程 给你讲清楚。


一、CentOS 网络前置要求(非常重要)

1️⃣ 系统版本建议

cat /etc/centos-release

✅ 推荐:

  • CentOS 7.9(稳定)
  • CentOS Stream 8 / 9(新环境)

2️⃣ 主机网络规划(示例)

类型 网段
Node 节点 IP 192.168.10.0/24
Pod 网段 10.244.0.0/16
Service 网段 10.96.0.0/16

⚠️ Pod 和 Service 网段不能和宿主机网络冲突


3️⃣ 关闭防火墙 & SELinux

systemctl disable firewalld --now
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

4️⃣ 关闭 swap(k8s 强制)

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

5️⃣ 内核参数(网络关键)

cat <<EOF > /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

✅ 必须加载 br_netfilter:

modprobe br_netfilter

二、安装容器运行时(网络基础)

1️⃣ 安装 containerd(推荐)

yum install -y containerd
mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml

修改:

[plugins."io.containerd.grpc.v1.cri"]
  SystemdCgroup = true

启动:

systemctl enable containerd --now

三、安装 Kubernetes(kubeadm)

1️⃣ 添加 k8s yum 源

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/repodata/repomd.xml.key
EOF

2️⃣ 安装 kubeadm、kubelet、kubectl

yum install -y kubelet kubeadm kubectl
systemctl enable kubelet

四、K8s 网络核心:CNI 插件(必须)

K8s 本身不实现网络,必须安装 CNI 插件

✅ 推荐方案(任选其一)

CNI 特点
Calico 生产首选,支持网络策略
Flannel 简单,适合入门
Cilium 高性能,eBPF

五、使用 kubeadm 初始化集群(网络配置重点)

1️⃣ 初始化 Master

kubeadm init \
  --pod-network-cidr=10.244.0.0/16 \
  --service-cidr=10.96.0.0/12

--pod-network-cidr 必须和你选的 CNI 一致


2️⃣ 配置 kubectl

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

六、安装 CNI 网络插件(关键步骤)

✅ 方案一:Calico(强烈推荐)

kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.27.0/manifests/tigera-operator.yaml
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.27.0/manifests/custom-resources.yaml

Calico 默认使用:

  • Pod CIDR:10.244.0.0/16
  • BGP 模式(无需 overlay)

✅ 方案二:Flannel(简单)

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

⚠️ Flannel 默认也是 10.244.0.0/16


七、Node 加入集群

在 Master 上获取 token:

kubeadm token create --print-join-command

在 Node 上执行:

kubeadm join 192.168.10.xx: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.x.x

九、常见网络问题排查

1️⃣ Pod 无法互通

kubectl get pods -n kube-system
journalctl -u kubelet

2️⃣ DNS 不通

kubectl get svc -n kube-system

3️⃣ CNI 没装

kubectl get pods -A | grep cni

十、生产建议

✅ 使用 Calico + BGP
✅ 固定 Node IP
✅ 不使用 swap
✅ 内核参数必须开
✅ 避免 Pod 网段与内网冲突


如果你愿意,我可以:

  • ✅ 给你 完整一键部署脚本
  • ✅ 帮你 选 Calico / Flannel / Cilium
  • ✅ 按 生产环境 给你网络架构图

你现在用的是 CentOS 7 还是 Stream?单节点还是多节点?

0