Kubernetes 集装箱港口是港口中集装箱的港口还是港口本身?

Kubernetes 集装箱港口是港口中集装箱的港口还是港口本身?,kubernetes,Kubernetes,我看到在Pod/Deployment YAML中,有一个容器区域,我们在其中声明我们的容器,每个容器都可以将我们的端口(数组)指定为containerPort 如果每个Pod都有来自多个需求(web、数据库等)的多个容器,并且每个容器都有一个端口,那么我们如何在该部署的服务中选择targetPort?(我们选择哪个集装箱港口) 该服务是吊舱/部署服务还是容器服务?因为在服务的定义中,提到了它是一种在集群中通信pod的方法 感谢您可以拥有一个在规范部分中具有多个端口的服务,以公开多个端口并定义目标

我看到在Pod/Deployment YAML中,有一个容器区域,我们在其中声明我们的容器,每个容器都可以将我们的端口(数组)指定为containerPort

如果每个Pod都有来自多个需求(web、数据库等)的多个容器,并且每个容器都有一个端口,那么我们如何在该部署的服务中选择targetPort?(我们选择哪个集装箱港口)

该服务是吊舱/部署服务还是容器服务?因为在服务的定义中,提到了它是一种在集群中通信pod的方法


感谢

您可以拥有一个在规范部分中具有多个端口的服务,以公开多个端口并定义目标端口。目标端口必须与pod中容器公开的端口相匹配。此外,端口和目标端口不必相同

spec:
  ports:
  - port: 3306
    name: mysql
    targetPort: 3306
  selector:
    name: mysql
    app: demo
  - port: 80
    name: web
    targetPort: 80
  selector:
    name: web
    app: demo

您应该通过服务端口与容器通信,服务将把该请求加载到其中一个POD(如果您有多个副本)。无论何时pod进入或离开,它都将具有不同的IP。使用服务可以避免硬编码pod的IP。

您可以使用一个针对多个端口的服务

apiVersion: v1
kind: Service
metadata: 
  name: myservice
spec: 
  ports:
  - name: web
    port: 80
    targetPort: 8080
  - name: database
    port: 3379
    targetPort: 3379
  selector: 
    name: mypod

你能举一个你遇到的具体问题的例子吗,可能是关于骷髅吊舱和服务YAML文件?您通常应该默认为每个pod有一个容器(您不希望每次有新的应用程序构建时都重新启动数据库),这可能有助于稍微澄清您的设置。“端口中的容器”是没有意义的。