温馨提示×

centos k8s怎么配网络

小樊
39
2026-10-20 21:34:00
栏目: 智能运维

在 CentOS 上部署 Kubernetes(k8s)并配置网络,通常包括 节点网络、Pod 网络、Service 网络 三部分。下面我用实战角度,从“能跑起来”到“网络怎么配”给你讲清楚。


一、K8s 网络基本概念(先搞清楚)

Kubernetes 默认要求:

  1. 每个 Pod 有独立 IP
  2. Pod 之间可以直接通信(不 NAT)
  3. Node 和 Pod 可以互通
  4. Service 是虚拟 IP(ClusterIP)

CentOS 本身不提供 Pod 网络,需要 CNI 插件。


二、CentOS 基础网络准备(很重要)

1️⃣ 关闭防火墙(或放行端口)

systemctl stop firewalld
systemctl disable firewalld

2️⃣ 关闭 SELinux

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

3️⃣ 关闭 swap

swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab

4️⃣ 开启内核转发

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

三、安装 Kubernetes(CentOS 示例)

1️⃣ 添加 yum 源

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

2️⃣ 安装组件

yum install -y kubelet kubeadm kubectl
systemctl enable kubelet

四、初始化 Master(关键网络参数)

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


五、配置 Pod 网络(CNI,必选)

✅ 推荐:Flannel(最简单)

kubectl apply -f \
https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml

Flannel 默认使用:

  • Pod CIDR:10.244.0.0/16
  • 后端:vxlan

✅ Calico(生产推荐)

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

Calico 特点:

  • 性能好
  • 支持 NetworkPolicy
  • 适合多网卡、复杂网络

六、Node 加入集群

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

八、常见问题(CentOS 特有)

❌ Pod 无法上网

iptables -P FORWARD ACCEPT

❌ cni0 / flannel 冲突

ip link delete cni0
ip link delete flannel.1

九、如果你是多网卡 / 云服务器

  • 指定 --apiserver-advertise-address
  • Flannel 可加:
--iface=eth0

十、总结一句话

CentOS 上 k8s 网络 = 内核转发 + CNI 插件 + 正确 CIDR

如果你愿意,我可以:

  • 给你 一键部署脚本
  • 帮你选 Flannel / Calico / Cilium
  • 按你的 内网 / 云环境 定制方案

你现在是 单机测试 还是 多节点生产?

0 踩