OpenShift 和 Kubernetes 有什么区别?

2022-04-21 13:37:01 浏览数 (1)

OpenShift 3以后, 架构完全基于K8S进行了重构, 但是又有一些差异. 今天, 我们就深入研究一下.

K8S 是"内核"

K8S可以认为是当代分布式系统的"内核". 我们意识到, 一个设计良好的作业调度程序, 跨多台及其运行, 能够协调托管在其上的工作负载的状态, 自然就会促进协作, 就像Linux内核为单个主机上调度工作负载所做的那样. 遵循这一逻辑, 我们知道不同的产品会根据针对用户的不同而差异化地打造.

在很多手机, 电脑, 服务器, 甚至是树莓派上, 运行的都是相同的Linux 内核, 但是通过不同的补丁来支持多种多样的硬件.

K8S和各种各样的K8S发行版也适用于同样的模型, 通过不同类型的补丁, 来支持在K8S上面的一层.

OpenShift 是发行版

这是一个强有力的区别。OpenShift就是Kubernetes的发行版,专注于开发人员的体验,而开发人员需要开发下一代云原生应用程序。

虽然任何人都可以通过选择每1个部分并按照每个用户选择的定制方式组装它们来从Scratch 构建Linux,但大多数人都没有。大多数用户选择的抽象级别意味着他们不会从管理(甚至了解)Util-Linux版本2.31和2.33之间的差异中获得很多价值。为了更进一步,用户关心最低级别的功能(例如,只要超过最小版本号,他们就知道哪些命令/ API可用),然后提供所提供功能的列表。

这与OpenShift非常相似。OpenShift将Kubernetes打包并包含其他工具作为OpenShift认为重要且OpenShift的用户需求的功能。就像CoreOS和CentOS包含不同的工具集一样,迎合不同的用户,因此Kubernetes发行版也是如此。

OpenShift和K8S的具体区别

OpenShift 架构概述

OpenShift容器平台是一系列流行的组件和服务的集合体, 构建于Red Hat Enterprise Linux, Docker, 和K8S之上. OpenShift针对开发人员, 增强了以下功能:

  • 远程管理
  • 多租户
  • 安全性增强
  • 应用生命周期管理
  • 自服务接口

在上图中, 从下至上, 从左至右, 展示了经过Red Hat 在基本的容器架构基础上进一步集成、增强的架构:

  • 基本OS是Red Hat Enterprise Linux (RHEL)
  • Docker 提供了基本的容器管理API和容器镜像文件格式
  • Kubernetes 管理运行容器的主机集群(实体的或虚拟的). 它通过资源(resources)来描述多容器应用是由多个资源组成的, 以及他们间如何交互
  • Etcd 是一个分布式 key-value 存储, Kubernetes 通过它来存储集群内的关于容器和其他资源的配置和状态信息.

在Docker Kubernetes 之上, OpenShift增加了容器平台所需要的其他功能. 具体包括:

  • OpenShift-Kubernetes 扩展 是存储在Etcd中, 由Kubernetes管理的额外的资源类型(resource types). 这些额外的资源类型组成了OpenShift 内部状态和配置, 还有应用的资源.
  • 容器化服务 充实了很多基础架构功能, 比如网络和认证. 这些功能有些是一直运行的, 有些是按需启动的.
  • 运行时和xPaaS 是为开发者准备好的容器镜像, 每个都预配置了特定的语言运行时或数据库. 可以被用作镜像流(Image Stream)或在此基础上增加不同的框架, 库, 甚至是中间件来进行扩展. xPaaS 提供了一系列JBoss中间件产品的基础镜像, 如: JBoss EAP 和 ActiveMQ.
  • DevOps 工具集和用户体验: OpenShift 为开发人员和系统管理员提供了一个Web UI和CLI 管理工具, 允许配置和监控应用和OpenShift的服务和资源. Web和 CLI 都是基于相同的REST API, 这个API也可以被外部工具(如: IDE和CI平台)整合. OpenShift也可以访问外部SCM库和容器镜像库.

0 人点赞