Docker 具有多个后端端口的kubernetes负载平衡器

Docker 具有多个后端端口的kubernetes负载平衡器,docker,kubernetes,Docker,Kubernetes,我有一个具有三种不同后端类型的应用程序。他们每个人都在监听不同的端口(例如8080、8180、8280)。 现在我想使用http://example.com:{8081808280}。为了安全起见,每个服务应该运行两个吊舱 如果有多个后端,每个后端都有不同的端口,yaml文件应该是什么样子 我可以在同一文件中包含副本的定义吗?或者kubernetes中是否有某种主文件,我可以在其中包含其他文件 为此,您需要创建多个服务,有关详细信息,请参阅 例如(使用yaml,也可以使用json): 回答你问题

我有一个具有三种不同后端类型的应用程序。他们每个人都在监听不同的端口(例如8080、8180、8280)。 现在我想使用
http://example.com:{8081808280}
。为了安全起见,每个服务应该运行两个吊舱

  • 如果有多个后端,每个后端都有不同的端口,yaml文件应该是什么样子
  • 我可以在同一文件中包含副本的定义吗?或者kubernetes中是否有某种主文件,我可以在其中包含其他文件

  • 为此,您需要创建多个服务,有关详细信息,请参阅

    例如(使用yaml,也可以使用json):

    回答你问题的第二部分:

    --在一个文件中有多个定义(可以是服务,也可以是任何kubernetes yaml)

    不过,我建议为服务创建一个单独的文件,因为它们通常只加载一次,为您的pod定义创建一个单独的文件(因为这将更频繁地更改)

    在多服务定义中需要注意的一点是:在(至少是Kubernetes 1.3.5/1.3.6,我正在使用的版本)中,存在一个失控的pod问题,即某些选择器组合导致Kubernetes启动尽可能多的pod。要防止这种情况:测试和实验。只要你避免这种情况,它确实有效

    还可以使用单个服务入口点,该入口点可以定义为:

    apiVersion: v1
    kind: Service
    metadata:
      name: yourservice_1
      namespace: default
      labels:
        component: yourcomponent
    spec:
      type: NodePort
      selector:
        component: yourcomponent
      ports:
      - name: http
        port: 8080
        protocol: TCP
      - name: http2
        port: 8081
        protocol: TCP
      - name: http2
        port: 8082
        protocol: TCP
    

    如何获得所有这些服务的单一入口点?正如原始问题所述:
    http://example.com
    …啊,我对你的问题有不同的理解。请参阅答案的第2部分。服务是否可以指向其他服务?好了,他们需要指向豆荚。如果您使用的是负载平衡器服务,那么每个服务都会有自己的IP—所以您不能让example.com:81指向端口80上部署http中的POD,example.com:1883指向端口1883上的部署mqtt?(可能使用NodePort,但您需要手动配置负载平衡器以指向节点(可能会动态更改…)@GertvandenBerg您描述的场景(我理解您的描述),是入口:入口指向多个服务,因此可以组织application@NorbertvanNobelen除非Ingress仅支持HTTP服务(并且仅在端口80和443上),除非您使用的是特定于控制器的扩展(如Voyager的非标准Ingress资源和nginx Ingress和Ingress nginx的)(不同格式的)configmaps),这限制了可移植性-它增加了对特定入口控制器的依赖性。。。
    apiVersion: v1
    kind: Service
    metadata:
      name: yourservice_1
      namespace: default
      labels:
        component: yourcomponent
    spec:
      type: NodePort
      selector:
        component: yourcomponent
      ports:
      - name: http
        port: 8080
        protocol: TCP
      - name: http2
        port: 8081
        protocol: TCP
      - name: http2
        port: 8082
        protocol: TCP