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

修改 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 配置文件

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

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

相关文章:

  • 鸿蒙OSUniApp 实现动态的 tab 切换效果#三方框架 #Uniapp
  • uniapp-商城-70-shop(3-商品列表,点击规格,进行属性选择)
  • STM32单片机系统HAL库编程实践电子书
  • 车载通信网络 --- OSI模型中物理层和数据链路层
  • AI天气预报进入“大模型时代“:如何用Transformer重构地球大气模拟?
  • 第11章 标准化和软件知识产权基础知识,多媒体、图像相关
  • [PyMySQL]
  • 鸿蒙OSUniApp 开发的图文混排展示组件#三方框架 #Uniapp
  • mysql-tpcc-mysql压测工具使用
  • WIN--文件读写
  • Python函数异常处理底层实现原理
  • OpenLayers 加载ArcGIS瓦片数据
  • Spring AI系列之Spring AI 集成 ChromaDB 向量数据库
  • CVE-2024-36467 Zabbix权限提升
  • 新质生产力引擎:营销枢纽智能体贯通全链路,AI赋能企业数字化运营高效升级!
  • 关于(stream)流
  • Few-shot Personalized Scanpath Prediction
  • Windows中安装Neo4j图数据库的配置
  • Python基础语法(十四):Python常用内置模块及功能
  • C++基础算法————递推
  • 寻找郑州网站建设公司/今天全国疫情最新消息
  • 可以做系统同步时间的网站/西安seo服务
  • 郑州哪有做网站的汉狮/怎么发外链
  • 什么网站排名做的最好/百度金融
  • 苏州制作网站的公司/网络营销工程师是做什么的
  • 萍乡网站开发/网站建设公司seo关键词