修改 K8S Service 资源类型 NodePort 的端口范围

在 Kubernetes 中,Service 类型为 NodePort 时,默认分配的端口范围为 30000~32767。如果你希望使用自定义端口(如 8080、8888 等),就需要修改 kube-apiserver 的默认配置。

本文将详细介绍如何修改 Kubernetes 中 NodePort 的端口范围,并提供完整的实战操作步骤。

一、背景说明

默认情况下,Kubernetes 的 NodePort 服务只能绑定在 30000~32767 之间的端口。这是出于安全与冲突考虑设定的默认值。但在实际业务中,我们常常需要开放特定端口(如 8080、8088、8888 等)供外部访问。

若尝试直接指定非默认端口,会出现如下错误:

The Service "svc-xiuxian-nodeport" is invalid:
spec.ports[0].nodePort: Invalid value: 8080: provided port is not in the valid range.

二、修改 NodePort 端口范围

1. 修改 kube-apiserver 配置

编辑 kube-apiserver.yaml,路径一般为 /etc/kubernetes/manifests/kube-apiserver.yaml

spec:containers:- command:- kube-apiserver- --service-node-port-range=1-50000  # 添加或修改此行

✅ 建议将端口范围扩大到常用的 1-50000,避免占用过小或过大端口。

2. 热重载 kube-apiserver

因为 kube-apiserver 是以 static Pod 运行的,我们只需移动资源清单文件触发重建:

# 进入 kube-apiserver 配置目录
cd /etc/kubernetes/manifests# 暂时移出配置文件
mv kube-apiserver.yaml /opt/# 再移回来以触发重建
mv /opt/kube-apiserver.yaml ./

3. 确认 apiserver 重启生效

kubectl get pods -n kube-system -l tier=control-plane -o wide

输出类似:

kube-apiserver-master231  1/1   Running   0     57s

表示已经重新启动。

三、验证配置是否生效

我们创建一个 NodePort 类型的 Service,并指定 8080 端口:

1. Service YAML 文件

apiVersion: v1
kind: Service
metadata:name: svc-xiuxian-nodeportlabels:apps: xiuxian
spec:type: NodePortports:- port: 90targetPort: 80protocol: TCPnodePort: 8080selector:version: v1

2. 应用配置并验证

kubectl apply -f 02-svc-NodePort-xiuxian.yaml
kubectl get svc svc-xiuxian-nodeport输出:
NAME                   TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)       AGE
svc-xiuxian-nodeport   NodePort   10.200.21.38    <none>        90:8080/TCP   23h

✅ 成功使用 8080 作为 NodePort 端口!

四、总结

通过修改 kube-apiserver 的参数 --service-node-port-range,我们可以灵活自定义 NodePort 的端口范围,满足实际业务需求。

  • 默认范围:30000~32767

  • 修改方式:编辑 kube-apiserver 配置文件

  • 应用修改:移动资源清单触发重启

📌 建议根据实际情况合理设定端口范围,避免与系统服务冲突。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/pingmian/82452.shtml

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

相关文章

MySQL 可观测性最佳实践

MySQL 简介 MySQL 是一个广泛使用的开源关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;以其高性能、可靠性和易用性而闻名&#xff0c;适用于各种规模的应用&#xff0c;从小型网站到大型企业级系统。 监控 MySQL 指标是维护数据库健康、优化性能和确保数据…

CentOS安装最新Elasticsearch8支持向量数据库

大家都知道Elasticsearch是支持向量的存储和查询的&#xff0c;今天我们来介绍下如何安装支持向量数据库的Elasticsearch &#xff0c; 操作环境是CentOS。 成功安装截图 大家进入系统shell&#xff0c;跟我执行下面命令进行安装。 更新系统 [rootlocalhost ~]# sudo yum u…

SDL2常用函数SDL事件处理:SDL_Event|SDL_PollEvent

SDL_Event SDL_Event是个联合体&#xff0c;是SDL中所有事件处理的核心。 SDL_Event是SDL中使用的所有事件结构的并集。 只要知道了那个事件类型对应SDL_Event结构的那个成员&#xff0c;使用它是一个简单的事情。 下表罗列了所有SDL_Event的所有成员和对应类型。 Uint32typ…

webpack吐环境分析

需要解决的问题 扣取下来的webpack文件过大 解决思路 用ast将需要的代码扣下来 结果展示 实现步骤 第一步&#xff1a;我们得知道需要哪些模块 在入口处&#xff0c;增加模块记录 第二步&#xff0c;分析ast代码 通过分析发现,key 有三种值 分别为NumbericLiteral、StringLi…

微软语音合成助手资源下载

微软语音合成助手资源下载 【下载地址】微软语音合成助手资源下载 微软语音合成助手是一款基于先进AI技术的文本转语音工具&#xff0c;能够将文字内容快速转换为自然流畅的语音。它支持高度自定义的语音参数&#xff0c;包括语速、音调、发音和停顿等&#xff0c;满足多样化需…

青少年编程与数学 02-020 C#程序设计基础 01课题、C#编程概要

青少年编程与数学 02-020 C#程序设计基础 01课题、C#编程概要 一、微软.NET开发平台1. 核心组件2. 特点3. 应用场景4. 开源与社区5. 版本与更新6. 学习资源 二、C# 编程语言1. 历史背景2. 语言特性&#xff08;1&#xff09;面向对象&#xff08;2&#xff09;类型安全&#xf…

图片文件未正确加载​—— Webpack 无法正确解析图片,生成了一个空的 Base64 URL

如果你打印出的图片 URL 是 data:image/png;base64, 后面没有实际的 Base64 数据&#xff0c;可能有以下几种原因&#xff1a; ​​1. 图片文件未正确加载​​ ​​可能原因​​&#xff1a;图片路径错误&#xff0c;导致 Webpack 无法正确解析图片&#xff0c;生成了一个空的…

3D打印仿造+ AI大脑赋能,造出会思考的全景相机

在自然界的生存竞赛里&#xff0c;节肢动物堪称视觉界的 "卷王"&#xff01;那些长着复眼的小机灵鬼&#xff0c;比如蜜蜂、蜻蜓&#xff0c;别看个头小&#xff0c;视觉能力却超强。 现在&#xff0c;科学家把它们的眼睛 " 偷"过来啦 —— 不是真偷&…

rabbitmq单机多实例部署

RabbitMQ 单实例部署 单实例部署是指在一台服务器上运行一个 RabbitMQ 实例。这种部署方式适用于小型应用或开发环境,配置简单,资源占用较少。单实例部署的核心是安装 RabbitMQ 并启动服务,通常需要配置 Erlang 环境,因为 RabbitMQ 是基于 Erlang 编写的。单实例部署的优势…

知识宇宙-职业篇:后端工程师

名人说&#xff1a;博观而约取&#xff0c;厚积而薄发。——苏轼《稼说送张琥》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、后端工程师的定义与职责1. 什么是后端工程师&#xff1f;2. 主要工作职责 二、…

机试 | vector/array Minimum Glutton C++

题目地址 &#xff1a; C - Minimum Glutton #include<stdio.h> #include<iostream> #include<vector> #include<algorithm> using namespace std; int main() {//N:菜肴数&#xff0c;X&#xff1a;总甜度阈值&#xff0c;Y&#xff1a;总咸度阈值int…

【Django ORM】三万字了解Django ORM的基本概念和基本使用

第一章 Django ORM 概述 1.1 什么是Django ORM 1.1.1 ORM的基本概念 ORM 即对象关系映射&#xff08;Object Relational Mapping&#xff09;&#xff0c;它是一种编程技术&#xff0c;用于在面向对象编程语言&#xff08;如 Python&#xff09;和关系型数据库&#xff08;如…

在springboot项目中是否可以使用两个不同地址的redis

在Spring Boot项目中可以通过多数据源配置的方式使用两个不同地址的Redis实例。以下是具体实现方案 1.依赖配置 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><exclusio…

JMeter 教程:监控性能指标 - 第三方插件安装(PerfMon)

目录 【简单介绍】 ✅ PerfMon 插件是什么&#xff1f; &#x1f6e0;️ 安装 PerfMon 插件 方法一&#xff1a;使用 JMeterPluginsManager 安装&#xff08;推荐&#xff09; &#x1f50c; 安装完成后组件介绍 &#x1f310; 服务端安装 ServerAgent&#xff08;用于被…

【后端高阶面经:数据库篇】19、分库分表查询困境:无分库分表键时的高效应对

一、分库分表下的无分片键查询困境 在分布式数据库架构中,分库分表通过分片键(如买家ID)将数据分散存储,显著提升了单表性能和系统扩展性。然而,当业务需要从非分片键维度(如卖家ID)进行查询时,传统架构暴露出以下核心问题: 1.1 跨分片扫描的性能灾难 数据分散性:以…

ARM架构

目录 哈佛结构 arm指令格式 有符号数的溢出&#xff08;8bit)​ 无符号数的进位/借位 CPSR&#xff08;当前程序状态寄存器&#xff09; ARM模式 arm异常类型 ARMv7架构异常向量表 arm异常的处理流程 arm寄存器 堆栈指针寄存器 arm模式切换流程 LDR指令、STR指令 指…

canvas(三)-动画3d

在 <canvas> 中实现 3D 动画通常需要借助 WebGL 技术,因为原生的 2D 上下文(CanvasRenderingContext2D)无法直接支持 3D 渲染。WebGL 是基于 OpenGL ES 2.0 的 JavaScript API,可以直接在浏览器中实现高性能的 3D 图形渲染。以下是关于 <canvas> 3D 动画的概念…

右键打开 pycharm 右键 pycharm

文件夹右键打开pycharm aaa.reg notepad 右下角把文件格式改为&#xff1a;ansi Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\Directory\Background\shell\PyCharm] "Open with PyCharm" "Icon""\"D:\\soft\\PyCharm 2024.1.4\\bi…

一张纸决定的高度

从我捧起《格局》这个本书开始&#xff0c;转眼间两个月过去了。 回头望一望&#xff0c;好似还在昨天。 这两个月&#xff0c;心态在变&#xff0c;前进的方向在变&#xff0c;但唯一不变的就是每天晚上睡前&#xff0c;留给自己十分钟的读书时光。 我也从来没想过&#xf…

R 语言科研绘图 --- 热力图-汇总

在发表科研论文的过程中&#xff0c;科研绘图是必不可少的&#xff0c;一张好看的图形会是文章很大的加分项。 为了便于使用&#xff0c;本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中&#xff0c;获取方式&#xff1a; R 语言科研绘图模板 --- sciRplothttps://mp.…