kubernetes - 以其他 clusterIP 为目标的端点 IP 地址
问题描述
我想创建多个服务端点,它们都针对同一个服务 clusterIP。根据文档说明,不应该这样做https://kubernetes.io/docs/concepts/services-networking/service/#services-without-selectors
端点 IP 地址不能是其他 Kubernetes 服务的集群 IP,因为 kube-proxy 不支持将虚拟 IP 作为目标。
但是,我试了一下,它似乎工作得完美无缺。Service-a 正在运行一个我想用于 gRPC 负载平衡的 traefik 代理,并且调用我的 service-b 和 service-c 端点,然后根据主机名进行路由是开箱即用的。
我的问题是,我在这里错过了什么吗?我应该选择使用内部负载均衡器吗?如果我使用此设置,我会遇到更进一步的问题吗?
服务 A,使用 clusterIP 定义
apiVersion: v1
kind: Service
metadata:
name: service-a
spec:
clusterIP: 10.3.62.56
ports:
- name: web
port: 80
protocol: TCP
targetPort: 80
selector:
app.kubernetes.io/instance: traefik
app.kubernetes.io/name: traefik
type: ClusterIP
服务 B,在没有 clusterIP 和自定义端点的情况下定义,服务 A clusterIP
apiVersion: v1
kind: Service
metadata:
name: service-b
spec:
clusterIP: None
ports:
- protocol: TCP
port: 80
targetPort: 80
---------
apiVersion: v1
kind: Endpoints
metadata:
name: service-b
subsets:
- addresses:
- ip: 10.3.62.56
ports:
- port: 80
服务 C,未定义 clusterIP 和带有服务 A clusterIP 的自定义端点
apiVersion: v1
kind: Service
metadata:
name: service-c
spec:
clusterIP: None
ports:
- protocol: TCP
port: 80
targetPort: 80
---------
apiVersion: v1
kind: Endpoints
metadata:
name: service-c
subsets:
- addresses:
- ip: 10.3.62.56
ports:
- port: 80