在 Kubernetes 中,入口和出口是指网络流量如何进入和离开云原生容器化应用程序环境。
通过 Think 时事通讯,了解有关 AI、自动化、数据等方面最重要且最有趣的行业趋势。请参阅 IBM 隐私声明。
Kubernetes,也称为 k8s 或 kube,是一个容器编排平台,可自动在计算资源池中部署、扩展和维护应用程序。DevOps 开发运维和 IT 团队不直接管理服务器,而是使用 Kubernetes 在容器中运行应用程序;容器是轻量级的独立软件单元,包含运行应用程序所需的一切。
根据 CNCF 的一份报告,Kubernetes 是全球第二大开源项目(仅次于 Linux),也是 71% 的财富 100 强企业的主要容器编排工具。
Docker 是构建容器映像时使用最广泛的工具。在 Kubernetes 中,容器被分组为称为 Pod 的单元,这些单元是最小的可部署单元,可以包含一个或多个容器。Kubernetes 在一组称为节点的机器集群上调度这些 Pod。
Pod 及其相关资源按命名空间进行整理,为管理同一聚类下的不同团队、项目或环境提供逻辑隔离。Kubernetes 可执行关键聚类功能,例如负载均衡、故障转移、扩展和自我修复,从而消除底层基础设施的复杂性。
在 Kubernetes 集群中,服务通常需要相互通信,有时甚至需要与外部系统通信。Kubernetes 通过隔离内部组件的方式管理和控制流量,以提高性能和安全性。因此,必须明确定义、管理和配置传入和传出流量。
在基础计算机科学中,入口与出口是指网络或系统中的入站与出站流量。Kubernetes 入口和出口可为平台团队提供受控框架,以管理进出 Kubernetes 聚类的流量。这对于运行安全且可扩展的生产环境至关重要。
入口是指从外部用户或系统进入 Kubernetes 集群的传入流量,通常通过 HTTP 或 HTTPS(两者都运行在 TCP 协议上)进入。组织不是将每个服务直接暴露在互联网上,而是通过入口资源定义入口规则。此资源通常以 YAML 编写,它指示 Kubernetes 如何根据 URL 路径或域名等标准路由流量。
入口规则由入口控制器执行,控制器软件可充当实际入口点(通常基于 NGINX 或其他逆向代理)。控制器负责接收传入的请求,必要时可对流量进行解密,并将其转发给聚类中的相应服务。
例如,可配置入口规则以实现下列功能:
Kubernetes 提供了多种内置方法,用于向聚类外部公开服务。入口资源可兼容特定服务类型,但提供了更灵活、更集中的方案,尤其适用于网络流量。
以下是一些最常见的服务类型:
相比之下,入口资源使用基于域名或路径的智能路由规则,允许通过单个外部 IP 地址访问多个服务。它集中了 HTTP(S) 处理和流量控制,使其成为生产工作负载的有力选择。
出口是指当 Kubernetes 聚类中的服务需要与外部流量目的地或系统(例如 API、云服务、数据库等)进行通信时的出站流量。虽然 Kubernetes 默认支持不受限制的出站流量,但这一开放策略很少适用于生产环境。
出于安全和合规原因,组织通常希望控制和监控可连接到外部端点的服务器类型。例如,某家零售企业可能希望其支付服务仅访问经批准的支付网关,并阻断所有其他目的地。
Kubernetes 提供了几种有效、安全地管理出口的方法。通过实施这些控制,组织可以确保只有经过授权的流量才能流向外部网络,从而提高安全性和合规性。
Kubernetes 网络策略可以限制 Pod 的出站连接权限,并指定其可访问的地址或域名(通常采用 CIDR 表示法定义 IP 范围)。这些策略仅允许明确授权的通信,从而支持零信任模型。这些网络策略中的出口规则可定义出站流量限制,以控制 Pod 访问外部目的地的权限。
专用出口节点或 NAT 网关也可用于集中和记录出站连接,以实现可追溯性并优化性能隔离。
Red Hat OpenShift on IBM Cloud 是一个完全托管的 OpenShift 容器平台 (OCP)。
容器解决方案能够运行和扩展容器化工作负载,并实现安全性、开源创新和快速部署。
利用 IBM 的云咨询服务发掘新功能并提升业务敏捷性。了解如何通过混合云战略和专家合作共同制定解决方案、加快数字化转型并优化性能。