第 2 章 ROSA 架构
2.1. 架构概念
了解 Red Hat OpenShift Service on AWS 架构中使用的 OpenShift 和容器基本概念。
2.1.1. OpenShift
OpenShift 是一个 Kubernetes 容器平台,它为运行企业工作负载提供了一个可信任的环境。它扩展了 Kubernetes 平台及内置软件,以增强应用程序生命周期开发、操作和安全性。借助 OpenShift,您可以在混合云供应商和环境中持续部署工作负载。
2.1.2. Kubernetes
Red Hat OpenShift Service on AWS (ROSA) 使用 Red Hat OpenShift,它是一个企业 Kubernetes 平台。Kubernetes 是一个开源平台,用于在多个主机上管理容器化工作负载和服务,并提供管理工具以最少地部署、自动化、监控和扩展容器化应用程序。有关 Kubernetes 的完整信息,请参阅 Kubernetes 文档。
- 集群、计算池和计算节点
Kubernetes 集群由 control plane 和一个或多个计算节点组成。Compute 节点组织到 CPU、内存、操作系统、附加磁盘和其他属性的类型或配置集的计算池中。计算节点与 Kubernetes 的
Node资源对应,并由 Kubernetes control plane 管理,该 control plane 集中控制并监控集群中的所有 Kubernetes 资源。当您为容器化应用部署资源时,Kubernetes 控制平面决定将这些资源部署到哪一计算节点,并考虑集群中部署要求和可用容量。Kubernetes 资源包括服务、部署和 pod。
- 命名空间
-
Kubernetes 命名空间是一种将集群资源划分为不同的区域,您可以部署应用并限制访问,例如,您可能希望与多个团队共享集群。例如,为您配置的系统资源保存在不同的命名空间中,如
kube-system。如果您在创建 Kubernetes 资源时没有指定命名空间,则资源会在default命名空间中自动创建。 - Pod
- 部署到集群中的每个容器化应用程序都由名为 pod 的 Kubernetes 资源部署、运行和管理。在 Kubernetes 集群中, pod 代表一个小的可部署单元,用于对必须被视为单个单元的容器进行分组。在大多数情况下,每个容器都部署在自己的 pod 中。但是,应用程序可能需要一个容器和其他帮助程序容器部署到一个 pod 中,以便可以使用相同的私有 IP 地址解决这些容器。
- App
- 应用程序可以引用应用程序或应用程序的组件。您可以在单独的 pod 或单独的计算节点上部署应用程序的组件。
- Service
- 服务是一个 Kubernetes 资源,对一组 pod 进行分组,并在不公开每个 pod 的实际专用 IP 地址的情况下为这些 pod 提供网络连接。您可以使用服务使应用程序在集群中或公共互联网可用。
- Deployment
部署是一个 Kubernetes 资源,您可以指定运行应用程序所需的其他资源或功能信息,如服务、持久性存储或注解。您可以在配置 YAML 文件中配置部署,然后将其应用到集群。Kubernetes 主资源配置资源,并将容器部署到具有可用容量的计算节点上。
为应用程序定义更新策略,包括要在滚动更新期间添加的 pod 数以及一次不可用的 pod 数量。执行滚动更新时,部署会检查更新是否正常工作,并在检测到失败时停止推出部署。
部署只是可用于管理 pod 的工作负载控制器。
2.1.3. 容器
容器提供了一种标准的方式来将应用代码、配置和依赖项打包成一个单元。容器在计算主机上作为隔离进程运行,并共享主机操作系统及其硬件资源。可在环境之间移动容器,并在不做更改的情况下运行。与虚拟机不同,容器不会虚拟化设备、其操作系统和底层硬件。只有应用程序代码、运行时间、系统工具、库和设置都打包在容器中。这种方法使容器更加轻便、可移植且比虚拟机效率更高。
基于现有的 Linux 容器技术 (LXC),OCI 兼容容器镜像定义了如何将软件打包成标准化单元(包含应用程序需要运行的所有元素)的模板。Red Hat OpenShift Service on AWS (ROSA) 使用 CRI-O 作为容器运行时,将容器部署到集群中。
要在 Kubernetes on ROSA 上运行应用程序,您必须首先通过创建存储在容器 registry 中的容器镜像来容器化应用程序。
- 镜像
- 容器镜像是您要运行的每个容器的基础。容器镜像从 Dockerfile 构建,用来定义如何构建镜像以及其中包含的构建工件,如 app、app 配置及其依赖项。镜像始终从其他镜像构建,从而能够快速配置镜像。
- Registry
- 镜像 registry 是用于存储、检索和共享容器镜像的位置。存储在 Registry 中的镜像可以公开(公共 Registry)或一组用户(私有 Registry)访问。ROSA 提供公共镜像,您可以使用它来创建第一个容器化的应用程序。对于企业应用,请使用私有 registry 来保护您的镜像被未授权用户使用。