目录

在 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.pswp.cn/bicheng/88111.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/88111.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/88111.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTTP 响应头信息详解

HTTP 响应头信息详解 引言 HTTP(超文本传输协议)是互联网上应用最为广泛的网络协议之一。在HTTP协议中,响应头信息是服务器向客户端发送的重要信息之一。响应头信息包含了关于响应的元数据,如状态码、内容类型、缓存策略等。本文将详细介绍HTTP响应头信息的概念、类型、作…

去掉长按遥控器power键后提示关机、飞行模式的弹窗

首先找到对应长短按power键的位置&#xff1a;frameworks\base\policy\src\com\android\internal\policy\impl\PhoneWindowManager.javaprivate final Runnable mPowerLongPress new Runnable() {Overridepublic void run() {// The context isnt readif (mLongPressOnPowerBe…

Redis-哨兵机制Sentinel

redis的主从复制模式下,一旦主节点出现了故障无法提供服务了,需要人工进行主从切换,同时大量的客户端需要被通知切换到新的主节点上,对于有了一定规模的应用来说,这种方案的延迟是无法接受的,于是redis2.8提供了Redis-Sentinel(哨兵)来解决这个问题. 目录 1.啥是哨兵节点: 2.r…

SQL 视图

SQL 视图 引言 SQL 视图是数据库管理系统中的一种重要概念,它允许用户以不同的方式查看数据库中的数据。本文将详细介绍 SQL 视图的概念、作用、创建方法以及在实际应用中的注意事项。 一、SQL 视图的概念 SQL 视图是数据库中的一种虚拟表,它并不存储实际的数据,而是基于…

ESP32-使用VSCODE 各种问题总结汇总

1 问题 1 1.1 具体问题描述-config:idf.customExtraPath 无法正确描述launch.json 中使用了一个变量&#xff1a; ${config:idf.customExtraPaths}但在 VSCode 的设置中&#xff0c;并没有找到对应的设置项 idf.customExtraPaths&#xff0c;所以无法解析。 1.2 问题解决 1.2.1…

【剪裁Patch】已标注的WSI剪裁Patch的处理流程(以QuPath软件得到的标注信息为例)

1. 整体处理思路 整体处理流程如图所示,概括来说就是:根据标注信息将WSI区分为肿瘤区域和正常区域,对这个区域进行采样裁剪得到具有Patch级别标签的Patch。 当然,这里的Patch标签是根据标注信息决定的,如果标注的是癌症亚型信息,那么也可以将不同亚型的Patch区分出来。 …

Qt 与Halcon联合开发九:算法类设计与实现讲解(附源码)

一、设计背景 在机器视觉系统中&#xff0c;算法是系统的核心。不同产品、不同项目对图像处理的要求不尽相同&#xff0c;因此算法需要具备&#xff1a; 灵活拓展&#xff1a;方便添加新算法统一调用&#xff1a;界面或上层逻辑不关心算法细节结构清晰&#xff1a;便于维护与…

npu-driver 23.0.3驱动安装

宿主机器上安装npu-driver/ npu-firmware这两个东西 wget -O Ascend-hdk-910b-npu-driver_23.0.3_linux-aarch64.run https://bj.bcebos.com/v1/aipe-easyedge-public/cann/eb_speed/Ascend-hdk-910b-npu-driver_23.0.3_linux-aarch64.run?authorizationbce-auth-v1%2F50c8bb…

LeetCode题解---<三数之和>

文章目录题目<三数之和>--Python解法题解题目<三数之和>–Python解法 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为…

探索Insplorion氢气传感器:高灵敏度与快速响应的创新解决方案

在追求更清洁、更安全能源的过程中&#xff0c;氢气作为一种理想的清洁能源载体&#xff0c;正日益受到全球的重视。然而&#xff0c;氢气的广泛应用也带来了新的挑战——如何确保其储存、运输和使用的安全性&#xff1f;Insplorion通过其独特的纳米等离子体传感&#xff08;NP…

【QT】事件(鼠标、按键、定时器、窗口)

文章目录1. 事件1.1 事件的介绍1.2 事件的处理2. 按键事件3. 鼠标事件4. 定时器5. 窗口事件1. 事件 1.1 事件的介绍 事件是应用程序内部或者外部产生的事情或者动作的统称。 在 Qt 中使用⼀个对象来表示⼀个事件。所有的 Qt 事件均继承于抽象类 QEvent。事件是由系统或者 Qt …

STM32固件升级设计——串口IAP升级(基于YMODEM协议)

目录 一、功能描述 1、BootLoader部分&#xff1a; 2、APP部分&#xff1a; 二、BootLoader程序制作 1、分区定义 2、 主函数 3、YMODEM协议的实现 4、程序跳转 三、APP程序制作 四、工程配置&#xff08;默认KEIL5&#xff09; 五、运行测试 结束语 概述 IAP&…

Cookie(搭配domain)/Session(搭配HttpServletRequest+HttpSession)

各位看官&#xff0c;大家早安午安晚安呀~~~如果您觉得这篇文章对您有帮助的话欢迎您一键三连&#xff0c;小编尽全力做到更好 欢迎您分享给更多人哦今天我们来学习&#xff1a;Cookie/Session1.Cookie/Session的简述我们在讲解HTTP协议的时候已经讲解过Cookie了HTTP 协议自身是…

240.搜索二维矩阵Ⅱ

纯暴力有点太唐了&#xff0c;不过竟然能过&#xff1b;还有行和列的表示我一直搞反了。。。class Solution {public boolean searchMatrix(int[][] matrix, int target) {for(int i 0 ;i<matrix.length;i){for(int j 0 ;j<matrix[0].length;j){if(matrix[i][j]target)…

【计算机组成原理】-CPU章节学习篇—笔记随笔

计算机组成原理 CPU 章节知识点总结&#xff08;适用于 408 考研&#xff09;​ 一、CPU 的功能与基本结构​ 1.1 CPU 的功能​ CPU&#xff08;中央处理器&#xff09;是计算机的核心部件&#xff0c;主要功能包括&#xff1a;​ 指令控制&#xff1a;程序的顺序执行&#xff…

公用测控装置的功能

公用测控装置在电力系统中广泛应用于变电站的高压开关单元、变压器本体及低压侧等对象。它集测量、控制、保护于一体&#xff0c;确保电网的安全、稳定运行。公用测控装置采用高性能硬件架构&#xff0c;如32位微控制器和独立AD采样技术&#xff0c;结合软件算法&#xff0c;实…

数据库|达梦DM数据库配置实例步骤

哈喽&#xff0c;你好啊&#xff0c;我是雷工&#xff01; 最近因为一个信创项目&#xff0c;要使用达梦DM数据库&#xff0c; 因此安装了达梦DM数据库来学习使用&#xff0c; 上一节中记录了安装Windows版本达梦DM数据库的过程步骤&#xff0c; 这一节紧接着上一节《数据库…

三十一、【高级特性篇】接口用例参数化与关联:实现上下文数据传递

三十一、【高级特性篇】接口用例参数化与关联:实现上下文数据传递 前言准备工作第一部分:后端数据模型调整1. 升级 `TestCase` 模型2. 生成并应用数据库迁移3. 更新 `TestCaseSerializer`第二部分:后端测试执行器强化1. 修改 `execute_api_test_case` 函数2. 修改 Celery 任…

PCA通过“找最大方差方向”实现降维,本质是用更少的变量捕捉原始数据的主要模式

什么事 PCA(主成分分析) PCA(主成分分析)的原理与通俗举例 PCA 是什么? PCA(Principal Component Analysis)是一种常用的降维算法,核心目标是将高维数据映射到低维空间,同时尽可能保留原始数据的关键信息(方差最大的方向)。 核心原理:找“最能代表数据的方向”…

JAVA synchronized关键字涉及的Monitor对象中 EntryList和WaitSet工作机制

在Java的synchronized同步机制中&#xff0c;Monitor对象的EntryList和WaitSet是两个关键队列&#xff0c;它们分别管理不同状态的线程。下面我将详细解释它们的工作原理&#xff0c;并提供代码示例说明。 EntryList&#xff08;锁竞争队列&#xff09; 作用机制 EntryList保…