在 CentOS 上部署 Kubernetes(k8s),通常建议关闭防火墙(或正确放通端口),否则很容易出现节点不通、Pod 网络异常等问题。
下面分情况说明:
K8s 组件之间通信很多,例如:
如果 firewalld 开着但端口没放通,会导致:
kubeadm init 卡住systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
✅ 适合:
如果必须开防火墙,需要放通 K8s 相关端口
| 组件 | 端口 |
|---|---|
| API Server | 6443 |
| etcd | 2379-2380 |
| kubelet | 10250 |
| kube-scheduler | 10259 |
| kube-controller | 10257 |
| NodePort | 30000-32767 |
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 |
如果你愿意,可以告诉我:
我可以直接给你一套 可复制的部署命令。