6.3.3 ClusterDNS和服务发现

Kubernetes 系统之上用于名称解析和服务发现的ClusterDNS是集群的核心附件之一,集群中创建的每个Service对象,都会尤其自动生成相关的资源记录。默认情况下,集群内各Pod资源会自动配置其作为名称解析服务器,并在其DNS搜索中包含它所属名称空间的域名后缀。

无论是使用kubeDNS还是CoreDNS,它们提供的基于DNS的服务发现解决方案都会负责解析以下资源记录(Resource Record)类型以实现服务发现。

  1. 拥有ClusterIP的Service资源,需要具有以下类型的资源记录。

    • A记录:<service>.<ns>.svc.<zone>. <ttl> IN A <cluster-ip>
    • SRV记录:_<port>._<proto>.<service>.<ns>.svc.<zone>. <ttl> IN SRV <weight> <priority> <port-number> <service>.<ns>.svc.<zone>
    • PTR记录:<d>.<c>.<b>.<a>.in-addr.arpa. <ttl> IN PTR <service>.<ns>.svc.<zone>
  2. Headless 类型的Service资源,需要具有以下类型的资源记录。

    • A记录:<service>.<ns>.svc.<zone>. <ttl> IN A <endpoint-ip>
    • SRV记录:_<port>._<proto>.<service>.<ns>.svc.<zone>. <ttl> IN SRV <weight> <priority> <port-number> <hostname>.<service>.<ns>.svc.<zone>
    • PTR记录:<d>.<c>.<b>.<a>.in-addr.arpa. <ttl> IN PTR <hostname>.<service>.<ns>.svc.<zone>
  3. ExternalName 类型的Service资源,需要具有CNAME类型的资源记录。

    • CNAME记录:<service>.<ns>.svc.<zone>. <ttl> IN CNAME <extname>

名称解析和服务发现是Kubernetes系统许多功能得以实现的基础服务,它通常是集群安装完成后应该立即部署的附加组件。使用kubeadm初始化一个集群时,它甚至会自动进行部署。

results matching ""

    No results matching ""