如欲创建和管理一个强大的 Kubernetes 环境,您的网络团队和应用团队之间必须能够顺畅协作。然而,他们的工作重点和工作方式往往大径相庭,这可能会引发冲突,进而造成严重后果——应用开发速度缓慢、部署延迟乃至网络中断。
两个团队必须都朝着共同的目标努力,才能确保如今的现代应用按时交付,并具有适当的安全防护和可扩展性。但如何充分发挥每个团队的技能和专长,同时帮助他们协同工作呢?
我们的白皮书《走进集群》详细介绍了一款 Kubernetes 服务外部访问解决方案,可助力网络团队和应用团队优势互补,避免冲突。
如何在 Kubernetes 集群中暴露应用
该解决方案特别适合托管在本地的 Kubernetes 集群,凭借着节点(node)在裸机或传统 Linux 虚拟机 (VM) 上运行,并且标准的二层交换机和三层路由器为数据中心内的通信提供网络。它不会扩展到云托管的 Kubernetes 集群,因为云提供商不允许我们控制其数据中心内的核心网络及其托管 Kubernetes 环境中的网络。
在详细介绍我们的解决方案之前,先让我们看一下为什么在 Kubernetes 集群中暴露应用的其他标准方法不适用于本地部署:
- Service —— 将运行相同应用的 pod 组合在一起。这非常适合内部的 pod 之间的通信,但仅在集群内部可见,因此无助于对外暴露应用。
- NodePort —— 在集群中的每个节点上打开一个特定端口,并将流量转发到相应的应用。虽然这允许外部用户访问 service,但效果并不理想,因为配置是静态的,所以您必须使用高编号 TCP 端口(而不是众所周知的低编号端口),并与其他应用协调端口号。您也无法在不同的应用之间共享通用 TCP 端口。
- LoadBalancer —— 使用每个节点上的 NodePort 定义来创建从外界到 Kubernetes 节点的网络路径。它非常适合云托管 Kubernetes,因为 AWS、Google Cloud Platform、Microsoft Azure 及其他大多数云提供商都支持将其作为一项易于配置的特性来使用。它非常好用,并可为 service 提供所需的公共 IP 地址和匹配的 DNS
A
记录。遗憾的是,这种方法不适用于本地集群。
支持外部用户访问本地 Kubernetes 集群
说到这里,首先想到便是 Kubernetes Ingress 对象,它专为从集群外的用户流向集群内的 pod 的流量(南北向流量)而设计。Ingress 为集群创建了一个外部 HTTP/HTTPS 入口点,即单个 IP 地址或 DNS 名称,支持外部用户访问多个 service。这恰好能满足我们的需求!“Ingress 对象”由 Ingress controller 实现——在我们的解决方案中是基于 NGINX Plus 的企业级 F5 NGINX Ingress Controller。
您可能会惊讶地发现,该解决方案的另一个关键组件是边界网关协议 (BGP),后者是一种三层路由协议。出色的解决方案不一定很复杂。
《走进集群》中概述的这款解决方案实际上包含四个组件:
- iBGP 网络 —— 内部 BGP (iBGP) 用于在数据中心的自治系统 (AS) 内交换路由信息,可帮助确保网络可靠性和可扩展性。在大多数数据中心中,iBGP 已就位并由网络团队提供支持。
- Project Calico CNI 联网 —— Project Calico 是一种开源联网解决方案,可灵活地连接本地数据中心内的环境,同时对流量进行细粒度控制。在 Kubernetes 集群中,我们使用 Project Calico 的 CNI 插件进行联网,并启用 BGP。该操作允许您控制分配给 pod 的 IP 地址池,这有助于快速识别任何联网问题。
- 基于 NGINX Plus 的 NGINX Ingress Controller —— 借助 NGINX Ingress Controller,您可以监控 pod 的服务端点 IP 地址,并在不中断流量处理的情况下自动重新配置上游服务列表。应用团队还能够利用 NGINX Plus 中的许多其他企业级七层 HTTP 功能,包括主动健康检查、mTLS 和基于 JWT 的身份验证。
- NGINX Plus 作为边缘的反向代理 —— NGINX Plus 作为 Kubernetes 集群边缘的反向代理,在数据中心的交换机和路由器与 Kubernetes 集群的内部网络之间提供了一条路径,可以替代 Kubernetes LoadBalancer 对象,并使用 Quagga 来配置 BGP。
下图展示了该解决方案架构,显示了解决方案组件用于通信的协议,而不是请求处理期间数据交换的顺序。
免费下载白皮书
通过共同实施一款组件定义明确的解决方案,网络和应用团队可轻松地实现最佳性能和可靠性。
我们的解决方案使用现代联网工具、协议和现有架构。由于价格经济且易于实施、管理和支持,它可以助力简化工作并将您的各个团队轻松连接起来。
如欲查看代码实例并了解解决方案部署的分步指南,请免费下载《走进集群 》白皮书。