当前位置: 首页 > news >正文

在 Linux(openEuler 24.03 LTS-SP1)上安装 Kubernetes + KubeSphere 的防火墙放行全攻略

目录

在 Linux(openEuler 24.03 LTS-SP1)上安装 Kubernetes + KubeSphere 的防火墙放行全攻略

一、为什么要先搞定防火墙?

二、目标环境

三、需放行的端口和协议列表

四、核心工具说明

1. 修正后的 exec.sh 脚本(支持管道/重定向)

2. 批量放行脚本:open_firewall.sh

五、使用示例

1. 批量放行端口

2. 查看当前防火墙规则

3. 仅开放单一端口(临时需求)

4. 检查特定端口监听状态

六、总结


在 Linux(openEuler 24.03 LTS-SP1)上安装 Kubernetes + KubeSphere 的防火墙放行全攻略

关键词:Kubernetes、KubeSphere、openEuler、防火墙、firewalld、Ansible、自动化运维


一、为什么要先搞定防火墙?

Kubernetes 和 KubeSphere 是分布式系统,对网络连通性要求非常严格。如果防火墙未提前放行关键端口,集群安装常常会卡在某个阶段,难以定位。常见问题包括:

  • 控制面无法连上 etcd(2379/2380)

  • kubelet 报错 NotReady(10250)

  • Calico 网络不可用(BGP 179 或 IPIP 未通)

  • 节点无法通过 NodePort 访问服务(30000-32767)

因此,部署前统一放行端口是集群成功的关键一步。


二、目标环境

说明
操作系统openEuler 24.03 (LTS-SP1)
节点数量多台主机组成集群
安装方式基于 Ansible 批量执行
网络方案Calico(支持 BGP 和 IPIP)

三、需放行的端口和协议列表

服务协议端口范围说明
sshTCP22基础连接
etcdTCP2379-2380控制平面内部通信
apiserverTCP6443客户端/节点访问 kube-apiserver
calicoTCP9099-9100健康检查端口
BGPTCP179Calico 网络
nodePortTCP30000-32767暴露 Service 用
kubeletTCP10250节点健康、日志
控制组件TCP10258controller-manager
CoreDNSTCP/UDP53DNS 服务
metrics-serverTCP8443集群指标
本地仓库TCP5000/5080离线部署用
rpcbind/NFSTCP111NFS 持久卷
IPIP协议ipip(协议4)Calico 网络协议

四、核心工具说明

1. 修正后的 exec.sh 脚本(支持管道/重定向)
#!/usr/bin/env bash
# exec.sh —— 在指定主机组批量执行远程命令(自动识别管道)
# 可用环境变量:
#   INV   — inventory 文件(默认 hosts.ini)
#   GROUP — 目标主机组(默认 all)set -euo pipefailINV="${INV:-hosts.ini}"
GROUP="${GROUP:-all}"[[ $# -eq 0 ]] && { echo "Usage: $0 <remote command>"; exit 1; }REMOTE_CMD="$*"# 自动判断是否包含 shell 元字符,选用 shell 模块
if [[ "$REMOTE_CMD" =~ [\|\&\;\<\>\(\)] ]]; thenMODULE=shell
elseMODULE=command
fiecho ">>> ansible -i \"$INV\" \"$GROUP\" -m $MODULE -b -a \"$REMOTE_CMD\""
ansible -i "$INV" "$GROUP" -m "$MODULE" -b -a "$REMOTE_CMD"

✅ 支持:

  • | grep> file&& 等 shell 操作

  • 默认提权 -b,无需写 sudo

  • GROUP 分组执行命令


2. 批量放行脚本:open_firewall.sh
#!/usr/bin/env bash
# 批量放行所有 Kubernetes + KubeSphere 所需端口
# 使用 ./exec.sh 执行远程命令set -euo pipefailDIR="$(cd "$(dirname "$0")" && pwd)"
EXEC="${DIR}/exec.sh"rules=("firewall-cmd --permanent --add-port=22/tcp""firewall-cmd --permanent --add-port=2379-2380/tcp""firewall-cmd --permanent --add-port=6443/tcp""firewall-cmd --permanent --add-port=9099-9100/tcp""firewall-cmd --permanent --add-port=179/tcp""firewall-cmd --permanent --add-port=30000-32767/tcp""firewall-cmd --permanent --add-port=10250/tcp""firewall-cmd --permanent --add-port=10258/tcp""firewall-cmd --permanent --add-port=53/tcp""firewall-cmd --permanent --add-port=53/udp""firewall-cmd --permanent --add-port=8443/tcp""firewall-cmd --permanent --add-port=5000/tcp""firewall-cmd --permanent --add-port=5080/tcp""firewall-cmd --permanent --add-port=111/tcp""firewall-cmd --permanent --add-protocol=ipip"
)echo "=== 开始批量放行 firewalld 规则 ==="
for rule in "${rules[@]}"; doecho "--> 执行: $rule""${EXEC}" "$rule"
doneecho "--> 重载 firewalld"
"${EXEC}" "firewall-cmd --reload"echo "[✓] 防火墙规则放行完毕"

五、使用示例

1. 批量放行端口
chmod +x exec.sh open_firewall.sh
./open_firewall.sh
2. 查看当前防火墙规则
# 查看所有节点的防火墙状态
./exec.sh "firewall-cmd --list-all"# 查看是否启用了 IPIP 协议
./exec.sh "firewall-cmd --permanent --get-protocols | grep ipip"
3. 仅开放单一端口(临时需求)
./exec.sh "firewall-cmd --permanent --add-port=25000/tcp && firewall-cmd --reload"
4. 检查特定端口监听状态
./exec.sh "ss -lntp | grep 6443"

六、总结

优点描述
✅ 一次执行,全节点生效用脚本统一执行所有规则,无需逐个操作
✅ 支持复杂命令管道、重定向、逻辑与/或都能正常解析
✅ 清晰日志可追踪每条规则执行均打印,方便定位问题
✅ 自动化 & 可扩展可以集成到 CI/CD 或自建部署工具链中

脚本 + Ansible 的组合,大大提升了防火墙配置效率和准确性。未来如果组件升级、端口变更,只需维护 rules 数组即可,真正做到“一次写好,处处运行”。

推荐操作:将 exec.shopen_firewall.sh 纳入版本控制,并在每次节点加入或初始化前优先执行,确保防火墙配置零遗漏。

http://www.lryc.cn/news/582742.html

相关文章:

  • 京东携手HarmonyOS SDK首发家电AR高精摆放功能
  • 代码详细注释:嵌入式Linux LCD汉字显示程序(基于font.h字库头文件)
  • 移动机器人的认知进化:Deepoc大模型重构寻迹本质
  • 数据库表设计:图片存储与自定义数据类型的实战指南
  • FlashAttention 深入浅出
  • C++STL详解(一):string类
  • Spring Boot:影响事务回滚的几种情况
  • Java List 使用详解:从入门到精通
  • 联通线路物理服务器选择的关键要点
  • 短视频矩阵系统的崛起:批量发布功能与多平台矩阵的未来
  • Redis基础学习(五大值数据类型的常用操作命令)
  • 中韩SD-WAN网络加速专线:提升国内与韩国公司网络性能的关键
  • ThreadPoolTaskExecutor 的使用案例
  • 东南亚主播解决方案|东南亚 TikTok 直播专线:纯净住宅 IP 、直播不卡顿
  • 分布式理论:CAP、Base理论
  • iOS打包流程
  • C++11 算法详解:std::copy_if 与 std::copy_n
  • 库制作与原理
  • Web前端开发: :where(伪类函数选择器)
  • Python之--列表
  • 实时音视频通过UDP打洞实现P2P优先通信
  • Python爬虫实战:研究python-nameparser库相关技术
  • nvm npm nrm 使用教程
  • Crazyflie支持MATLAB/Simulink控制 基于NOKOV度量动捕系统实现
  • 安装 asciidoctor-vscode 最新版
  • 【Python篇】PyCharm 安装与基础配置指南
  • Spring AI 基本组件详解 —— ChatClient、Prompt、Memory
  • Fiddler-关于抓取Android手机包,安装证书后页面加载失败,提示当前证书不可信存在安全风险的问题
  • Rust 中字符串类型区别解析
  • Rust 仿射类型(Affine Types)