首页 > 解决方案 > 以其他 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

标签: kubernetesgoogle-kubernetes-engine

解决方案


推荐阅读