AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1003236
Accepted
CodeChimp
CodeChimp
Asked: 2020-02-16 15:23:27 +0800 CST2020-02-16 15:23:27 +0800 CST 2020-02-16 15:23:27 +0800 CST

通过内部 DNS 服务器解析 Kubernetes 服务 - 裸机

  • 772

我有一个运行 4 个节点的 kubernetes 集群,我的主主节点加上其他节点。我使用 kubespray 让一切运行起来。这是在我的家庭网络上,我将在下面解释。我想要完成的是让某种 DNS 解析工作,这样我就可以继续设置入口。

我的设置:

  • 网络 - 使用 USG、Cloud Key 和交换机的 Unifi 设置。DHCP DNS指向Master box的内部IP加上8.8.8.8和8.8.4.4,默认搜索域设置为我的个人域之一(以mydomain.com为例)
  • Master:运行 DNS (Bind9) plus 的 Ubuntu 18.04 LTS 作为 Kubernetes 集群的 master。他在内部解析为 server.mydomain.com
  • 节点 1-3:Ubuntu 18.04 LTS 仅用作 Kubernetes 主机。内部解析为 nodeX.mydomain.com,其中 X 是节点号 1-3

我猜我需要以某种方式告诉在我的主服务器上运行的 DNS 服务器任何 XXX.server.mydomain.com。至少,我想象它应该如何工作?我不确定,也许我误解了它。

问题是,即使我尝试手动 nslookup 服务,它似乎仍然不起作用。我试过类似的东西:

> nslookup nzbget.server.mydomain.com 10.233.0.3
Server:     10.233.0.3
Address:    10.233.0.3#53

** server can't find nzbget.server.mydomain.com: NXDOMAIN

也

> nslookup nzbget 10.233.0.3
Server:     10.233.0.3
Address:    10.233.0.3#53

** server can't find nzbget.mydomain.com: REFUSED

其中 10.233.0.3 是集群中 CoreDNS 服务 IP 的 IP。

我知道这只是我不知道我在做什么,但我什至不知道在这一点上谷歌正确的事情。感谢您提供的任何指导。

domain-name-system internal-dns kubernetes
  • 2 2 个回答
  • 579 Views

2 个回答

  • Voted
  1. Best Answer
    DarkVex
    2020-02-16T15:32:40+08:002020-02-16T15:32:40+08:00

    您需要在 bind9 中设置通配符域/子域,如果您在 google 上搜索“绑定通配符记录”,您应该会找到这篇 带 BIND 的通配符 DNS

    • 2
  2. CodeChimp
    2020-02-19T04:09:42+08:002020-02-19T04:09:42+08:00

    我会将@DarkVex 的答案保留为正确的答案,因为它确实回答了原始问题,但我想为将来可能会在这里绊倒的人添加我的最终解决方案的一些细节。

    基本上,我试图通过简化的内部 DNS 名称访问我的 Kubernetes 服务,例如 jenkins.mydomain.com。仅使用 Docker,我在 Linux 主机上创建虚拟网卡,然后将 Docker 容器的 IP/端口映射到这些 IP/端口,然后将 Bind9 中的 DNS A 记录指向该 IP。我试图使用 Kubernetes 做类似的事情,但不知道如何实现。

    事实证明这实际上比我想象的要容易。我要做的第一件事是向我的网络设置添加一个路由,以将 Kubernetes 中使用的 IP 子网路由到主节点的 IP。因此,例如我的内部网络有 3 个虚拟 LAN:10.0.xx、10.1.xx 和 10.2.xx,而我的 Kubernetes 选择了 10.233.xx 如果我的主节点在 10.0.0.10 上,那么我只是告诉我的路由器发送 10.233。 xx 到 10.0.0.10 的流量。这打开了 IP,以便我可以从外部访问它们。

    接下来是以 LoadBalanced 模式为 Kubernetes 中的部署创建服务。我也可以使用 Ingress 服务器,但我没有看到需要,因为第一步允许我从内部网络上的任何地方访问服务。该服务位于所有已部署的 pod 之上,为所有底层 pod 公开一个负载平衡 IP。这里的关键是,虽然 Pod 的 IP 可以随时更改,但服务的 IP 保持静态,直到您将其删除。

    最后一步与之前相同...只需在 Bind9 中添加一条 A 记录,指向 Service 的 IP。中提琴!我现在可以通过简化的主机名访问该服务。缺点是需要一些手动步骤才能完成。弄清楚如何设置 DNS 来代理所有请求会很好,也许使用 Ingress 设置查看请求的主机名以路由到正确的服务。无论如何,我最终可能会这样做,但现在它至少让我回到了我在 Docker 中的位置。

    • 0

相关问题

  • Solaris DNS

  • resolv.conf 在经过一段时间后被更改

  • 为什么有些网站的网址中没有“www”就无法显示?[关闭]

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve