通过 Kubernetes 中的多个内部地址到达服务

Reach service through multiple internal addresses in Kubernetes

默认情况下,在 Kubernetes 中,在部署服务时会创建一个内部地址。可以通过以下地址访问此服务:my-svc.my-namespace.svc.cluster-domain.example (doc reference)

我想在部署此服务时向其添加更多内部地址(我使用 helm 来部署我的服务)。我希望能够通过 my-svcmy-svc-1my-svc-2 访问相同的服务。我想知道是否可以将这些别名添加到部署过程中,以便它自动为同一地址生成多个条目。

作为解决方法,我了解到我可以使用 CoreDNS 并添加 CNAME 条目,但这绝对不是最佳选择,因为我不知道在部署服务时是否可以自动将这些条目添加到 CoreDNS 中。如果可能的话,我很乐意知道如何实现它。

我还没试过,但也许你可以为 my-svc-1、my-svc-2 添加 Service Type: ExternalName 并让它们指向 my-svc.my-namespace.svc.cluster-domain.example.

在此处查看文档:service-external-name

Manuel 提到的解决方案是正确的。我测试了它并且它有效。我使用了以下 yaml:

常规服务公开:

apiVersion: v1
kind: Service
metadata:
  labels:
    run: my-svc
  name: my-svc
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: my-svc

外部名称服务:

---
apiVersion: v1
kind: Service
metadata:
  name: my-svc-1
spec:
  type: ExternalName
  externalName: my-svc.default.svc.cluster.local
---
apiVersion: v1
kind: Service
metadata:
  name: my-svc-2
spec:
  type: ExternalName
  externalName: my-svc.default.svc.cluster.local

正如预期的那样,ExternalName 类型服务创建了指向 my-svc

的 CNAME 记录
$ dig my-svc-2 +search

;; QUESTION SECTION:
;my-svc-2.default.svc.cluster.local. IN A

;; ANSWER SECTION:
my-svc-2.default.svc.cluster.local. 13 IN CNAME my-svc.default.svc.cluster.local.
my-svc.default.svc.cluster.local. 13 IN A       10.100.222.87