集群管理员有几种选择可以将集群内运行的应用程序公开给外部流量并保护网络连接
服务类型,例如节点端口或负载均衡器
API 资源,例如Ingress
和Route
默认情况下,Kubernetes 为在 Pod 中运行的应用程序分配每个 Pod 一个内部 IP 地址。Pod 及其容器可以进行网络通信,但集群外部的客户端没有网络访问权限。当您将应用程序公开给外部流量时,为每个 Pod 分配其自己的 IP 地址意味着 Pod 在端口分配、网络、命名、服务发现、负载均衡、应用程序配置和迁移方面可以像物理主机或虚拟机一样对待。
一些云平台提供在 169.254.169.254 IP 地址(IPv4 此 CIDR 块无法从 Pod 网络访问。需要访问这些 IP 地址的 Pod 必须通过将 Pod 规范中的 如果允许 Pod 访问主机网络,则会授予 Pod 对底层网络基础设施的特权访问权限。 |
如果您运行多个服务(例如用于多个 Pod 的前端和后端服务),则会为用户名、服务 IP 等创建环境变量,以便前端 Pod 可以与后端服务通信。如果服务被删除并重新创建,则可以为服务分配新的 IP 地址,并且需要重新创建前端 Pod 以获取服务 IP 环境变量的更新值。此外,必须在任何前端 Pod 之前创建后端服务,以确保正确生成服务 IP,并且可以将其作为环境变量提供给前端 Pod。
因此,OpenShift Container Platform 具有内置的 DNS,以便可以通过服务 DNS 和服务 IP/端口访问服务。
创建 OpenShift Container Platform 集群时,集群上运行的 Pod 和服务都会分配自己的 IP 地址。这些 IP 地址可供附近运行的其他 Pod 和服务访问,但外部客户端无法访问。
Ingress 运算符允许外部客户端通过部署和管理一个或多个基于 HAProxy 的Ingress 控制器来访问您的服务,以处理路由。您可以使用 Ingress 运算符通过指定 OpenShift Container Platform Route
和 Kubernetes Ingress
资源来路由流量。Ingress 控制器内的配置(例如定义endpointPublishingStrategy
类型和内部负载均衡的能力)提供了发布 Ingress 控制器端点的方法。
OpenShift Container Platform 中的 Kubernetes Ingress 资源使用在集群内作为 Pod 运行的共享路由器服务来实现 Ingress 控制器。管理 Ingress 流量最常见的方法是使用 Ingress 控制器。您可以像任何其他常规 Pod 一样扩展和复制此 Pod。此路由器服务基于HAProxy,这是一种开源负载均衡解决方案。
OpenShift Container Platform 路由为集群中的服务提供 Ingress 流量。路由提供标准 Kubernetes Ingress 控制器可能不支持的高级功能,例如 TLS 重新加密、TLS 直通和蓝绿部署的流量分割。
Ingress 流量通过路由访问集群中的服务。路由和 Ingress 是处理 Ingress 流量的主要资源。Ingress 提供类似于路由的功能,例如接受外部请求并根据路由委托它们。但是,使用 Ingress,您只能允许某些类型的连接:HTTP/2、HTTPS 和服务器名称标识 (SNI),以及带有证书的 TLS。在 OpenShift Container Platform 中,会生成路由以满足 Ingress 资源指定的条件。
本词汇表定义了网络内容中使用的常用术语。
为了控制对 OpenShift Container Platform 集群的访问,集群管理员可以配置用户身份验证并确保只有经过批准的用户才能访问集群。要与 OpenShift Container Platform 集群交互,您必须向 OpenShift Container Platform API 进行身份验证。您可以通过在对 OpenShift Container Platform API 的请求中提供 OAuth 访问令牌或 X.509 客户端证书来进行身份验证。
AWS 负载均衡器 (ALB) 运算符部署和管理aws-load-balancer-controller
的实例。
集群网络运算符 (CNO) 部署和管理 OpenShift Container Platform 集群中的集群网络组件。这包括部署在安装期间为集群选择的容器网络接口 (CNI) 网络插件。
配置映射提供了一种将配置数据注入 Pod 的方法。您可以在类型为ConfigMap
的卷中引用存储在配置映射中的数据。在 Pod 中运行的应用程序可以使用此数据。
CR 是 Kubernetes API 的扩展。您可以创建自定义资源。
集群 DNS 是一个 DNS 服务器,它为 Kubernetes 服务提供 DNS 记录。Kubernetes 启动的容器会自动将其 DNS 服务器包含在其 DNS 搜索中。
DNS 运算符部署和管理 CoreDNS 以向 Pod 提供名称解析服务。这使得在 OpenShift Container Platform 中能够进行基于 DNS 的 Kubernetes 服务发现。
维护应用程序生命周期的 Kubernetes 资源对象。
域名是由 Ingress 控制器服务的 DNS 名称。
通过网络从 Pod 发出的出站流量进行外部数据共享的过程。
外部 DNS 运算符部署和管理 ExternalDNS,以便为来自外部 DNS 提供商到 OpenShift Container Platform 的服务和路由提供名称解析。
基于 HTTP 的路由是不安全的路由,它使用基本的 HTTP 路由协议并在不安全的应用程序端口上公开服务。
OpenShift Container Platform 中的 Kubernetes Ingress 资源使用在集群内作为 Pod 运行的共享路由器服务来实现 Ingress 控制器。
Ingress 运算符管理 Ingress 控制器。使用 Ingress 控制器是允许外部访问 OpenShift Container Platform 集群最常见的方法。
安装程序部署和配置集群在其上运行的基础架构。
在集群中的每个节点上运行的主要节点代理,以确保容器在 Pod 中运行。
Kubernetes NMState 运算符为使用 NMState 在 OpenShift Container Platform 集群的节点上执行状态驱动网络配置提供了 Kubernetes API。
Kube-proxy 是在每个节点上运行的代理服务,有助于使服务可用于外部主机。它有助于将请求转发到正确的容器,并且能够执行基本的负载均衡。
OpenShift Container Platform 使用负载均衡器在集群外部与在集群中运行的服务进行通信。
作为集群管理员,您可以将 MetalLB 运算符添加到您的集群,以便当类型为LoadBalancer
的服务添加到集群时,MetalLB 可以为该服务添加一个外部 IP 地址。
使用 IP 组播,数据会同时广播到许多 IP 地址。
命名空间隔离对所有进程可见的特定系统资源。在一个命名空间内,只有属于该命名空间的进程才能看到这些资源。
OpenShift Container Platform 集群的网络信息。
OpenShift Container Platform 集群中的工作机器。节点可以是虚拟机 (VM) 或物理机。
Ingress 运算符实现了IngressController
API,并且是负责启用对 OpenShift Container Platform 服务的外部访问的组件。
一个或多个具有共享资源(例如卷和 IP 地址)的容器,在您的 OpenShift Container Platform 集群中运行。Pod 是定义、部署和管理的最小计算单元。
PTP 运算符创建和管理linuxptp
服务。
OpenShift Container Platform 路由为集群中的服务提供 Ingress 流量。路由提供标准 Kubernetes Ingress 控制器可能不支持的高级功能,例如 TLS 重新加密、TLS 直通和蓝绿部署的流量分割。
增加或减少资源容量。
公开一组 Pod 上运行的应用程序。
单根 I/O 虚拟化 (SR-IOV) 网络运算符管理集群中的 SR-IOV 网络设备和网络附件。
一种软件定义网络 (SDN) 方法,用于提供统一的集群网络,使 OpenShift Container Platform 集群中的 Pod 之间能够进行通信。
SCTP 是一种可靠的消息型协议,运行在 IP 网络之上。
污点和容忍度确保 Pod 被调度到合适的节点上。您可以在节点上应用一个或多个污点。
您可以将容忍度应用于 Pod。容忍度允许调度程序调度具有匹配污点的 Pod。
用于管理 OpenShift Container Platform 的用户界面 (UI)。