为多个环境部署具有自动 DNS 管理的 Kubernetes 集群
为多个环境部署具有自动 DNS 管理的 Kubernetes 集群
在云原生时代,Kubernetes已成为容器编排的事实标准。然而,随着多环境部署的复杂性增加,DNS管理也变得越来越重要。本文将介绍如何使用Oracle Cloud Infrastructure (OCI) 的Kubernetes Engine (OKE) 和DNS服务来部署具有自动DNS管理的Kubernetes集群,实现开发、测试和生产环境的统一管理。
如果没有自动化解决方案,为内部和外部环境(例如开发、测试和生产)管理云DNS策略会变得复杂且耗时。理想情况下,您的用户和客户都应该能够导航到域,并且您的DNS解决方案应直接指向正确环境的IP地址。这种理想的情况是用户友好的,可以防止人为错误。
Kubernetes ExternalDNS提供了自动化DNS解决方案的功能,可帮助用户轻松导航到所需的域,包括高级功能,例如全局负载平衡、自动故障转移、基于DNS的流量管理以及内置的安全功能,例如域名系统安全扩展 (Domain Name System Security Extensions,DNSSEC),可帮助防止篡改和欺骗攻击。
此参考架构使用单个kubernetes集群部署以及Oracle Cloud InfrastructureDNS Zones和Kubernetes ExternalDNS来配置专为多个环境设计的DNS解决方案。
体系结构
此架构使用部署在OCI DNS区域中的OCI Kubernetes Engine集群来存储通过负载平衡器公开服务的“A记录”。在此架构中,OCI Kubernetes Engine(OKE)集群具有三个worker节点和三个不同的名称空间来进行部署隔离。将此体系结构用于使用单个群集而不是多个群集的多环境OKE部署。
多租户 -oke-dns-architecture.png 的说明
多租户 -oke-dns-architecture.zip
每个环境(开发、测试和生产)都有自己的一组kubernetes组件,例如命名空间、pod和服务。Kubernetes ExternalDNS允许为外部公开的kubernetes服务自动创建和管理DNS记录。这样,外部客户端可以更轻松地访问集群中的服务。Kubernetes组件路由到Kubernetes ExternalDNS,然后创建指向OCI中每个服务负载平衡器的“记录”。
kubernetes-external-dns.png 的说明
kubernetes- 外部 -dns.zip
该体系结构具有以下组件:
区域
Oracle Cloud Infrastructure区域是包含一个或多个数据中心(称为可用性域)的本地化地理区域。地区独立于其他地区,远距离可以把它们分开(跨越国家甚至大陆)。可用性域
可用性域是区域中的独立数据中心。每个可用性域中的物理资源与其他可用性域中的资源隔离,从而提供容错能力。可用性域不共享电源或冷却设备等基础设施,也不共享内部可用性域网络。因此,一个可用性域出现故障不会影响区域中的其他可用性域。容错域
容错域是可用性域内的一组硬件和基础设施。每个可用性域都有三个容错域,它们具有独立的电源和硬件。在多个容错域之间分配资源时,应用可以承受容错域内的物理服务器故障、系统维护和电源故障。虚拟云网络 (VCN) 和子网
VCN 是一个可定制的软件定义网络,您可以在Oracle Cloud Infrastructure区域中设置。与传统的数据中心网络一样,VCN 允许您控制您的网络环境。VCN 可以具有多个不重叠的 CIDR 块,您可以在创建 VCN 后更改这些块。您可以将 VCN 划分为子网,子网可以限定为区域或可用性域。每个子网都包含一系列不与 VCN 中的其他子网重叠的连续地址。可以在创建后更改子网的大小。子网可以是公共子网,也可以是专用子网。负载平衡器
Oracle Cloud Infrastructure Load Balancing服务提供从单个入口点到后端多个服务器的自动流量分配。安全列表
对于每个子网,可以创建安全规则来指定必须允许进出子网的通信的源、目标和类型。OCI Kubernetes 引擎
Oracle Cloud Infrastructure Kubernetes Engine(Kubernetes Engine或OKE)是一项完全托管、可扩展的高可用性服务,可用于将容器化应用部署到云中。您可以指定应用所需的计算资源,Kubernetes Engine在现有租户的Oracle Cloud Infrastructure上预配这些资源。OKE使用 Kubernetes 跨主机集群自动部署、扩展和管理容器化应用。DNS
Oracle Cloud Infrastructure域名系统 (Domain Name System,DNS) 服务是一个高度可扩展的全局任播域名系统 (DNS) 网络,可提供增强的 DNS 性能、可恢复性和可扩展性,以便最终用户随时随地尽快连接到客户应用。公共/专用 DNS 区域
Oracle Cloud InfrastructureDNS 服务支持您管理区域。区域是 DNS 名称空间的一部分。授权开始记录 (Start of Authority,SOA) 定义区域。除非另有说明,否则区域在树中包含其自身下的所有标签。
推荐
使用以下建议作为起点。您的要求可能与此处描述的体系结构不同。
- 虚拟云网络 (VCN)
创建 VCN 时,请根据您计划附加到 VCN 中子网的资源数量,确定所需的 CIDR 块数和每个块的大小。使用标准专用 IP 地址空间内的 CIDR 块。
设计子网时,请考虑流量和安全要求。将特定层或角色中的所有资源附加到可以用作安全边界的同一子网。
- 负载平衡器带宽
创建负载平衡器时,您可以选择提供固定带宽的预定义配置,也可以指定定制(灵活)配置,在其中设置带宽范围并允许服务根据流量模式自动扩展带宽。通过任一方法,您都可以在创建负载平衡器后随时更改配置。
注意事项
在单个OCI Kubernetes Engine集群中部署多个环境时,请考虑以下事项。
- 安全
考虑使用 Kubernetes 网络策略来隔离名称空间连接,并依靠基于角色的访问控制来控制对名称空间管理的访问。
部署
Oracle Cloud Infrastructure 文档中的配置 ExternalDNS 以使用 Oracle Cloud Infrastructure DNS中提供了将 Kubernetes ExternalDNS 配置为使用Oracle Cloud InfrastructureDNS 的说明。
浏览更多
详细了解如何部署具有自动 DNS 管理的OCI Kubernetes Engine集群。
查看以下附加资源:
确认
作者:
- Guido Alejandro Ferreyra
更改日志
此日志列出了重大更改:
2024 年 9 月 30 日 增强了架构和注意事项中的内容。
