OpenShift - 架构


OpenShift 是一个分层系统,其中每一层都使用 Kubernetes 和 Docker 集群与另一层紧密绑定。OpenShift 的架构设计为可以支持和管理 Docker 容器,这些容器使用 Kubernetes 托管在所有层之上。与早期版本的 OpenShift V2 不同,新版本的 OpenShift V3 支持容器化基础设施。在此模型中,Docker 帮助创建基于 Linux 的轻量级容器,而 Kubernetes 支持在多个主机上编排和管理容器的任务。

OpenShift 容器平台架构

OpenShift 的组件

OpenShift 架构的关键组件之一是管理 Kubernetes 中的容器化基础设施。Kubernetes 负责基础设施的部署和管理。在任何 Kubernetes 集群中,我们都可以有多个主节点和多个节点,这确保了设置中没有故障点。

OpenShift 架构的关键组件

Kubernetes主机组件

Etcd - 它存储配置信息,可供集群中的每个节点使用。它是一个高可用性键值存储,可以分布在多个节点之间。它只能由 Kubernetes API 服务器访问,因为它可能包含敏感信息。它是一个所有人都可以访问的分布式键值存储。

API 服务器- Kubernetes 是一个 API 服务器,它使用 API 提供集群上的所有操作。API 服务器实现了一个接口,这意味着不同的工具和库可以轻松地与其通信。kubeconfig 是一个包含可用于通信的服务器端工具的包。它公开了 Kubernetes API”。

控制器管理器- 该组件负责调节集群状态并执行任务的大多数收集器。它可以被认为是一个以非终止循环运行的守护进程,负责收集信息并将其发送到 API 服务器。它致力于获取集群的共享状态,然后进行更改以使服务器的当前状态达到所需的状态。关键控制器是复制控制器、端点控制器、命名空间控制器和服务帐户控制器。控制器管理器运行不同类型的控制器来处理节点、端点等。

Scheduler - 它是 Kubernetes master 的关键组件。它是 master 中的一个服务,负责分配工作负载。它负责跟踪集群节点上工作负载的利用率,然后将工作负载放置在可用资源上并接受工作负载。换句话说,这是负责将 pod 分配给可用节点的机制。调度程序负责工作负载利用率并将 Pod 分配给新节点。

Kubernetes 节点组件

以下是 Node 服务器的关键组件,它们是与 Kubernetes master 通信所必需的。

Docker - 每个节点的首要要求是 Docker,它有助于在相对隔离但轻量级的操作环境中运行封装的应用程序容器。

Kubelet 服务- 这是每个节点中的一个小型服务,负责在控制平面服务之间转发信息。它与 etcd 存储交互以读取配置详细信息和 Wright 值。它与主组件通信以接收命令并工作。然后,kubelet 进程承担维护工作状态和节点服务器的责任。它管理网络规则、端口转发等。

Kubernetes 代理服务- 这是一个在每个节点上运行的代理服务,有助于使服务可供外部主机使用。它有助于将请求转发到正确的容器。Kubernetes Proxy Service 能够进行原始负载均衡。它确保网络环境是可预测和可访问的,但同时它也是隔离的。它管理节点上的 pod、卷、秘密、创建新容器健康检查等。

集成 OpenShift 容器注册表

OpenShift容器注册表是Red Hat内置的存储单元,用于存储Docker镜像。借助最新的 OpenShift 集成版本,它提供了一个用户界面来查看 OpenShift 内部存储中的图像。这些注册表能够保存带有指定标签的镜像,这些镜像随后用于构建容器。

常用术语

图像- Kubernetes(Docker)图像是容器化基础设施的关键构建块。目前,Kubernetes 仅支持 Docker 镜像。Pod 中的每个容器都在其中运行其 Docker 映像。配置 pod 时,配置文件中的 image 属性与 Docker 命令的语法相同。

项目- 它们可以定义为 OpenShift V2 早期版本中存在的域的重命名版本。

容器- 它们是在将映像部署到 Kubernetes 集群节点上之后创建的容器。

节点- 节点是 Kubernetes 集群中的工作机器,也称为 master 的 minion。它们是工作单元,可以是物理、虚拟机或云实例。

Pod - Pod 是 Kubernetes 集群节点内容器及其存储的集合。可以创建一个内部包含多个容器的 Pod。例如,将数据库容器和 Web 服务器容器保留在 pod 内。