通过 Kubernetes 中的多个内部地址到达服务
Reach service through multiple internal addresses in Kubernetes
默认情况下,在 Kubernetes 中,在部署服务时会创建一个内部地址。可以通过以下地址访问此服务:my-svc.my-namespace.svc.cluster-domain.example
(doc reference)
我想在部署此服务时向其添加更多内部地址(我使用 helm 来部署我的服务)。我希望能够通过 my-svc
、my-svc-1
和 my-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
默认情况下,在 Kubernetes 中,在部署服务时会创建一个内部地址。可以通过以下地址访问此服务:my-svc.my-namespace.svc.cluster-domain.example
(doc reference)
我想在部署此服务时向其添加更多内部地址(我使用 helm 来部署我的服务)。我希望能够通过 my-svc
、my-svc-1
和 my-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
$ 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