小编典典

Kubernetes Service定义中targetPort和port的区别

all

一个 KubernetesService可以在服务定义中有一个targetPort和:port

kind: Service
apiVersion: v1
metadata:
  name: my-service
spec:
  selector:
    app: MyApp
  ports:
  - protocol: TCP
    port: 80
    targetPort: 9376

port和 和有什么不一样targetPort


阅读 117

收藏
2022-05-29

共1个答案

小编典典

服务: 这会将流量引导到 pod。

TargetPort: 这是您的应用程序在容器内运行的实际端口。

端口: 有时您的容器内的应用程序在不同的端口上提供不同的服务。

示例:
实际应用程序可以运行8080,并且该应用程序的健康检查可以8089在容器的端口上运行。因此,如果您在没有端口的情况下访问服务,它不知道应该将请求重定向到容器的哪个端口。服务需要有一个映射,以便它可以访问容器的特定端口。

kind: Service
apiVersion: v1
metadata:
  name: my-service
spec:
  selector:
    app: MyApp
  ports:
    - name: http
      nodePort: 30475
      port: 8089
      protocol: TCP
      targetPort: 8080
    - name: metrics
      nodePort: 31261
      port: 5555
      protocol: TCP
      targetPort: 5555
    - name: health
      nodePort: 30013
      port: 8443
      protocol: TCP
      targetPort: 8085

如果您点击my-service:8089流量被路由到8080容器(targetPort)。同样,如果您点击my- service:8443它,它将被重定向到8085容器(targetPort)。但这myservice:8089是 Kubernetes
集群内部的,可以在一个应用程序想要与另一个应用程序通信时使用。因此,要从集群外部访问服务,需要在运行 kubernetes
的主机上公开端口,以便将流量重定向到容器的端口。这是node port(主机上暴露的端口)。从上面的示例中,您可以通过host_ip:nodePort

假设您的主机 ip 是您可以通过, ,10.10.20.20访问 http、metrics、health services
10.10.20.20:30475``10.10.20.20:31261``10.10.20.20:30013

2022-05-29