温馨提示×

centos部署k8s要关防火墙

小樊
42
2026-09-18 12:04:37
栏目: 智能运维

在 CentOS 上部署 Kubernetes(k8s),通常建议关闭防火墙(或正确放通端口),否则很容易出现节点不通、Pod 网络异常等问题。

下面分情况说明:


一、为什么部署 K8s 常关防火墙

K8s 组件之间通信很多,例如:

  • API Server ↔ kubelet
  • 节点之间 flannel / calico 网络
  • kube-proxy 的 iptables / ipvs
  • etcd 通信

如果 firewalld 开着但端口没放通,会导致:

  • Node 状态 NotReady
  • Pod 无法跨节点通信
  • kubeadm init 卡住

二、最简单做法(测试 / 学习环境)

1️⃣ 关闭 firewalld

systemctl stop firewalld
systemctl disable firewalld

2️⃣ 关闭 SELinux

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

✅ 适合:

  • 本地虚拟机
  • 测试集群
  • 学习环境

三、生产环境推荐(不建议直接关防火墙)

如果必须开防火墙,需要放通 K8s 相关端口

K8s 常用端口

组件 端口
API Server 6443
etcd 2379-2380
kubelet 10250
kube-scheduler 10259
kube-controller 10257
NodePort 30000-32767

示例(firewalld)

firewall-cmd --permanent --add-port=6443/tcp
firewall-cmd --permanent --add-port=2379-2380/tcp
firewall-cmd --permanent --add-port=10250/tcp
firewall-cmd --permanent --add-port=10259/tcp
firewall-cmd --permanent --add-port=10257/tcp
firewall-cmd --permanent --add-port=30000-32767/tcp
firewall-cmd --reload

⚠️ 还要放通 CNI 插件端口(如 flannel 8472 UDP)


四、总结建议

场景 建议
学习 / 测试 关防火墙 + 关 SELinux
生产 开防火墙 + 精确放端口
云环境 用安全组替代 firewalld

如果你愿意,可以告诉我:

  • CentOS 版本(7 / 8 / Stream)
  • K8s 版本
  • 是否用 kubeadm

我可以直接给你一套 可复制的部署命令。

0 踩