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 是否已分配。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值