是否可以使用端口名称 select kubernetes 中多端口服务上的端口?

Is it possible to select the port on a multiport service in kubernetes using the port name?

我在同一个命名空间中有两个 pods 运行。

可以通过以下多端口服务访问其中一个:

kind: Service
apiVersion: v1
metadata:
  name: bacon-service
spec:
  selector:
    app: bacon-app
    restype: pod
  ports:
  - name: http
    port: 80
    targetPort: 8001
    protocol: TCP
  - name: http2
    port: 8787
    targetPort: 8787
    protocol: TCP
  type: ClusterIP

第二个需要访问第一个 pod 的 http2 port 以进行 gRPC 事务。

我一直在用端口号访问,一直没问题。

http://bacon-app:8787

但我认为一个聪明的实现方式是使用端口名称。 因此,如果某天有人决定更改服务端口,客户端 pod 不会受到影响。

我尝试通过以下方式实现这一点:

http://bacon-app:http2

哪个根本行不通,有没有可能以某种方式做到这一点?

不,抱歉,但这是不可能的,因为这是纯 http 路由,与 Kubernetes 无关。浏览器/http 客户端只理解 <scheme>://<host>[:port]