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



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

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

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

Manuel提到的解决方案是正确的。我测试过了,效果不错。我使用了以下yamls:

常规服务暴露:

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

ExternalName服务:

---
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

我还没有尝试过,但也许你可以为my-svc-1, my-svc-2添加服务类型:ExternalName,并让它们指向my-svc.my- namspace .svc.cluster-domain.example。

查看这里的文档:service-external-name

最新更新