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 小时前
Kubernetes 日志管理
docker·容器·kubernetes
秋饼3 小时前
【K8S测试程序--git地址】
git·容器·kubernetes
oMcLin3 小时前
如何在RHEL 9上配置并优化Kubernetes 1.23高可用集群,提升大规模容器化应用的自动化部署与管理?
kubernetes·自动化·php
ghostwritten4 小时前
Kubernetes 网络模式深入解析?
网络·容器·kubernetes
原神启动14 小时前
K8S(七)—— Kubernetes Pod 基础概念与实战配置
云原生·容器·kubernetes
不想画图5 小时前
Kubernetes(五)——rancher部署和Pod详解
linux·kubernetes·rancher
大都督老师5 小时前
配置 containerd 使用镜像加速器拉取 Docker Hub 镜像
容器·kubernetes·k8s
木童66215 小时前
Kubernetes 操作管理完全指南:从陈述式到声明式,覆盖全生命周期
云原生·容器·kubernetes
不想画图16 小时前
Kubernetes(三)——组网概念和基础操作指令
云原生·容器·kubernetes