Kubernetes 如何配置大使,使其能够映射到容器上的多个端口

Kubernetes 如何配置大使,使其能够映射到容器上的多个端口,kubernetes,load-balancing,reverse-proxy,kubernetes-ingress,ambassador,Kubernetes,Load Balancing,Reverse Proxy,Kubernetes Ingress,Ambassador,我正在使用Ambassador作为kubernetes设置的入口控制器。我需要连接到容器上的多个端口,例如,我有一个RejectDB容器,我需要连接到端口8085,用于web ui,端口28015,用于RDB-API,端口29015,用于向RejectDB和集群添加节点 我尝试了不同的配置,但都不起作用。我尝试的配置: 1-此配置适用于最新的映射,这意味着如果我将8085映射替换为29015,并将其放在最后,我可以访问web ui,但不能访问其他部分等等 getambassador.io/con

我正在使用Ambassador作为kubernetes设置的入口控制器。我需要连接到容器上的多个端口,例如,我有一个RejectDB容器,我需要连接到端口8085,用于web ui,端口28015,用于RDB-API,端口29015,用于向RejectDB和集群添加节点

我尝试了不同的配置,但都不起作用。我尝试的配置: 1-此配置适用于最新的映射,这意味着如果我将8085映射替换为29015,并将其放在最后,我可以访问web ui,但不能访问其他部分等等

getambassador.io/config: |
  ---
  apiVersion: ambassador/v1
  kind: Mapping
  name: rethinkdb_mapping
  prefix: /rethinkdb:28015/
  service: rethinkdb:28015
  labels:
    ambassador:
      - request_label:
        - rethinkdb:28015
  ---
  apiVersion: ambassador/v1
  kind: Mapping
  name: rethinkdb_mapping
  - prefix: /rethinkdb:8085/
    service: rethinkdb:8085
  labels:
    ambassador:
      - request_label:
        - rethinkdb:8085
  ---
  apiVersion: ambassador/v1
  kind: Mapping
  name: rethinkdb_mapping
  prefix: /rethinkdb:29015/
  service: rethinkdb:29015
  labels:
    ambassador:
      - request_label:
        - rethinkdb:29015
2-这个根本不起作用

getambassador.io/config: |
  ---
  apiVersion: ambassador/v1
  kind: Mapping
  name: rethinkdb_mapping
  - prefix: /rethinkdb:8085/
    service: rethinkdb:8085
 - prefix: /rethinkdb:29015/
   service: rethinkdb:29015
 - prefix: /rethinkdb:28015/
   service: rethinkdb:28015

如何配置Ambassador以便访问容器的所有端口?

尝试输入不同的映射名称,如下面的示例所示:

apiVersion: v1
kind: Service
metadata:
  name: rethinkdb
  annotations:
    getambassador.io/config: |
      ---
      apiVersion: ambassador/v1
      kind: Mapping
      name: rethinkdb_mapping
      prefix: /rethinkdb:28015/
      service: rethinkdb:28015
      labels:
        ambassador:
          - request_label:
            - rethinkdb:28015
      ---
      apiVersion: ambassador/v1
      kind: Mapping
      name: rethinkdb_mapping1
      prefix: /rethinkdb:8085/
      service: rethinkdb:8085
      labels:
        ambassador:
          - request_label:
            - rethinkdb:8085
      ---
      apiVersion: ambassador/v1
      kind: Mapping
      name: rethinkdb_mapping2
      prefix: /rethinkdb:29015/
      service: rethinkdb:29015
      labels:
        ambassador:
          - request_label:
            - rethinkdb:29015
spec:
  type: ClusterIP
  clusterIP: None
请记住将正确的服务名称放入映射定义内的服务标签中

注意缩进和正确语法。


我希望它能有所帮助。

尝试使用不同的映射名称,如下面的示例所示:

apiVersion: v1
kind: Service
metadata:
  name: rethinkdb
  annotations:
    getambassador.io/config: |
      ---
      apiVersion: ambassador/v1
      kind: Mapping
      name: rethinkdb_mapping
      prefix: /rethinkdb:28015/
      service: rethinkdb:28015
      labels:
        ambassador:
          - request_label:
            - rethinkdb:28015
      ---
      apiVersion: ambassador/v1
      kind: Mapping
      name: rethinkdb_mapping1
      prefix: /rethinkdb:8085/
      service: rethinkdb:8085
      labels:
        ambassador:
          - request_label:
            - rethinkdb:8085
      ---
      apiVersion: ambassador/v1
      kind: Mapping
      name: rethinkdb_mapping2
      prefix: /rethinkdb:29015/
      service: rethinkdb:29015
      labels:
        ambassador:
          - request_label:
            - rethinkdb:29015
spec:
  type: ClusterIP
  clusterIP: None
请记住将正确的服务名称放入映射定义内的服务标签中

注意缩进和正确语法。


我希望它能有所帮助。

谢谢你的回答,但除了最后的“规格”部分,它几乎与我自己的配置相同。你能详细描述一下我该如何更改映射名称吗?顺便说一句,缩进和语法的问题是因为我在测试不同的配置,看看其中一个是否有效,我只是复制了最后一个配置,但我用正确的缩进再次测试了它,但正如我所说的,只有最后一个配置有效。另一件事是我的RDB服务的名称,它为其他入口控制器(如Traefik)工作。我更新了我的答案,很简单,它即将更改映射名称,这取决于您如何命名,最重要的是不同,如:mapping1、mapping2、mapping3。但是每个前缀都应该包含名称作为服务。如果问题仍然存在-谈到RDB的服务名称之间的连接,它正在为其他入口控制器工作,只需创建单独的服务,该服务将被设计为入口控制器。如果我有所有映射通用的超时值,有没有办法将其添加为公共值,而不是添加到每个映射中?谢谢您的回答,但除了最后的“spec”部分之外,它几乎与我自己的配置相同。你能详细描述一下我该如何更改映射名称吗?顺便说一句,缩进和语法的问题是因为我在测试不同的配置,看看其中一个是否有效,我只是复制了最后一个配置,但我用正确的缩进再次测试了它,但正如我所说的,只有最后一个配置有效。另一件事是我的RDB服务的名称,它为其他入口控制器(如Traefik)工作。我更新了我的答案,很简单,它即将更改映射名称,这取决于您如何命名,最重要的是不同,如:mapping1、mapping2、mapping3。但是每个前缀都应该包含名称作为服务。如果问题仍然存在-谈到RDB服务名称之间的连接,它正在为其他入口控制器工作,只需创建单独的服务,该服务将设计为入口控制器。如果我有所有映射的公共超时值,是否有方法将其添加为公共值,而不是将其添加到每个映射中?