是否可以使用端口名称 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]
我在同一个命名空间中有两个 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]