运维开发网

CoreDNS Plugins ---> hosts

运维开发网 https://www.qedev.com 2020-03-03 09:14 出处:网络 作者:运维开发网整理
需求 kubernetes集群外部有少量服务,kubernetes集群内部pod需要通过服务所在的主机的hostname访问服务。 解决方案 通过coredns的hosts插件配置kubernetes集群的dns服务,使集群内部可通过hostname/域名访问外部服务。 参考:CoreDNS hosts hosts插件格式 hosts [FILE [ZONES...]] { [INLINE

需求

kubernetes集群外部有少量服务,kubernetes集群内部pod需要通过服务所在的主机的hostname访问服务。

解决方案

通过coredns的hosts插件配置kubernetes集群的dns服务,使集群内部可通过hostname/域名访问外部服务。

参考:CoreDNS hosts

hosts插件格式

hosts [FILE [ZONES...]] {
    [INLINE]
    fallthrough [ZONES...]
}
  • FILE:需要读取与解析的hosts文件;如果省略,默认取值"/etc/hosts";每5s扫描一次hosts文件的变更。
  • ZONES:如果为空,取配置块中的zone。
  • INLINE:宿主机hosts文件在corefile中的内联;在"fallthrough"之前的所有"INLINE"都可视为hosts文件的附加内容,hosts文件中相同条目将被覆盖,以"INLINE"为准。
  • fallthrough:如果zone匹配且无法生成记录,将请求传递给下一个插件;如果省略,对所有zones有效,如果列出特定zone,则只有列出的zone受到影响。

范例

以Kubernetes采用CoreDNS中的coredns-cm.yaml为基础变更,如下:

cat coredns-cm.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: coredns
  namespace: kube-system
  labels:
      addonmanager.kubernetes.io/mode: EnsureExists
data:
  Corefile: |
    .:53 {
        errors
        health
        # 省略了”FILE“,"ZONES"等字段
        hosts {
            172.30.200.21   kubenode1
            172.30.200.22   kubenode2
            172.30.200.23   kubenode3
            fallthrough
        }
        kubernetes cluster.local in-addr.arpa ip6.arpa {
            pods insecure
            upstream
            fallthrough in-addr.arpa ip6.arpa
        }
        prometheus :9153
        proxy . /etc/resolv.conf
        cache 30
        loop
        reload
        loadbalance
    }

验证

# 替换configmap
kubectl replace -f coredns-cm.yaml

# ping外部hostname
kubectl exec -it dnstest -- ping kubenode1
kubectl exec -it dnstest -- ping kubenode2
kubectl exec -it dnstest -- ping kubenode3

CoreDNS Plugins ---> hosts

0

精彩评论

暂无评论...
验证码 换一张
取 消