Kubernetes 入口控制器是一种专门的软件组件,用于管理在 Kubernetes 环境中运行的应用程序的传入流量,充当外部用户和容器化服务之间的桥梁。
Kubernetes 最初由 Google 开发,并于 2015 年捐赠给云原生计算基金会 (CNCF),目前为众多财富 500 强公司的关键 IT 基础设施提供支持,使入口控制器管理成为了企业运营的关键环节。根据 2022 年的一项调研,96% 的组织正在使用 Kubernetes 或评估这项技术是否适用于生产环境。1
在 Kubernetes 出现之前,应用程序通常在专用服务器或虚拟机 (VM) 上运行,这使得扩展成本高昂且耗时。Kubernetes 引入了容器,这种轻量级、可移植的单元可将应用程序及其所有依赖项打包在一起。
Kubernetes 彻底改变了 DevOps 开发运维工作流程和应用程序部署,方法是大规模引入容器编排。这个开源平台可自动部署、扩展和管理分布式基础设施中的容器化应用程序,从而实现开发和运营团队之间的无缝协作。
Kubernetes 将应用程序组织成 pod,即由一个或多个容器(通常是 Docker 容器)组成的最小可部署单元。这些 pod 在集群内的工作节点上运行,而控制平面协调所有集群操作。服务为 pod 组提供稳定的网络身份,从而实现可靠的通信模式。
入口控制器通常部署为为专用 Pod,通过 Kubernetes API 监控聚类状态。这类控制器可跟踪入口资源(即定义流量路由规则的配置对象)的变化,并自动更新其路由表以反映新的应用程序部署或配置更新。
要了解入口控制器的工作原理,必须了解 Kubernetes 入口,即定义将外部流量定向到 Kubernetes 集群内服务的路由规则的 API 资源(或入口对象)。
Kubernetes 入口不同于通用术语“入口”,后者是指流入云原生容器化应用程序环境的传入网络流量。在 Kubernetes 中,入口 (Ingress) 特指一组规则和配置,用于管理传入流量如何路由到不同的服务。与之相对,更广泛意义上的入口 (ingress) 仅指进入系统的任何流量(与之相对,出口 (egress) 是指流出系统的流量)。
Kubernetes 入口提供了一种声明性方法来管理对 Kubernetes 集群内服务的外部访问。入口不是将单个服务(例如 NodePort、LoadBalancer 服务)直接暴露给互联网,而是创建一个受控访问层,根据多个条件智能路由请求。此功能支持有效管理服务的外部流量,这些流量通常通过在 Kubernetes 集群中使用 ClusterIP 公开。
Kubernetes 入口通过两个互补的组件运行。
入口控制器是用于读取和应用配置规则的软件组件,可充当具备高级流量管理能力的反向代理。
传统的第 4 层负载均衡器,例如用于 TCP、UDP 和 HTTP/HTTPS 路由的负载均衡器,仅基于 IP 地址和端口分配流量。相比之下,Kubernetes 入口控制器运行在第 7 层(应用程序层),从而可实现更复杂的路由。
利用 Kubernetes 入口 API 和 HTTPRoute 等功能,入口控制器根据详细的 HTTP 特定属性做出路由决策,例如:
这些决策基于规定路由策略和其他要求的配置规则而制定。入口控制器可持续监控配置变化,自动更新路由行为,且无需人工干预,以确保无缝流量分配和安全管理。
Kubernetes 集群可以同时运行多个入口控制器,各控制器处理不同的流量类型或应用程序。每个控制器都以事件驱动的方式运行,通过读取规范、注释和元数据来响应入口资源的变化,然后将它们转换为可执行的路由指令。
Kubernetes 入口控制器检查传入请求并根据预定义的规则(例如主机名和 DNS 名称)做出路由决策。它们处理 HTTP 和 HTTPS 流量,执行 SSL 终止,并在多个服务实例之间做出智能的负载均衡决策。
负载均衡功能内置于大多数 Kubernetes 入口控制器中,可在同一服务的多个实例之间分配传入请求,从而确保最佳性能并防止任何单个实例不堪重负。
现代 Kubernetes 入口控制器包括复杂的 SSL/TLS 管理能力,例如 TLS 终止、自动证书配置、续订和安全通信实施。
高级 Kubernetes 入口控制器可持续监控后端服务的健康状况,并自动将流量路由至故障实例以外的节点,以确保高度可用性并提升用户体验。
大型组织将数百个使用入口控制器内部应用程序整合到统一接入点后面。这种方法降低了基础设施成本,同时通过集中策略实施提高了安全性。一家全球制造公司可以通过单个入口控制器部署将请求路由到不同的区域 ERP 系统、供应链应用程序和客户门户。
开发团队使用入口控制器创建单独的环境来测试新功能。团队可以自动设置新的测试环境,并根据正在开发的功能将正确的流量引导到每个测试环境。
公司使用入口控制器安全地与合作伙伴和供应商共享内部 API。每个组织可以有不同的访问权限和使用限制,全部通过单个系统进行管理,无需构建单独的基础设施。
跨国组织实施入口控制器作为全球流量管理战略的一部分,将用户路由到地理位置最佳的数据中心,同时保持一致的安全和监控策略。
受监管的行业采用入口控制器来实现所需的日志记录、访问控制(创建页面时添加)和数据治理策略。所有外部访问均可通过入口层进行集中监控和审计。
选择合适的 Kubernetes 入口控制器取决于组织要求、现有基础设施和团队功能。每种实施方式都针对特定用例提供独特的优势:
Red Hat OpenShift on IBM Cloud 是一个完全托管的 OpenShift 容器平台 (OCP)。
容器解决方案能够运行和扩展容器化工作负载,并实现安全性、开源创新和快速部署。
利用 IBM 的云咨询服务发掘新功能并提升业务敏捷性。了解如何通过混合云战略和专家合作共同制定解决方案、加快数字化转型并优化性能。