kubernetes服务nodeport详解

Kubernetes NodePort服务详解

NodePort​ 是一种 Kubernetes 服务类型,通过在集群中的每个节点上开放一个静态端口,将应用程序暴露到外部。外部流量可以通过节点的 IP 地址和分配的端口访问该服务。

主要特性

  1. 端口范围:默认情况下,NodePort 使用 ​30000-32767​ 范围内的端口
  2. 访问方式:通过 <k8s节点IP>:<端口号> 从集群外部访问。
  3. 流量路由
    • 发送到 NodePort 端口的流量会被路由到对应的 Service。
    • Service 根据标签选择器(labels/selectors)将流量转发到后端某个 Pod。

适用场景

        ​场景适用开发和测试环境时快速暴露服务供外部访问。在无云负载均衡器的本地化环境中使用。还有就是当外部负载均衡器不可用时,直接通过节点暴露服务。


 工作原理

  1. 服务创建:创建 NodePort 服务时,Kubernetes 会:
    • 在每个节点上分配一个高位端口(如 31000)。
    • 创建一个 ClusterIP服务(集群内部访问),将流量路由到 Pod。
  2. 外部访问:用户通过 <k8s节点IP>:31000 访问服务,节点将流量转发给 Service。

 写一个YAML简单实例

apiVersion: v1
kind: Service
metadata:
  name: my-nodeport-service
spec:
  type: NodePort     #指定服务类型
  selector:
    app: my-app
  ports:
    - port: 80       # 服务端口(集群内部访问)
      targetPort: 80 # 后端 Pod 端口
      nodePort: 32342(30000-32767) # 手动指定 NodePort 端口(默认系统将自动分配)

服务类型的对比

服务类型用途访问范围
ClusterIP集群内部通信仅限集群内
NodePort通过节点 IP:端口 外部访问集群外
LoadBalancer云平台提供的负载均衡器自动分配外部 IP

常见问题排查

  1. 确保节点防火墙允许 NodePort 端口通信。
  2. 检查 Service 的标签选择器是否匹配 Pod 标签。
  3. 使用 kubectl get svc 确认 NodePort 是否已分配。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值