K8S集群需要开放的端口说明介绍
作者:学亮编程手记
这篇文章主要介绍了K8S集群需要开放的端口说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
在离线环境中部署 Kubernetes (K8S) 集群时,需要确保各节点(Master 和 Worker)的防火墙(如 firewalld
)开放必要的端口,以确保组件间的正常通信。
以下是需要开放的端口分类说明:
一、Master 节点需开放的端口
端口范围 | 协议 | 用途 |
---|---|---|
6443 | TCP | Kubernetes API Server(所有节点和外部访问的核心端口) |
2379-2380 | TCP | etcd 客户端和服务端通信(若使用外部 etcd 需额外配置) |
10250 | TCP | Kubelet API(Master 与 Worker 间的指标、日志、执行命令通信) |
10259 | TCP | kube-scheduler 的 metrics 和健康检查(≥1.23 版本) |
10257 | TCP | kube-controller-manager 的 metrics 和健康检查(≥1.23 版本) |
8472 | UDP | Flannel CNI 的 VXLAN overlay 网络(根据 CNI 插件调整,如 Calico 不同) |
30000-32767 | TCP | NodePort 服务的外部访问端口范围(可自定义) |
二、Worker 节点需开放的端口
端口范围 | 协议 | 用途 |
---|---|---|
10250 | TCP | Kubelet API(Master 访问 Worker 的指标、日志等) |
30000-32767 | TCP | NodePort 服务的外部访问端口 |
8472 | UDP | Flannel CNI 的 VXLAN 通信(其他 CNI 如 Calico 可能用 IPIP 或 TCP) |
9796 | TCP | 部分监控工具(如 Prometheus)的指标采集端口(非必需) |
三、所有节点需开放的端口
端口 | 协议 | 用途 |
---|---|---|
22 | TCP | SSH 管理访问(建议限制来源 IP) |
6783-6784 | TCP | Weave CNI 的通信端口(若使用 Weave) |
53 | TCP/UDP | CoreDNS 或 kube-dns 的 DNS 解析 |
四、防火墙配置示例(firewalld)
1. Master 节点命令
sudo firewall-cmd --permanent --add-port=6443/tcp sudo firewall-cmd --permanent --add-port=2379-2380/tcp sudo firewall-cmd --permanent --add-port=10250/tcp sudo firewall-cmd --permanent --add-port=10257/tcp sudo firewall-cmd --permanent --add-port=10259/tcp sudo firewall-cmd --permanent --add-port=8472/udp sudo firewall-cmd --permanent --add-port=30000-32767/tcp sudo firewall-cmd --reload
2. Worker 节点命令
sudo firewall-cmd --permanent --add-port=10250/tcp sudo firewall-cmd --permanent --add-port=30000-32767/tcp sudo firewall-cmd --permanent --add-port=8472/udp sudo firewall-cmd --reload
五、关键注意事项
CNI 插件差异:
Flannel
:需开放 UDP 8472(VXLAN)。Calico
:需开放 TCP 179(BGP)、IPIP 协议(默认为 协议号 4)。Weave
:需开放 TCP 6783-6784 和 UDP 6783-6784。
离线环境特殊要求:
- 确保所有节点的防火墙规则在部署前已配置,避免因网络不通导致安装失败。
- 如果使用私有镜像仓库,需开放其端口(如 HTTP 8080 或 HTTPS 443)。
安全建议:
- 使用
--zone=trusted
将 Pod 和 Service 网段加入信任区域(替换为实际 CIDR):
sudo firewall-cmd --permanent --zone=trusted --add-source=10.244.0.0/16 # Flannel 默认网段 sudo firewall-cmd --permanent --zone=trusted --add-source=10.96.0.0/12 # Service 网段
验证端口:
sudo firewall-cmd --list-all # 查看已开放端口
通过以上配置,可确保离线 K8S 集群各组件间的通信正常。根据实际使用的 CNI 插件和 Kubernetes 版本调整端口。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。