温馨提示×

centos k8s网络怎么配

小樊
47
2026-09-03 07:36:36
栏目: 智能运维

在 CentOS 上部署 Kubernetes(k8s),网络配置是关键环节。下面从 系统层网络 → 容器网络 → k8s 网络方案 三个层面给你讲清楚,适合生产/测试环境。


一、CentOS 系统层网络准备(必须先做)

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

systemctl stop firewalld
systemctl disable firewalld

若不想全关,至少放行:

  • 6443(API Server)
  • 2379-2380(etcd)
  • 10250(kubelet)
  • 30000-32767(NodePort)

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-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF

sysctl --system

5. 加载 br_netfilter 模块

modprobe br_netfilter

二、容器运行时网络(containerd / docker)

推荐使用 containerd(k8s 1.24+ 默认)

systemctl enable --now containerd

确认:

crictl info

三、Kubernetes 网络模型要求

K8s 网络必须满足:

  1. Pod 之间互通(跨节点)
  2. Pod 与 Node 互通
  3. Pod 能访问外网
  4. Service 能访问 Pod

⚠️ k8s 本身不提供网络实现,需要 CNI 插件。


四、常见 k8s 网络方案(CNI)

✅ 方案 1:Calico(最常用,推荐)

特点

  • 支持 BGP / overlay
  • 网络策略(NetworkPolicy)
  • 性能稳定

安装

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

默认 Pod 网段:

192.168.0.0/16

init 时指定:

kubeadm init --pod-network-cidr=192.168.0.0/16

✅ 方案 2:Flannel(简单,适合测试)

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

Pod 网段:

10.244.0.0/16

✅ 方案 3:Cilium(eBPF,新趋势)

kubectl apply -f https://raw.githubusercontent.com/cilium/cilium/master/install/kubernetes/quick-install.yaml

五、kubeadm 初始化示例(CentOS)

kubeadm init \
  --pod-network-cidr=192.168.0.0/16 \
  --apiserver-advertise-address=192.168.1.10

配置 kubectl:

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

加入节点:

kubeadm join 192.168.1.10:6443 --token xxx --discovery-token-ca-cert-hash xxx

六、常见问题排查

Pod 不互通

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

网络插件没起来

kubectl get pods -n kube-system

节点 NotReady

kubectl describe node <node>

七、总结(最简路径)

CentOS + kubeadm + Calico 是最稳妥组合

  1. 关防火墙 / SELinux / swap
  2. 配 sysctl
  3. containerd
  4. kubeadm init
  5. 装 Calico
  6. 加 node

如果你告诉我:

  • CentOS 版本(7 / 8 / Stream)
  • k8s 版本
  • 单节点还是多节点
  • 是否云服务器

我可以给你 精确的命令配置。

0 踩