前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TKE使用kube-dns配置自定义host解析

TKE使用kube-dns配置自定义host解析

原创
作者头像
程哲
修改2022-02-28 10:47:08
2.1K0
修改2022-02-28 10:47:08
举报
文章被收录于专栏:ikubernetesikubernetes

kubernetes在1.12以上版本已经建议使用了 coredns 作为集群的默认域名解析组件,但是之前的版本还有在使用kube-dns作为域名解析组件的,kube-dns不同于coredns,可以直接通过 host 插件进行自定义域名解析配置,需要依赖 dnsmasq 的能力实现自定义host的功能,下面就对如何实现给出步骤说明

kube-dns pod默认启动三个容器

代码语言:txt
复制
1. kubedns容器,负责监听集群service和endpoints资源的变化,并将信息更新到skyDNS中,skyDNS负责解析dns解析,并监听10053端口
2. dnsmasq容器,负载集群dns解析,并将 cluster.local 后缀的集群域名转发到skyDNS:10053端口,非cluster.local的域名,从获取的上游DNS服务器解析,默认从/etc/resolv.conf获取,可通过启动配置 resolv-file 调整
3. sidecar:负责健康检查和提供 DNS metrics(监听在 10054 端口)

要实现自定义host解析,主要依赖dnsmasq容器去实现,通过添加额外的host文件路径,将自定义解析配置在host文件内 ,启动配置:addn-hosts (默认是读取/etc/hosts,但是容器内/etc/hosts是没有的)

  1. 在kube-system 命名空间创建configmap,添加自定义host解析
代码语言:javascript
复制
apiVersion: v1
data:
  dnshost: |-
    1.2.3.4 www.test1.com    #填写需自定义的解析host
    2.2.3.4 www.test2.com
kind: ConfigMap
metadata:
  name: kubedns-host
  namespace: kube-system

2. 修改kube-system 命名空间下 kube-dns 的deployment资源

代码语言:javascript
复制
1. 将configmap挂载到dnsmasq容器的指定目录,此处使用 /dns 目录,自定义即可
volumes:    #将第一步创建的configmap添加到pod内
- configMap:
    defaultMode: 420
    optional: true
    name: kubedns-host

volumeMounts:   #在dnsmasq容器的配置内添加挂载 kubedns-host这个卷,挂载到容器 /dns 目录
- mountPath: /dns
  name: kubedns-host
  
2. 在dnsmasq的容器启动参数添加自定义解析配置文件
- args:
  - --addn-hosts=/dns/dnshost
  

3. 测试,在pod内指定kube-dns的地址作为DNS server,发现已经可以正常解析自定义的host了

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com