【问题标题】:DNS server in kubernetes for translate LAN hostsKubernetes 中用于翻译 LAN 主机的 DNS 服务器
【发布时间】:2021-07-07 23:08:52
【问题描述】:

我在我的家庭实验室中使用了一个包含 1 个主节点和 2 个节点的裸机集群,其中包含 istio、metallb 和 calico。

我想在 kubernetes 中创建一个 DNS 服务器,为 LAN 上的主机转换 IP。

是否可以使用k8s中已经安装的coreDNS?

【问题讨论】:

    标签: kubernetes coredns


    【解决方案1】:

    是的,这是可能的,但在这样做时需要考虑一些要点。他们中的大多数都在下面的 Stackoverflow 答案中进行了描述:

    例如:DNS 服务器将解析 Kubernetes 集群内部的查询(如 nslookup kubernetes.default.svc.cluster.local)。


    我已经包含了有关如何将 CoreDNS 暴露给外部源并添加指向某个 IP 地址的 Service 的示例

    步骤:

    • CoreDNS Service 修改为在外部可用。
    • configMapCoreDNS 相应地修改为:
    • 创建一个指向外部设备的Service
    • 测试

    修改CoreDNSService,使其在外部可用。

    由于您是 Kubernetes 新手,您可能知道Services 的工作原理以及哪些可以在外部使用。您需要将 CoreDNS ServiceClusterIP 更改为 NodePortLoadBalancer(考虑到使用了 metallb,我认为 LoadBalancer 会是一个更好的主意,您将访问DNS 端口上的服务器:53)

    • $ kubectl edit --namespace=kube-system service/coredns (或kube-dns

    附注!

    CoreDNS 同时使用TCPUDP,在创建LoadBalancer 时可能会出现问题。在这里您可以找到有关它的更多信息:


    修改你的CoreDNSconfigMap

    如果您想解析域,例如:example.org,您需要按以下方式编辑CoreDNSconfigMap

    • $ kubectl edit configmap --namespace=kube-system coredns

    将该行添加到Corefile:

            k8s_external example.org
    

    此插件允许额外的区域来解析 Kubernetes 服务的外部 IP 地址。此插件仅在同时加载了 kubernetes 插件时才有用。

    插件使用外部区域来解析集群内 IP 地址。它只处理对 A、AAAA 和 SRV 记录的查询;所有其他都导致 NODATA 响应。为了使其成为适当的 DNS 区域,它会处理区域顶点的 SOA 和 NS 查询。

    -- CoreDNS.io: Plugins: K8s_external


    创建一个指向外部设备的Service

    按照我提供的链接,您现在可以创建一个指向 IP 地址的 Service

    apiVersion: v1
    kind: Service
    metadata:
     name: test
     namespace: default
    spec:
     clusterIP: None
     externalIPs:
     - 192.168.200.123
     type: ClusterIP
    

    测试

    我用minikube--driver=docker(和NodePort),但我认为你可以使用LoadBalancerExternalIP 来检查它:

    • dig @192.168.49.2 test.default.example.org -p 32261 +short
    192.168.200.123
    

    地点:

    • @192.168.49.2 - minikube 的 IP 地址
    • test.default.example.org - service-name.namespace.k8s_external_domain
    • -p 32261 - NodePort 端口
    • +short - 限制输出

    其他资源:

    【讨论】:

    • 如何添加 A、CNAME... 记录?像 test.example.com
    • @rbr86 我在问题中包含的插件在他的文档页面上指出:It only handles queries for A, AAAA and SRV records; all others result in NODATA responses.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-21
    • 2013-06-30
    • 2017-06-02
    • 2022-11-01
    • 1970-01-01
    • 2014-10-08
    • 1970-01-01
    相关资源
    最近更新 更多