2

我正在使用 Ambassador 来管理我的 Kubernetes 服务。我的 Kubernetes 服务由一些 Web 服务器和一些 postgres 组成。我按照此处的说明建立了到我的 Web 服务器的路由。这是一个例子:

  annotations:
    getambassador.io/config: |
      ---
      apiVersion: ambassador/v1
      kind:  Mapping
      name:  somewebservice
      prefix: /somewebservice
      service: somewebservice:80

这非常适合我的网络服务器。我能做到curl localhost/somewebservice,我得到了预期的回应。

我已经在我的 postgres 容器中设置了相同的注释,但我无法执行 psql。

  annotations:
    getambassador.io/config: |
      ---
      apiVersion: ambassador/v1
      kind:  Mapping
      name:  atlas
      prefix: /somepostgres
      service: somepostgres:5432

我看到以下内容:

$ psql -h 'localhost/somepostgres' -p 5432
psql: could not translate host name "localhost/somepostgres" to address: nodename nor servname provided, or not known

我的目标是让大使同时接受 HTTP/HTTPS 和 postgres 请求。谢谢你的时间。

4

1 回答 1

1

Postgres 是 TCP 服务(第 4 层)而不是 HTTP(s) 服务(第 7 层)。看起来 Ambassador 不支持仅 TCP 服务,即使Envoy 代理支持它。因此,您必须使用常规的 Kubernetes TCP 服务,如下所示:

kind: Service
apiVersion: v1
metadata:
  name: postgres-svc
spec:
  selector:
    app: postgres
  ports:
  - protocol: TCP
    port: 5432
于 2018-11-06T06:42:55.120 回答