前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >腾讯云TKE-DNS案例: 自定义域名解析

腾讯云TKE-DNS案例: 自定义域名解析

原创
作者头像
朱瑞卿
发布2020-12-11 17:00:51
6.7K0
发布2020-12-11 17:00:51
举报

背景

在业务应用开发中, 经常会有自定义域名的需求, 比如: 使用自建的dns在解析内部域名, 或者添加hosts。如何在TKE中实现这个场景呢?

方案1: 修改容器hosts

对于自定义域名数量少的场景下,可以使k8s的hostAliases 字段来解决这个问题,对整个系统影响面积比较小。

配置示例:

比如我们需要添加一下域名解析:

  • 127.0.0.1 foo.local bar.local
  • 10.1.2.3 foo.remote bar.remote
代码语言:txt
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hosts-append
  labels: 
    app: hosts-append
spec:
  replicas: 1
  selector:
    matchLabels:
      app: hosts-append
  template:
    metadata:
      labels:
        app: hosts-append
    spec:
      hostAliases:
      - ip: "127.0.0.1"
        hostnames:
        - "foo.local"
        - "bar.local"
      - ip: "10.1.2.3"
        hostnames:
        - "foo.remote"
        - "bar.remote"
      containers:
      - image: nginx:alpine
        name: hosts-append
        ports:
        - containerPort: 80
          protocol: TCP

部署完成后, 登陆到容器内进行验证:

  • 查看/etc/hosts文件是否存在
代码语言:txt
复制
$ kubectl exec hosts-append-5576848dcf-jnt4s -- cat /etc/hosts

# Kubernetes-managed hosts file.
127.0.0.1	localhost
::1	localhost ip6-localhost ip6-loopback
fe00::0	ip6-localnet
fe00::0	ip6-mcastprefix
fe00::1	ip6-allnodes
fe00::2	ip6-allrouters
10.4.0.224	hostbiza-5576848dcf-jnt4s

# Entries added by HostAliases.
127.0.0.1	foo.local	bar.local
10.1.2.3	foo.remote	bar.remote

这种方式有个缺点就是针对worload去配置,如果worload比较多的话就比较繁琐了,可以使用下面的方式来解决。

方案2: coredns 中添加私有域解析和hosts解析

在k8s中域名解析组件是coredns, 其配置使用的是configmap,可以比较方便的添加自定义域名, coredns的configmap 在kube-system 的命名空间下,修改方式如下:

代码语言:txt
复制
kubectl edit cm -n kube-system coredns

Corefile 配置示例:

代码语言:txt
复制
    .:53 {
        errors
        health
        kubernetes cluster.local. in-addr.arpa ip6.arpa {
            pods insecure
            upstream
            fallthrough in-addr.arpa ip6.arpa
        }
        hosts {
          127.0.0.1	foo.local
          8.8.8.8	foo.remote
          fallthrough
        }
        test.local:53 {
        errors
        cache 30
        forward . 10.150.0.1
        }
        prometheus :9153
        proxy . /etc/resolv.conf
        cache 30
        reload
        loadbalance
    }

修改完成后, 需要等待几秒,配置同步完成后即可生效,此时可以进入到容器进行域名验证。

在一般的控制台,这个节点无法修改。但借助命令行 kubectl 或者其他可视化工具(如 Lens),可以修改这个配置节点。

至于开发环境下的域名解析,自己改本机 hosts 就好啦。

当然,更好的做法是把配置文件与应用解耦,所有的配置,包括远程服务的域名或 ip 都可以被远程修改

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

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

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

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

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