容器作为近些年最火热的后端技术,加快了很多企业的数字化转型进程 。目前的企业,不是在使用云原生技术,就是在转向云原生技术的过程中 。在容器化进程中,如何保持业务的平稳迁移,如何将现有的一些服务设施一并进行容器化迁移,也是众多企业较为关注的点 。
以 DNS 为例,如何构建一个云原生的企业 DNS 系统?
CoreDNS 简介CoreDNS 是一个 Go 语言编写的灵活可扩展的 DNS 服务器,在 Kube.NETes 中,作为一个服务发现的配置中心,在 Kubernetes 中创建的 Service 和 Pod 都会在其中自动生成相应的 DNS 记录 。Kubernetes 服务发现的特性,使 CoreDNS 很适合作为企业云原生环境的 DNS 服务器,保障企业容器化和非容器化业务服务的稳定运行 。
构建企业 DNS 服务器时,一般会有以下需求:
- 用户外网域名访问服务;
- 混合云业务迁移、数据共享、容灾;
- 开发代码 IP 写死导致架构可用性、弹性无法实现;
- 统一 DNS 管理需求,含上下级平台对接;
- DNS 劫持等网络安全风险;
- 存量代码固定域名访问;
- 集群外域名访问;
- 无商业许可要求,降低投资成本;
- 轻量化,通过插件实现功能添加;
- 支持 DNS,DNS over TLS,DNS over HTTP/2,DNS over gRPC 协议;
- 提供 kubernetes 服务发现;
- 支持对接 Route53/google Cloud DNS/AzureDNS;
- 支持集成 Prometheus,OpenTracing,OPA,带来更全面的运维体验;
- 支持整合容器管理平台,提供统一 DNS 系统运维 。
CoreDNS 运行原理与插件介绍CoreDNS 基于 Caddy 框架实现模块化设计,每个插件承载相应的具体功能,对于 DNS 系统而言,CoreDNS 使用 File,ETCD 插件等加载 DNS 记录,使用 Kubernetes 插件实现集群服务发现,外部 DNS 请求到达 CoreDNS 后,根据插件调用链依次处理 DNS 请求 。
![基于 CoreDNS 和 K8s 构建云原生场景下的企业级 DNS](http://img.jiangsulong.com/220921/1F021M11-0.jpg)
文章插图
CoreDNS 社区官方提供了 50 多种插件,开发者亦可根据需求开发个性化的外部插件 。CoreDNS 常用插件如下图,根据使用场景,可分为运维、DNS 处理、后端数据存储等三个类别 。
CoreDNS 定义 Corefile 配置文件,服务器在加载 Corefile 后处理 DNS 请求,对于以下插件,只需在 Corefile 中引用即可,之后 CoreDNS 会使用插件链进行调用,插件链可参考以下链接: ?
https://github.com/coredns/coredns/blob/master/plugin.cfg? ?
![基于 CoreDNS 和 K8s 构建云原生场景下的企业级 DNS](http://img.jiangsulong.com/220921/1F0216348-1.jpg)
文章插图
设计一个基于 CoreDNS 的分层 DNS 架构在熟悉 CoreDNS 特性后,可设计企业的 DNS 架构:
![基于 CoreDNS 和 K8s 构建云原生场景下的企业级 DNS](http://img.jiangsulong.com/220921/1F0216023-2.jpg)
文章插图
DNS 架构以外网 DNS、内网 DNS、分区 DNS 组成:
外网 DNS:
- 使用 DNSSEC、DOT、DOH 等保障 DNS 安全;
- 缓存 DNS 记录;
- 构建 DNS 实例自动伸缩,应对高 QPS 需求;
- Kubernetes 服务发现;
- 构建上游 DNS 区域;
- 建立开发、测试、UAT、生产等区域 DNS;
- NodeLocalDNS 提高性能;
- 设置转发器处理递归 DNS 请求;
![基于 CoreDNS 和 K8s 构建云原生场景下的企业级 DNS](http://img.jiangsulong.com/220921/1F0211T9-3.jpg)
文章插图
![基于 CoreDNS 和 K8s 构建云原生场景下的企业级 DNS](http://img.jiangsulong.com/220921/1F021DU-4.jpg)
文章插图
服务发现与 DNS 配置部署 CoreDNS 后,对于运维人员来说,CoreDNS 的配置大体分为两类:一类为 Kubernetes 配置,一类为 DNS 配置 。CoreDNS 提供了 Kubernetes 插件,支持在 kubernetes 集群中读取区域数据,并根据 Pod 和 Service 的域名记载相应的 A 记录和 PTR 记录 。
推荐阅读
- 浅析各类USB和新的USB4.0
- 世界上最好的编程语言PHP和Facebook的感情经历
- 基于区块链与IPv8构建零信任新一代安全网络
- 普洱生茶饼撬开,普洱茶饼怎么撬开喝
- 普洱生茶冲泡,普洱生茶和熟茶的冲泡温度
- 孩子不懂得和小朋友分享怎么办
- 我回不去了?和你回到过去
- 家用无线路由器怎么安装和设置,无线路由器怎么安装和设置tplink-_1
- 恭亲王奕欣有几个王妃?和怡亲王的女儿
- 孙策死后孙权占有大乔?孙策的儿子和大乔去哪了