Coursera 笔记

Module 04 · The Kubernetes Ecosystem: OpenShift, Istio, etc.

Introduction to Red Hat OpenShiftRed Hat OpenShift 简介

Coursera ↗

OpenShift 定义与核心特性

OpenShift 是一个由 Red Hat 开发和支持的企业级 Kubernetes 容器平台,专为混合云策略(Hybrid Cloud strategy)而构建。

OpenShift 的基础

  • 技术基础: 建立在 Linux、容器和自动化的技术基础之上。
  • 平台一致性: 提供一致的应用程序平台,用于管理混合云、多云和边缘部署。

核心功能与价值

  • 全栈自动化: 提供全栈自动化操作和自助服务置备(self-service provisioning)。
    • 目标:帮助开发人员高效地将想法从开发阶段推向生产。
  • 完整生命周期工具: 除了容器编排,它还提供围绕应用程序完整生命周期的附加工具,涵盖构建、CI/CD、监控和日志。
  • 与 Kubernetes 的关系: Kubernetes 是 OpenShift 的关键组件。OpenShift 可视为 Kubernetes 的扩展,提供了一个更健壮、更全面的容器化应用平台。

OpenShift 的主要功能

OpenShift 提供广泛的功能,旨在简化和增强企业级应用部署:

  • 伸缩能力:应用可在几秒内伸缩到数百个节点上的数千个实例。
  • 基础设施:灵活的混合基础设施选项,简化部署和管理。
  • 开放标准:使用 Kubernetes 和 OCI 容器(Open Container Initiative),这意味着开发工作熟悉且容器在多环境中可移植。
  • 开发者工具:包含全面的开发者工具集、多语言支持、命令行、IDE 集成等。
  • 升级和运维:支持空中平台升级(over-air platform upgrades),Operator Hub 中的服务可以一键式升级、完全配置和部署。
  • 自动化:容器和应用的构建、部署、伸缩和健康管理都得到简化和自动化。
  • 边缘计算:增强对边缘场景中更小拓扑结构的支持,以改善映射、连接和可用性。
  • 多集群管理:轻松大规模管理和实施跨多个集群的策略。
  • 企业安全:提供访问控制、网络、企业级注册表、内置扫描仪、增强威胁检测、生命周期漏洞管理和风险分析。
  • 存储:支持企业级持久存储解决方案,用于运行有状态和无状态应用。
  • 生态合作:OpenShift 合作伙伴生态系统提供额外的存储和网络服务,以及 IDE、CI 集成等。

OpenShift 与 Kubernetes 对比

OpenShift 在 Kubernetes 的基础上进行了产品化和增强 .

特性 OpenShift (产品) Kubernetes (开源项目)
本质 产品(Product),由 Red Hat 支持 开源项目(Open Source Project)
安装 安装开始后选项有限 可安装在所有 Linux 环境中
灵活性 较低(较少灵活) 较高(更灵活)
可用性 可用于 Online with Azure 和 Dedicated 部署 可用于 EKS (AWS)、GKE (GCP)、AKS (Azure) 等
镜像管理 Image Streams 提供更好的管理 容器镜像管理相对不便
安全性 非常严格的安全策略 安全维护相对容易
外部访问 使用 Router 对象 使用 Ingress 对象
部署对象 使用部署配置(Deployment Config),灵活性较低 使用部署对象(Deployment Objects),灵活性较高
用户体验 提供良好的用户体验(UX)和易于学习的 Web 控制台 需要额外工具来改善用户体验,控制台对初学者较难
网络方案 开箱即用提供良好的网络解决方案 网络解决方案不可用时需要第三方插件
服务目录 提供良好的服务目录 在集群中为更好的服务提供的配置较少
CI/CD 集成 与 Jenkins 集成 可以集成 CI/CD,但不直接与 Jenkins 集成

OpenShift 架构与组件

OpenShift 运行在 Kubernetes 集群之上,其对象数据存储在 etcd 键值存储中。

架构分层

  1. Red Hat 基础层:
  • Master 节点:运行在 Red Hat Enterprise Linux CoreOS 之上。
  • Worker 节点:支持 Red Hat Enterprise Linux。
  1. Kubernetes 架构与服务集合:
  • Docker:提供封装和创建基于 Linux 的轻量级容器镜像的抽象。
  • Kubernetes:提供集群管理,并在多主机上编排容器。
  1. OpenShift 附加功能:
  • 针对开发人员的源代码、构建和部署管理。
  • 大规模管理和推广镜像。
  • 大规模应用管理。
  • 团队和用户跟踪管理大型开发组织。
  • 支持集群的网络基础设施。
  1. 服务层:
  • 集群服务:包括集成监控、集群内的私有注册表、网络解决方案等。
  • 平台服务:帮助用户管理其工作负载。
  • 应用服务:帮助用户构建云原生应用。
  • 开发者服务:提高开发人员生产力。

微服务架构

OpenShift 具有基于微服务的架构:

  • REST APIs 服务:暴露核心对象。
  • 控制器(Controllers):
    • 读取 REST APIs。
    • 对其他对象应用更改。
    • 报告状态或写回对象。
    • 维护集群的期望状态(desired state)。

OpenShift 命令行接口 (CLI)

OpenShift 提供一套 CLI 工具,允许用户从终端执行各种管理和开发操作。

  • oc (OpenShift CLI):最常用的 CLI 工具,用于执行端到端操作,可运行在 Windows、Linux 或 Mac 上。

oc与kubectl

由于 OpenShift 运行在 Kubernetes 集群之上,oc 中也包含 kubectl 的副本。

特性 oc CLI kubectl Binary
基本能力 提供与 kubectl 相同的基本功能 标准 Kubernetes CLI
扩展功能 扩展以原生支持 OpenShift 特性:Deployment Configs, Build Configs, Routes, Image Streams 等(这些在标准 Kubernetes 中不可用)。 不支持 OpenShift 特有的功能。
附加命令 提供内置的 login 命令进行认证,支持 new-app 等简化应用启动的命令。 无。

总结

  • Kubernetes 和 OpenShift 都是容器编排平台。
  • OpenShift 是一个为开放混合云构建的企业级 Kubernetes 容器平台。
  • OpenShift 运行在 Kubernetes 集群之上,对象数据存储在 etcd 键值存储中。
  • 相比 Kubernetes,OpenShift 更易于使用、集成了 Jenkins,并拥有更多的服务和功能。