Kubernetes 中的入口和出口是什么?

两人坐在弧形桌旁的俯视图

作者

Stephanie Susnjara

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

什么是 Kubernetes 中的入口和出口?

Kubernetes 中,入口和出口是指网络流量如何进入和离开云原生容器化应用程序环境。

  • 出口定义内部服务如何访问集群外的系统,例如 API数据库或第三方工具。

这些流量对于在云基础设施内运行现代应用程序至关重要。对它们的管理可以有效地支持各种用例,例如将客户流量路由到 Web 应用程序或安全访问第三方 API。

在当今云计算驱动的世界中,Kubernetes 为日益关键的工作负载提供支持。因此,细粒度的流量控制能力已成为保持性能、执行安全措施和满足合规要求的关键。

Kubernetes 如何工作?

Kubernetes,也称为 k8s 或 kube,是一个容器编排平台,可自动在计算资源池中部署、扩展和维护应用程序。DevOps 开发运维和 IT 团队不直接管理服务器,而是使用 Kubernetes 在容器中运行应用程序;容器是轻量级的独立软件单元,包含运行应用程序所需的一切。

根据 CNCF 的一份报告,Kubernetes 是全球第二大开源项目(仅次于 Linux),也是 71% 的财富 100 强企业的主要容器编排工具。

Docker 是构建容器映像时使用最广泛的工具。在 Kubernetes 中,容器被分组为称为 Pod 的单元,这些单元是最小的可部署单元,可以包含一个或多个容器。Kubernetes 在一组称为节点的机器集群上调度这些 Pod。

Pod 及其相关资源按命名空间进行整理,为管理同一聚类下的不同团队、项目或环境提供逻辑隔离。Kubernetes 可执行关键聚类功能,例如负载均衡、故障转移、扩展和自我修复,从而消除底层基础设施的复杂性。

在 Kubernetes 集群中,服务通常需要相互通信,有时甚至需要与外部系统通信。Kubernetes 通过隔离内部组件的方式管理和控制流量,以提高性能和安全性。因此,必须明确定义、管理和配置传入和传出流量。

Kubernetes 入口与出口

在基础计算机科学中,入口与出口是指网络或系统中的入站与出站流量。Kubernetes 入口和出口可为平台团队提供受控框架,以管理进出 Kubernetes 聚类的流量。这对于运行安全且可扩展的生产环境至关重要。

IBM Cloud

Red Hat OpenShift AI on IBM Cloud:部署 AI 工作负载

将 AI 功能与 Red Hat OpenShift on IBM Cloud 结合使用。本视频将深入探讨如何利用可扩展的机器学习运营平台,高效构建、部署和管理 AI 工作负载。

Kubernetes 中的入口是什么?

入口是指从外部用户或系统进入 Kubernetes 集群的传入流量,通常通过 HTTP 或 HTTPS(两者都运行在 TCP 协议上)进入。组织不是将每个服务直接暴露在互联网上,而是通过入口资源定义入口规则。此资源通常以 YAML 编写,它指示 Kubernetes 如何根据 URL 路径或域名等标准路由流量。

入口规则由入口控制器执行,控制器软件可充当实际入口点(通常基于 NGINX 或其他逆向代理)。控制器负责接收传入的请求,必要时可对流量进行解密,并将其转发给聚类中的相应服务。

例如,可配置入口规则以实现下列功能:

  • 将去往 api.company.com 的流量路由到处理数据请求的后端 API 服务
  • 将去往 app.company.com 的流量路由到与用户交互的前端应用程序。
  • 通过在 Kubernetes 入口层管理的单个 TLS 证书处理所有 HTTPS 请求,从而简化安全性和证书管理。

Kubernetes 中入口的优点

  • 成本效益:入口允许多个服务共享一个外部负载均衡器,从而降低 IT 基础设施成本,尤其是在具有许多独立部署应用程序的微服务环境中。
  • 简化的操作:集中式路由、域配置和证书管理有助于降低管理复杂性,并确保服务之间的一致性。
  • 增强安全性:入口流量的 SSL/TLS 终止发生在单个控制点,并且可以统一应用速率限制、身份验证或 Web 应用程序防火墙等策略。此设置通过在流量到达后端服务之前强制执行安全检查,有助于防止常见的安全威胁,例如未经授权的访问。
  • 更好的可扩展性:入口支持基于路径和基于主机名的路由,可以轻松扩展单个、灵活入口点后面的服务。例如,基于 API 路径的路由可支持团队独立扩展服务,而无需添加新的外部目标。

入口与 Kubernetes 服务类型的比较

Kubernetes 提供了多种内置方法,用于向聚类外部公开服务。入口资源可兼容特定服务类型,但提供了更灵活、更集中的方案,尤其适用于网络流量。

以下是一些最常见的服务类型:

  • ClusterIP 仅在集群内部公开服务。它对于内部服务到服务通信非常有用,但无法从外部访问。
  • NodePort 在集群中每个节点上打开特定端口,以对外公开服务。虽然简单,但它不灵活,并且直接暴露节点级基础设施,这带来了运营和安全挑战。
  • LoadBalancer 为每项服务配置一个由云供应商管理的负载均衡器。这对于外部访问很有效,但不能有效地扩展,因为每个新服务都需要自己的负载均衡器,会增加复杂性和成本。
  • Gateway API 可充当 API 网关,提供比传统入口资源更先进、更灵活且可扩展的流量路由和策略管理能力。

相比之下,入口资源使用基于域名或路径的智能路由规则,允许通过单个外部 IP 地址访问多个服务。它集中了 HTTP(S) 处理和流量控制,使其成为生产工作负载的有力选择。

什么是 Kubernetes 中的出口?

出口是指当 Kubernetes 聚类中的服务需要与外部流量目的地或系统(例如 API、云服务、数据库等)进行通信时的出站流量。虽然 Kubernetes 默认支持不受限制的出站流量,但这一开放策略很少适用于生产环境。

出于安全和合规原因,组织通常希望控制和监控可连接到外部端点的服务器类型。例如,某家零售企业可能希望其支付服务仅访问经批准的支付网关,并阻断所有其他目的地。

如何管理 Kubernetes 中的出口

Kubernetes 提供了几种有效、安全地管理出口的方法。通过实施这些控制,组织可以确保只有经过授权的流量才能流向外部网络,从而提高安全性和合规性。

网络策略

Kubernetes 网络策略可以限制 Pod 的出站连接权限,并指定其可访问的地址或域名(通常采用 CIDR 表示法定义 IP 范围)。这些策略仅允许明确授权的通信,从而支持零信任模型。这些网络策略中的出口规则可定义出站流量限制,以控制 Pod 访问外部目的地的权限。

出口网关

出口网关通常部署为服务网格的一部分,可以通过受监控的控制点路由所有出站流量,从而实现高级流量控制、加密和可观测性。

专用出口节点

专用出口节点或 NAT 网关也可用于集中和记录出站连接,以实现可追溯性并优化性能隔离。

Kubernetes 中出口的优势

  • 强大的数据保护能力:出口网络策略有助于限制出站流量,降低数据泄露或服务漏洞风险,以免其连接恶意外部端点。
  • 合规性:控制 Kubernetes 出口流量可通过限制连接受批准的端点并提供审计可见性,确保敏感工作量满足监管要求。
  • 改进成本控制:出口流量管理有助于防止因不受控制的出站呼叫或大数据传输而产生意想不到的云费用。
  • 增强可观测性:管理出口流量可以了解应用程序所依赖的外部系统,支持供应商管理、调试和识别外部服务依赖关系。
相关解决方案
IBM Red Hat OpenShift

Red Hat OpenShift on IBM Cloud 是一个完全托管的 OpenShift 容器平台 (OCP)。

探索 Red Hat OpenShift
容器解决方案

容器解决方案能够运行和扩展容器化工作负载,并实现安全性、开源创新和快速部署。

深入了解容器
云咨询服务

利用 IBM 的云咨询服务发掘新功能并提升业务敏捷性。了解如何通过混合云战略和专家合作共同制定解决方案、加快数字化转型并优化性能。

云服务
采取后续步骤

开始使用完全托管的 Red Hat OpenShift 平台或深入了解 IBM Cloud Kubernetes 生态系统的灵活性。借助根据您的需求定制的安全可扩展解决方案,加快您的开发与部署流程。

  1. 探索 Red Hat OpenShift
  2. 深入了解 Kubernetes