如何解决通过 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 添加服务类型:ExternalName 并让它们指向 my-svc.my-namespace.svc.cluster-域.示例。
请参阅此处的文档: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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。