yangxt65535

OpenShift 平台能力洞察

OpenShift 平台全景

landscape

OpenShift提供开源社区版本OKD,并根据能力范围和服务等级提供多种商业版本,从OKE, OCP到OCP Plus,能力范围与服务等级逐步提升。其中开源社区版本OKD是OCP的上游,OKD中的实验性功能成熟后,将会优先合入OCP,后者作为OpenShift的标准版。OKE是OCP的精简版本,提供OpenShift最小集;OCP Plus在OCP基础上进一步集成OpenShift其他产品能力。

洞察优先关注OKD/OCP的能力范围,并识别开源与商用的差异能力程度。

参考: OKE规格:https://www.redhat.com/en/resources/openshift-kubernetes-engine-datasheet OCP规格:https://www.redhat.com/en/resources/openshift-container-platform-datasheet 版本对比:https://www.redhat.com/en/resources/self-managed-openshift-subscription-guide#section-13

  • OKE提供容器平台基础能力,包括:安装部署、网络、存储、监控、日志、镜像仓、认证鉴权、容器+VM、应用运维(Helm+Operator)
    • 网络
    • 安装部署、监控&日志、镜像仓、认证鉴权、存储
    • 应用运维、容器+VM
  • OCP在OKE基础上进一步提供云原生运维开发服务/工具:
    • 平台服务:服务网格、无服务、CI/CD、GitOps、虚拟化、AI助手、边缘计算、消息代理
    • 应用开发服务:环境支持(语言运行时支持、API管理等)、开发工具(CLI、IDE、插件)
    • 数据洞察:分析、看板

      应用开发服务、数据洞察是外部能力/产品,不直接作为OCP的一部分,但是可以通过应用市场获取、安装与使用

  • OCP plus额外继承了red hat其他商业产品,可独立于ocp使用但是在ocp上使用体验最好,这里不展开洞察
    • 高级集群管理(针对多个集群生命周期管理)
    • 高级k8s集群安全套件(提供流水线、运行时安全扫描;安全审计等)
    • Quay镜像仓:独立镜像存储服务(区别于集群内置镜像仓)
    • 数据基础(提供集群数据的存储,用于集群备份、恢复、迁移等)

openFuyao对比

功能模块OpenShiftopenFuyao
安装部署通过iso镜像文件,在裸金属或云平台虚机安装操作系统与组件,从临时bootstrap节点完成整个集群的启动在持久化的引导节点上执行安装二进制工具,远程完成现有物理或虚拟主机上的组件安装
集群生命周期管理通过Cluster Version Operator、Machine API等管理当前集群扩缩容,不支持多集群管理(需要OCP Plus高级集群管理)在持久化引导节点上,对所有由该引导节点创建的集群进行升级、扩缩容管理
多集群需要OCP Plus高级集群管理,在一个界面访问多个集群支持,使用karmada
监控Prometheus+alertmanager+Thanos,包含对特定组件指标的监控封装(待确认),对核心组件和用户定义组件的监控被拆分为两组单一Prometheus+alertmanager套件,纯promQL
日志基于Loki+alertmanager,在Loki原生采集存储基础上提供日志转发功能基于Loki+alertmanager,仅Loki原生采集和存储
镜像仓内置本地镜像仓,基于quay构建,允许从集群内业务直接推送或拉取,也可以对外部开放内置本地harbor仓,允许上传和安装helm chart
认证鉴权基于OAuth,允许接入多种自定义ipd基于OAuth,仅支持内置ipd
存储K8s原生,对各类云存储平台提供商用保障K8s原生
应用运维All in Operater,通过Op为各类组件提供强运维能力,有存量Helm应用纯Helm Chart,无状态不感知应用,运维能力弱

安装部署

安装原理:

  • 将集群部署分解为多个目标(最终目标为集群运行),每个目标有一系列依赖条件,从而将安装部署的流程分解为多个并行、顺序的工作流
  • 初始提供集群安装配置文件install-config.yaml,转换为K8s manifests,打再包为多个ignition文件,用于创建三类节点Boostrap node, control plane, Compute node

安装流程:

  • installer创建临时bootstrap节点,启动临时etcd集群和k8s控制平面用于托管资源
  • 控制平面节点从bootstrap获取资源并启动,并创建正式etcd集群
  • bootstrap节点将OKD组件注入到控制平面后被installer关闭
  • 控制平面启动计算节点,安装所需组件

安装方式:

  1. Assisted Installer OpenShift提供的在线服务,有WebUI和RESTful API两种方式。用户提供集群配置后会创建discovery镜像,下载并安装到本地节点后会创建一个安装agent,执行具体安装流程并持续进行节点状态上报。
  2. Agent-based Installation 与上面一种原理一致,只是改为下载二进制文件,在本地根据集群配置创建discovery镜像文件。适用于离线安装环境。
  3. Installer-proviosned infrasturcture:前两种方式由用户准备基础设施,安装工具完成集群安装;IPI从创建基础设施开始完成整个安装流程,适用于可编程云/虚拟化平台(AWS、Azure等)
  4. 全手动

可观测性

监控(集群内)

集群内的监控通过Cluster Monitoring Operator管理,主要包括:Prometheus, Alertmanager, Thanos Querier,Metrics Server等。(另包含Telemeter遥测客户端,用于red hat发用户数据)

Thanos Querier,针对prom提供一个统一查询入口,持久化存储、去重

参考:https://docs.redhat.com/en/documentation/monitoring_stack_for_red_hat_openshift/4.20/html/about_monitoring/monitoring-stack-architecture#understanding-the-monitoring-stack_monitoring-stack-architecture

默认在openshift-monitoring project下部署监控组件及相关资源,用于监控平台核心监控目标与集群健康状态。可以进一步启用对用户定义project的监控,启用后将在openshift-user-workload-monitoring创建额外的资源。

monitoring-arch

日志

以LokiStack为核心,提供日志采集、转发与持久化存储配套功能

参考:https://docs.redhat.com/en/documentation/red_hat_openshift_logging/6.4/html/about_openshift_logging/about-logging

  • 提供ClusterLogForwarder,允许将日志转发到第三方日志后端(支持loki、elasticsearch等)
  • 支持多种日志配置(LokiStack等)

其他

分布式跟踪:跟踪、记录、可视化每一个请求在服务间的总计数据,用于网络性能分析等

遥测:开源遥测框架openTelementry的OpenShift版本,支持向各类后端上报集群内监控信息

网络可观测:通过eBPF抓取集群内网络事件,通过Prom+loki进行指标和日志采集,实现对集群内网络传输的观测与可视化

能耗监控:容器级、硬件能耗监控(Kepler,一个基于k8s的prom exporter)

内置镜像仓

OpenShift内置本地镜像仓服务,基于Quay构建,允许直接进行镜像的构建、部署与生命周期管理。仓库开箱即用,不依赖特定基础设施(?)。

镜像数据存储在特定存储位置(云存储、文件系统卷等),元数据作为资源存储在集群中并通过API提供。

在OpenShift CI/CD通过BuildConfig可以指定构建产物的镜像直接推送到内置镜像仓,部署工作负载时也可以通过镜像仓专用地址拉取镜像。

允许为该镜像仓创建一个默认Route对外暴露(支持OCI客户端登录、拉取/推送)

认证鉴权

基于OAuth的认证

使用Oauth框架:

  • 集群内提供内置Oauth Server
  • 支持自由配置identity provider(秘钥、请求体、外部服务如github、google账号)
  • 注册Oauth客户端
  • 调用云厂商凭证,处理云平台相关的认证鉴权(独立于k8s rbac)
  • 临时管理员权限赋予

基于RBAC的鉴权

存储

k8s原生能力,只是在各类云平台存储的适配上做保障

应用运维

CRD+Controller

OpenShift支持通过Operator和Helm chart进行应用安装,但是强烈偏向于Operator。Operator相比Helm,作为常驻服务,能够实时感知应用状态并自动纠偏,能够处理更复杂的有状态系统,运维属性更强。OpenShift根据Operator运维能力将其分为Basic Install, Seamless Upgrades, Full Lifecysle, Deep Insights和Auto Pilot五档。

operator体系

一个OpenShift集群通常包含两类原理、用途一致但定位不同的Operator:

  • Cluster Operators:默认安装,用于指定特定的集群功能的Operator,支撑apiserver、scheduler、网络、存储等k8s或OpenShift功能组件的安装维护。这些Operator由Clutser Version Operator统一管理,通过ClusterOperator CRD维护。
  • Optional add-on Operators: 默认Operator以外通过OpenShift官方途径安装的Operator(包括平台能力类的和业务类的),由Operator Lifecycle Manager管理,通过CatalogSource、Subscription、InstallPlan、CSV的CRD栈维护其与应用信息、安装策略与状态。
ClusterVersionOperator -> Cluster Operators
                                |-- apiserver-operator -> apiserver
                                |-- scheduler-operator -> scheduler
                                |-- ...
                                |-- Operator-lifecycle-Manager -