温馨提示×

CentOS K8s部署网络怎么配

小樊
51
2026-08-31 00:38:32
栏目: 智能运维

在 CentOS 上部署 Kubernetes(K8s) 时,网络配置是非常重要且最容易踩坑的一环。我按生产可用、最常见方案给你一个完整说明,从 基础网络要求 → CNI 插件选择 → 实战配置示例。


一、K8s 网络的基本前提(必须)

1️⃣ 主机网络要求

CentOS 节点必须满足:

  • 各节点之间 网络互通(二层或三层)
  • 每个节点有 唯一 hostname
  • 每个节点有 唯一 IP
  • 防火墙关闭或放行 K8s 端口
  • Swap 关闭
  • 时间同步(NTP)

2️⃣ 端口要求(重要)

Master 节点

端口 用途
6443 kube-apiserver
2379-2380 etcd
10250 kubelet
10259 kube-scheduler
10257 kube-controller-manager

Worker 节点

端口 用途
10250 kubelet
30000-32767 NodePort

二、CentOS 网络环境准备(实战)

1️⃣ 关闭防火墙(推荐)

systemctl disable firewalld --now

或放行端口(不推荐新手)


2️⃣ 关闭 SELinux

setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

3️⃣ 关闭 Swap

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

4️⃣ 启用桥接内核参数(CNI 必备)

cat <<EOF > /etc/modules-load.d/k8s.conf
br_netfilter
EOF

modprobe br_netfilter

cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF

sysctl --system

三、K8s 网络模型核心概念

K8s 网络必须满足:

✅ 任意 Pod 可以互通,不需要 NAT

实现方式:CNI 插件


四、CNI 插件选择(重点)

✅ 推荐方案

CNI 适用场景 推荐指数
Calico 生产 / 企业 / 高性能 ⭐⭐⭐⭐⭐
Flannel 简单 / 测试 ⭐⭐⭐
Cilium eBPF / 高级网络 ⭐⭐⭐⭐

✅ 生产环境首选:Calico


五、Calico 网络实战配置(CentOS + K8s)

1️⃣ 使用 kubeadm 初始化集群

kubeadm init \
  --pod-network-cidr=10.244.0.0/16 \
  --apiserver-advertise-address=<master-ip>

⚠ pod-network-cidr 取决于 CNI


2️⃣ 安装 Calico

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

或使用指定版本:

kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.27.0/manifests/calico.yaml

3️⃣ 验证网络是否正常

kubectl get pods -n kube-system
kubectl get nodes

✅ 所有节点 Ready


4️⃣ Pod 跨节点互通测试

kubectl run test --image=busybox -it --rm -- sh
ping <其他节点Pod IP>

六、Flannel 网络配置(简单方案)

kubeadm init --pod-network-cidr=10.244.0.0/16
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml

⚠ 不支持 NetworkPolicy


七、常见网络问题排查

1️⃣ Pod 一直 ContainerCreating

kubectl describe pod <pod>

常见原因:

  • CNI 未安装
  • 端口被防火墙拦截
  • 内核参数未配置

2️⃣ Node NotReady

systemctl status kubelet
journalctl -u kubelet -f

3️⃣ Pod 无法跨节点通信

ip route
iptables -L -n

八、生产级网络建议(重要)

✅ 使用 Calico BGP 模式
✅ 固定 Pod CIDR
✅ 避免与宿主机网段冲突
✅ CentOS 8/Stream 建议使用 5.x 内核
✅ 不建议用 Docker(用 containerd)


九、我可以继续帮你

你可以直接告诉我:

1️⃣ CentOS 版本(7 / 8 / Stream)
2️⃣ K8s 版本
3️⃣ 单节点 or 多节点
4️⃣ 是否离线环境

我可以给你 完整从零部署命令版 ✅

0 踩