剖析 K8S DNS 的 Service 与 Pod

Kube-DNS 和 CoreDNS 是两个已建立的 DNS 解决方案,用于定义 DNS 命名规则。它们还可以将 Pod、DNS 服务解析为其相应的集群 IP。使用 DNS,Kubernetes 服务可以被 name 引用(该 name 对应于服务管理的任意数量的后端 Pod)。

DNS 的命名方案也遵循了可预测的模式,使各种服务的地址更容易被记住。服务不仅可以通过完全限定域名(FQDN)引用,还可以仅通过服务本身的 name 引用。

通过本文你将了解到:

  • Kubernetes DNS 如何运作;

  • Service DNS 记录;

  • Pod DNS 记录;

  • Pod 的主机名和子域字段;

  • 教程:如何通过 DNS 命名解决服务问题;

  • 总结。

 

Kubernetes DNS 如何运作?

在 Kubernetes 中,你可以设置一个 DNS 系统,其中包含两个受到良好支持的附加组件:CoreDNS 和 Kube-DNS。CoreDNS 是一个较新的附加组件,从 Kubernetes v1.12 开始成为默认的 DNS 服务器。但,某些 Kubernetes 安装程序工具仍可将 Kube-DNS 安装为默认 DNS 系统。

这两个附加组件都可以在集群上调度一个或多个 DNS Pod 以及具有静态 IP 的服务。

为了实现互操作性,两者在metadata.name字段都被命名为kube-dns。当管理员或安装工具配置集群时, kubelet会将 DNS 功能传递给每个带有--cluster-dns=标识的容器。

配置kubelet时,管理员还可以使用--cluster-domain= 指定本地域名。

目前,Kubernetes DNS 加载项可以支持正向查找(A Record)端口查找(SRV 记录)反向 IP 地址查找(PTR 记录)以及一些其他选项。本文将继续讨论,在这些记录类型中 Pod 和 Service 的 Kubernetes 命名方案。

Service DNS 记录

通常,Kubernetes 服务支持 A Record、CNAME 和 SRV 记录。

A Record

 

 

你可能感兴趣的:(k8s)