k8s中port,targetPort,nodePort,containerPort的区别

一、说明

在 Kubernetes 中,port、targetPort、nodePort 和 containerPort 是用于定义服务(Service)和容器之间网络通信的不同参数。

它们各自的作用和含义如下:
1. port

  • 定义:这是服务对外暴露的端口号。
  • 作用:客户端通过这个端口号来访问 Kubernetes 服务。
  • 层面:服务层面的端口号。
  • 示例:
yaml 复制代码
spec:
  ports:
    - port: 80

在上面的配置中,客户端可以通过集群中的服务 IP 和端口 80 访问服务。
2. targetPort

  • 定义:这是流量从 port 转发到后端 Pod 的端口号。
  • 作用:指定了服务将流量转发到后端容器的哪个端口。
  • 层面:容器层面的端口号。
  • 示例:
yaml 复制代码
spec:
  ports:
    - port: 80
      targetPort: 8080

注:在上面的配置中,流量会从 port 80 转发到后端 Pod 的 targetPort 8080 上。
3. nodePort

  • 定义:这是将流量从集群外部路由到服务的端口号。
  • 作用:当服务类型是 NodePort 时,nodePort 定义了每个节点上暴露的端口,通过这个端口外部可以访问到服务。
  • 层面:集群外部访问服务的端口号。
  • 示例:
yaml 复制代码
spec:
  type: NodePort
  ports:
    - port: 80
      targetPort: 8080
      nodePort: 30007

在上面的配置中,客户端可以通过任何一个集群节点的端口 30007 访问服务,流量会转发到服务的 port 80,然后转发到后端 Pod 的 targetPort 8080。

总结表格

示例 YAML 配置

yaml 复制代码
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  type: NodePort
  selector:
    app: my-app
  ports:
    - port: 80           # 对外暴露的端口
      targetPort: 8080   # 转发到后端 Pod 的端口
      nodePort: 30007    # 集群外部访问的端口

注:在这个示例中,客户端可以通过 nodePort 30007 访问服务,服务会将流量转发到 port 80,并最终将流量发送到后端 Pod 的 targetPort 8080 上。

4. containerPort

定义:containerPort 是容器中应用程序运行的端口。

作用:将容器中应用程序的端口暴露给容器内外的通信。

层面:容器内的端口号。

二、总结

port 是服务对内部暴露的端口,nodePort 是服务对外部暴露的端口。

targetPort 是服务将流量转发到后端 Pod 的端口,containerPort 是容器中应用程序运行的端口。

相关推荐
爱吃芝麻汤圆3 小时前
k8s之Kubebuilder 的设计哲学
云原生·容器·kubernetes
裁二尺秋风5 小时前
k8s(12) — 版本控制和滚动更新(金丝雀部署理念)
云原生·容器·kubernetes
项目題供诗5 小时前
黑马k8s(六)
云原生·容器·kubernetes
项目題供诗13 小时前
黑马k8s(九)
云原生·容器·kubernetes
{⌐■_■}16 小时前
【gRPC】HTTP/2协议,HTTP/1.x中线头阻塞问题由来,及HTTP/2中的解决方案,RPC、Protobuf、HTTP/2 的关系及核心知识点汇总
网络·网络协议·计算机网络·http·rpc·golang
wjy6_18 小时前
Rocky Linux 9.5 基于kubeadm部署k8s
linux·运维·kubernetes
oceanweave1 天前
【K8S学习之生命周期钩子】详细了解 postStart 和 preStop 生命周期钩子
学习·kubernetes
gnufre1 天前
Kubernetes 1.28 无 Docker 运行时环境下的容器化构建实践:Kaniko + Jenkins 全链路详解
kubernetes·jenkins·kaniko
凯雀安全1 天前
printspoofer的RPC调用接口的简单代码
qt·网络协议·rpc
川石教育1 天前
测试工程师如何学会Kubernetes(k8s)容器知识
云原生·容器·kubernetes·kubernetes容器·kubernetes教程