第 2 章 OpenShift Container Platform 概述

OpenShift Container Platform 是一个基于云的 Kubernetes 容器平台。OpenShift Container Platform 的基础基于 Kubernetes,因此共享相同的技术。它旨在允许支持的应用程序和数据中心从少量机器和应用程序扩展到为数百万客户端服务的数千台机器。

OpenShift Container Platform 允许您进行以下操作:

  • 为开发人员和 IT 组织提供可用于在安全、可扩展资源上部署应用程序的云应用平台。
  • 需要最少的配置和管理开销。
  • 将 Kubernetes 平台带到客户数据中心和云。
  • 满足安全、隐私、合规性和管理要求。

OpenShift Container Platform 以 Kubernetes 为基础,为大规模电信、流视频、游戏、银行和其他应用提供引擎技术。借助红帽开放技术中的实现,您可以将容器化应用程序从单一云扩展到内部和多云环境。

2.1. OpenShift Container Platform 常用术语表

此术语表定义了常见的 Kubernetes 和 OpenShift Container Platform 术语。

Kubernetes
Kubernetes 是一个开源容器编配引擎,用于自动化容器化应用程序的部署、扩展和管理。
容器
容器是 worker 节点上以 OCI 兼容容器中运行的应用程序实例和组件。容器是开放容器项目(OCI)兼容镜像的运行时。镜像是二进制应用。worker 节点可以运行多个容器。节点容量与底层资源的内存和 CPU 功能相关,无论它们是云、硬件还是虚拟化。
Pod

pod 是共同部署在同一主机上的一个或多个容器。它包含一组有共享资源(如卷和 IP 地址)的容器。pod 也是定义、部署和管理的最小计算单元。

在 OpenShift Container Platform 中,pod 替代了独立的应用程序容器作为最小的可部署单元。

Pod 是 OpenShift Container Platform 中编配的单元。OpenShift Container Platform 在同一个节点上的一个 pod 中调用并运行所有容器。复杂的应用由多个 pod 组成,每个 pod 都有自己的容器。它们与外部进行交互,也在 OpenShift Container Platform 环境中相互交互。

副本集和复制控制器
Kubernetes 副本集和 OpenShift Container Platform 复制控制器都可用。此组件的作业是确保在所有时间都有指定数量的 pod 副本在运行。如果 pod 退出或被删除,副本集或复制控制器会启动其他 pod 也保证运行的数量。如果运行的 pod 数量超过了指定值,副本集将根据需要删除以匹配指定的副本数。
部署(Deployment)和部署配置(DeploymentConfig)

OpenShift Container Platform 实施 Kubernetes Deployment 对象和 OpenShift Container Platform DeploymentConfig 对象。用户可以选择其中的一个。

Deployment 对象控制应用程序如何作为 pod 推出部署。它们标识要从 registry 中获取的容器镜像的名称,并作为 pod 部署到节点上。它们设置要部署的 pod 的副本数,创建副本集来管理该进程。所示的标签指示要在哪个节点上部署 pod 的调度程序。在 pod 定义中包括一组标签用于实例化副本集。

Deployment 对象可以根据 Deployment 对象版本和各种 rollout 策略来更新部署到 worker 节点上的 pod,以管理应用程序的可用性。OpenShift Container Platform DeploymentConfig 对象添加了更改触发器的额外功能,这些触发器可以在容器镜像的新版本或其他更改时自动创建 Deployment 对象的新版本。

服务(Service)

服务定义了一组逻辑的 pod 和访问策略。它为其他应用程序提供永久内部 IP 地址和主机名,供其他用作 pod 的创建和销毁。

服务层将应用程序组件连接在一起。例如,前端 Web 服务通过与其服务通信连接到数据库实例。服务支持跨应用程序组件简单的内部负载平衡。OpenShift Container Platform 会自动将服务信息注入到正在运行的容器中,以简化发现过程。

路由(Route)
路由是通过为服务提供一个外部可访问主机名(如 www.example.com)来公开服务的方法。每个路由都包含路由名称、服务选择器和可选的安全配置。路由器可以使用定义的路由和由服务标识的端点,提供允许外部客户端到达应用程序的名称。尽管易于部署完整的多层应用程序,但从 OpenShift Container Platform 环境以外的任何位置的流量在没有路由层的情况下无法访问应用程序。
Build
构建 (build) 是将输入参数转换为结果对象的过程。此过程最常用于将输入参数或源代码转换为可运行的镜像。BuildConfig 对象是整个构建过程的定义。OpenShift Container Platform 通过从构建镜像创建容器并将它们推送到集成的 registry 来利用 Kubernetes。
项目

OpenShift Container Platform 使用项目来允许一组用户或开发人员一起工作,已实现一个隔离单位和协作单位。它定义资源范围,允许项目管理员和协作者管理资源,并使用配额和限制跟踪用户的资源。

项目是带有额外注解的 Kubernetes 命名空间。它是管理常规用户对资源访问的一个中央点。通过项目,一组用户可以在与其他用户隔离的前提下组织和管理其内容。用户需要通过管理员获得项目的访问权限。但是,集群管理员也可以允许开发人员创建自己的项目,在这种情况下,用户会自动获得自己项目的访问权限。

每个项目都有自己的一组对象、策略、约束和服务帐户的集合。

项目也称为命名空间(namespaces)。

Operator

Operator 是一个 Kubernetes 原生应用程序。Operator 的目标是将相关的知识融入到软件来实现各种操作。之前,这些知识存在于管理员的头脑中,以及各种 shell 脚本或自动化软件(如 Ansible)中。它们都在您的 Kubernetes 集群之外,很难集成。但是,Operators 改变了这个情况。

Operator 是为您的应用程序专门构建的。Operator 是在 Kubernetes 集群内运行的、原生集成了 Kubernetes 概念和 API 的一个软件,可以实施和自动化常见的第 1 天操作,如安装和配置,以及第 2 天活动,如扩展和缩减、重新配置、更新、备份、故障转移以及恢复。这称为 Kubernetes 原生应用程序。

使用 Operator 时,应用程序不能被视为原语的集合,如 pod、部署、服务或配置映射。相反,Operator 应被视为单个对象,它公开了对应用程序有意义的选项。