【问题标题】:Kubernetes Service externalName with port DNS SRV带有端口 DNS SRV 的 Kubernetes 服务 externalName
【发布时间】:2017-04-26 15:33:48
【问题描述】:

Kubernetes 对DNS SRV lookups 的支持是否允许使用externalName 的服务?如果是,如何允许 pod 访问该记录?我的用例是一个外部提供的服务,其中第三方定义了端口号,我想将其表示在与 CNAME 相同的位置,即 k8s 服务。

我曾在 dnsPolicy 设置为 ClusterFirst 的 pod 内使用简单的 nslookup 查询,它似乎适用于内部的默认 kubernetes 服务:

x nslookup -type=SRV _https._tcp.kubernetes.default.svc
Server: 10.3.0.10
Address: 10.3.0.10#53

_https._tcp.kubernetes.default.svc.cluster.local    service = 10 100 443 kubernetes.default.svc.cluster.local.

但我尝试使用我自己的一个服务,它使用externalName 加上一个命名端口,但找不到它。

我使用的是 k8s 1.6.1 和 kube-dns 1.9(诚然 1.9 有点“旧”,我会尽快升级)。

【问题讨论】:

    标签: kubernetes kube-dns


    【解决方案1】:

    docs 表示如下:

    ExternalName 服务是没有选择器的服务的一种特殊情况。它不定义任何端口或端点。相反,它是一种将别名返回给驻留在集群外部的外部服务的方法。

    所以我认为不可能在同一个服务定义中添加端口信息。

    当访问此服务时,您的应用程序可以这样做:

    curl k8s_svc_name:third_party_defined_port_number
    

    使用它有什么问题?

    【讨论】:

    • 谢谢,我错过了文档的那一部分(或者它已更新)。 kubectl 和集群接受外部名称服务,其端口定义为 k8s 1.6.2,因此不会直接禁止。像这样定义端口的问题是,我要么必须将其保存在与服务定义分开的某个共享配置映射中,要么将其分布在每个连接的应用程序的配置中。我希望将有关服务的信息存储在端口可以更改的单个位置,并且我希望它可以从服务中发现。
    猜你喜欢
    • 2021-02-02
    • 1970-01-01
    • 2021-04-17
    • 2020-08-28
    • 1970-01-01
    • 1970-01-01
    • 2022-08-10
    • 1970-01-01
    • 2021-05-01
    相关资源
    最近更新 更多