OpenShift 4 - 用 HyperShift 实现以“托管集群”方式部署运行 OpenShift 集群

news2024/11/14 3:53:12

《OpenShift / RHEL / DevSecOps / Ansible 汇总目录》
说明:本文已经在 OpenShift 4.11 + ACM 2.6 + AWS 环境中验证

文章目录

  • 用 HyperShift 实现 OpenShift 托管集群
    • 什么是 HyperShift 托管集群以及架构
    • HyperShift 托管集群的价值
      • 成本优势
      • 部署优势
      • 管理优势
  • 在 RHACM 上管理 OpenShift 托管集群生命周期
    • 创建托管集群
    • 升级托管集群
    • 扩展托管集群
      • 手动扩展 Worker 节点
      • 自动扩展 Worker 节
  • 参考

用 HyperShift 实现 OpenShift 托管集群

什么是 HyperShift 托管集群以及架构

红帽 HyperShift 是实现以托管的方式运行 OpenShift 集群 Control Plane 控制平面的开源项目,使用 HyperShift 可以在一个 RHACM 管理集群中统一运行多个托管 OpenShift 集群的 Control Plane,而这些托管集群的 Worker 还是运行在各自集群中。

基于 HyperShift 的 OpenShift 托管集群和标准的 OpenShift 集群最显著不同点是集群的 Control Plane 运行差异。

  1. 一个标准 OpenShift 集群的 Control Plane 和 Worker 同时运行在一个 OpenShift 集群中。Control Plane 对应的 Pod 是通过 Operator 管理生命周期的,相关 Pod 直接运行在 Control Plane 节点的 CoreOS 中,且运行 Control Plane 的相关资源分布在该集群的多个 Namespace 中。
  2. 一个托管 OpenShift 集群的 Control Plane 和 Worker 分别运行在管理集群中和被管集群中。Control Plane 对应的 Pod 是通过 Deployment 或 StatefulSet 管理生命周期的,相关 Pod 集中运行在管理集群中与托管集群对应的 Namespace 中。

在这里插入图片描述
一个托管集群其实是一个逻辑上的集群,因为托管集群的 Control Plane 和 Worker 实际上是分开运行在两个物理集群中。其中 Control Plane 运行在 “管理集群” 中的对应的命名空间内,而 Worker 是运行在 “被管集群” 中。

另外,也正是 Control Plane 被托管在 “管理集群” 中运行,因此针对托管集群的 Control Plane 管理操作(例如扩展集群节点、升级集群、配置 MachineConfig 等)都只能在 “管理集群” 中进行,而不能在 “被管集群” 中进行。

HyperShift 托管集群的价值

成本优势

为了保证可靠性标准 OpenShift 集群需要 3 个节点运行 Control Plane,因此当集群数量比较多的时候 Control Plane 消耗的硬件资源会比较多。而通过红帽的 HyperShift 实现的托管集群部署模式可以将 OpenShift 集群的 Control Plane 和 Worker 解耦运行部署,这样就可以在一个管理集群上集中运行多云环境中被托管集群的 Control Plane。另外托管集群的 Control Plane 是通过 Deployment 部署运行的,Deployment 自身的自愈性使得 Control Plane 即便是在单 Pod 运行的时候也具备一定的可靠性。这些都使得在大规模运行托管集群的时候具备节省 IaaS 资源的优势。

部署优势

由于一个 HyperShift 托管集群的 Control Plane 和 Worker 是分开运行的,因此这个逻辑上的集群可以分别运行在不同的硬件架构或网络环境上。例如 Control Plane 运行在 X86 架构的硬件上,而 Worker 可以运行在 ARM 架构的硬件上;或者 Control Plane 运行在私有云中,而 Worker 可以运行在不同公有云中。

管理优势

“管理集群” 的管理员可以集中管理所有托管集群的 Control Plane 配置,例如扩展集群节点、升级集群、配置 MachineConfig 等,这些配置无需 “托管集群” 的使用用户负责。这种集中的 Control Plane 管理模式可以让大量集群的管理操作具有更好的统一性、一致性和可控性。

在 RHACM 上管理 OpenShift 托管集群生命周期

虽然 HyperShift 是一个独立运行的开源项目,但在 OpenShift 多云环境中是结合 RHACM 使用的,这样通过 HyperShift 创建的 “托管集群” 会自动被 RHACM 纳管。因此以下操作是在运行 RHACM 的 “管理集群” 中进行的。

创建托管集群

  1. 在 “管理集群” 中执行以下 YAML,创建一个名为 production 的托管集群。该 YAML 使用 HypershiftDeployment API 定义了托管集群的配置,其中包括 “hostedClusterSpec” 定义的 Control Plane 配置,以及 “nodePools” 定义的 Worker 配置(2 个 NodePool 分别在 ASW 的 us-west-2b 和 us-west-2c 的 Zone 中各运行 1 个 replicas)。
---
apiVersion: cluster.open-cluster-management.io/v1alpha1
kind: HypershiftDeployment
metadata:
  name: production
  namespace: hypershift
spec:
  hostingCluster: local-cluster
  hostingNamespace: clusters
  hostedClusterSpec:
    networking:
      machineCIDR: 10.0.0.0/16
      networkType: OVNKubernetes
      podCIDR: 10.132.0.0/14
      serviceCIDR: 172.31.0.0/16
    platform:
      type: AWS
    pullSecret:
      name: production-pull-secret
    release:
      image: quay.io/openshift-release-dev/ocp-release:4.11.8-x86_64
    services:
    - service: APIServer
      servicePublishingStrategy:
        type: LoadBalancer
    - service: OAuthServer
      servicePublishingStrategy:
        type: Route
    - service: Konnectivity
      servicePublishingStrategy:
        type: Route
    - service: Ignition
      servicePublishingStrategy:
        type: Route
    sshKey: {}
  nodePools:
  - name: production-us-west-2b
    spec:
      clusterName: production
      management:
        autoRepair: false
        replace:
          rollingUpdate:
            maxSurge: 1
            maxUnavailable: 0
          strategy: RollingUpdate
        upgradeType: Replace
      platform:
        aws:
          instanceType: m5.large
        type: AWS
      release:
        image: quay.io/openshift-release-dev/ocp-release:4.11.8-x86_64
      replicas: 1
  - name: production-us-west-2c
    spec:
      clusterName: production-1
      management:
        autoRepair: false
        replace:
          rollingUpdate:
            maxSurge: 1
            maxUnavailable: 0
          strategy: RollingUpdate
        upgradeType: Replace
      platform:
        aws:
          instanceType: m5.large
        type: AWS
      release:
        image: quay.io/openshift-release-dev/ocp-release:4.11.8-x86_64
      replicas: 1
  infrastructure:
    cloudProvider:
      name: aws-credentials
    configure: True
    platform:
      aws:
        region: us-west-2
        zones:
        - us-west-2b
        - us-west-2c
  1. 执行命令查看 HypershiftDeployment 的状态,当 HypershiftDeployment 状态如下时可以继续以下步骤。
$ oc get HypershiftDeployment -n hypershift
NAME          TYPE   INFRA                  IAM                    MANIFESTWORK           PROVIDER REF   PROGRESS    AVAILABLE
production    AWS    ConfiguredAsExpected   ConfiguredAsExpected   ConfiguredAsExpected   AsExpected     Partial     False
  1. 执行命令查看运行 production 托管集群 Control Plane 资源的 Deployment,它们都运行在与其对应的 clusters-production 命名空间中。
$ oc get deployment -n clusters-production
  1. 执行命令,在获得新的托管集群的 kubeconfig 和 kubeadmin 用户的登录密码后可登录访问托管集群。
$ oc get secret production-kubeadmin-password -n local-cluster --template='{{ .data.password }}' | base64 -d > $HOME/.kube/production.kubeadmin-password
$ oc get secret production-admin-kubeconfig -n local-cluster --template='{{ .data.kubeconfig }}' | base64 -d > $HOME/.kube/production-kubeconfig
$ export KUBECONFIG=$HOME/.kube/production-kubeconfig
$ oc whoami --show-console
  1. 执行命令,查看托管集群中的对象。
$ oc get co
NAME                                       VERSION   AVAILABLE   PROGRESSING   DEGRADED   SINCE   MESSAGE
console                                    4.11.8    True        False         False      2m21s
csi-snapshot-controller                    4.11.8    True        False         False      3m33s
dns                                        4.11.8    True        False         False      2m28s
image-registry                             4.11.8    True        False         False      2m2s
ingress                                    4.11.8    True        False         False      2m24s
insights                                   4.11.8    True        False         False      4m13s
kube-apiserver                             4.11.8    True        False         False      8m57s
kube-controller-manager                    4.11.8    True        False         False      8m57s
kube-scheduler                             4.11.8    True        False         False      8m57s
kube-storage-version-migrator              4.11.8    True        False         False      3m41s
monitoring                                 4.11.8    True        False         False      46s
network                                    4.11.8    True        False         False      8m25s
openshift-apiserver                        4.11.8    True        False         False      8m57s
openshift-controller-manager               4.11.8    True        False         False      8m57s
openshift-samples                          4.11.8    True        False         False      2m4s
operator-lifecycle-manager                 4.11.8    True        False         False      8m44s
operator-lifecycle-manager-catalog         4.11.8    True        False         False      8m44s
operator-lifecycle-manager-packageserver   4.11.8    True        False         False      8m57s
service-ca                                 4.11.8    True        False         False      4m13s
storage                                    4.11.8    True        False         False      7s
  1. 退出托管集群,重回到管理集群
$ unset KUBECONFIG

升级托管集群

  1. 在 “托管集群” 控制台的 “集群设置” 页面中确认有 “控制平面被托管” 的提示,并且无法从控制台对该集群进行升级操作。
    在这里插入图片描述
  2. 在 “管理集群” 的 OpenShift 控制台中找到名为 production 的 HypershiftDeployment 对象实例,然后修改该其内容。将 hostedClusterSpec 和 nodePools 中的 3 处 “quay.io/openshift-release-dev/ocp-release:4.11.8-x86_64” 改为 “quay.io/openshift-release-dev/ocp-release:4.11.11-x86_64”,然后保存。
  3. 在 “托管集群” 控制台的 “集群设置” 页面中确认升级过程已经开始,直到托管集群完成升级即可。
    在这里插入图片描述

扩展托管集群

手动扩展 Worker 节点

  1. 在 RHACM 控制台查看名为 production 的 “托管集群”,此时有 2 个节点。
    在这里插入图片描述
  2. 在 “管理集群” 的 OpenShift 控制台中找到名为 production 的 HypershiftDeployment 对象实例,将名为 production-us-west-2c 的 nodePools 中的 replicas 改为 2,然后保存。
  3. 经过一定时间再次在 RHACM 控制台查看名为 production 的 “托管集群”,确认在 us-west-2c 的 Zone 中已运行有 2 个节点了。
    在这里插入图片描述

自动扩展 Worker 节

  1. 在 “管理集群” 的 OpenShift 控制台中找到名为 production 的 HypershiftDeployment 对象实例,将名为 production-us-west-2c 的 nodePools 中的 replicas 部分内容替换为以下 autoScaling 的内容。
      replicas: 2
      autoScaling: 
        min: 2
        max: 4
  1. 在 production “托管集群” 中使用 Deployment 运行 openshift/hello-openshift 容器,并为该 Deployment 中的容器设置以下资源限制。
    在这里插入图片描述
  2. 根据情况增加运行 hello-openshift 的 Pod 数量。
    在这里插入图片描述
  3. 经过一定时间在 RHACM 控制台查看名为 production 的 “托管集群”,确认在 us-west-2c 的 Zone 中运行的节点数量增加了,最多运行在 us-west-2c 中的节点可增加到 4 个。
  4. 还可减少运行 hello-openshift 的 Pod 数量到 1。经过一定时间在 RHACM 控制台查看名为 production 的 “托管集群”,确认在 us-west-2c 的 Zone 中运行的节点数量减少到 2 个。

参考

https://github.com/redhat-cop/openshift-lab-origin/blob/master/HyperShift/Introduction.adoc
https://hypershift-docs.netlify.app/reference/api/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/132070.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Kaggle】Global Wheat Detection

代码链接 实验目的 小麦来自世界各地。密度的小麦植株经常重叠;风会使得照片模糊;外观会因成熟度,颜色,基因型和头部方向而异。使用图像处理和目标检测完成小麦头的位置的标定。完成训练并现场验证后上传指定的输出文件进行验证…

大数据NiFi(三):NiFi关键特性

文章目录 NiFi关键特性 一、​​​​​​​​​​​​​​流管理

人工智能轨道交通行业周刊-第28期(2022.12.26-2023.1.1)

本期关键词:NOCC、车站闸机、雾闪、2022年度盘点、智慧园区 1 整理涉及公众号名单 1.1 行业类 RT轨道交通中关村轨道交通产业服务平台人民铁道世界轨道交通资讯网铁路信号技术交流北京铁路轨道交通网上榜铁路视点ITS World轨道交通联盟VSTR铁路与城市轨道交通Rai…

安全—01day

DNS 域名解析过程: 1.浏览器首先查询浏览器的缓存,因为浏览器会按照一定的频率缓存 DNS 记录 2.若浏览器无缓存,那么查询操作系统的 HOST 文件,查询是否有 DNS 记录。 3.若还没有命中域名,就请求本地域名服务器该服务器一般都会缓…

Qt音视频开发07-合并音视频文件

一、前言 之前已经把音视频分开存储了对应的文件,因为这个需求特别少,当然确实有部分用户是需要把音视频分开存储,但是毕竟是很少数,绝大部分的用户都是音视频合并到一个MP4文件,所以如果要合并到一个文件&#xff0c…

二进制与十六进制的相互转换;按位操作:与() 和 或(|)

目录 一、二进制转换十六进制 二、十六进制转换二进制 三、按位操作:与(&) 和 或(|) 1、按位与(&)操作 2、按位或(|)操作 得出结论:清0用与&am…

【金猿案例展】海尔集团——追光AI-AOI赋能PCBA缺陷检测

‍数之联案例本项目案例由数之联投递并参与“数据猿年度金猿策划活动——《2022大数据产业年度创新服务企业》榜单/奖项”评选。‍数据智能产业创新服务媒体——聚焦数智 改变商业AOI(Automated Optical Inspection缩写)的中文全称是自动光学检测。通过…

className 还能这么用,你学会了吗

抛出问题 className大家都用过吧,用它在react项目中设置样式。它的用法很简单,除了可以设置一个样式外,react中也可以使用className引入多个类样式。 这次在写项目的时候,碰到一个非常小但是当时却一直解决不了的问题。后面在复…

python基础语法25-进程理论

一、简介 服务器为了能够同时为多个客户端服务,则需要能够同时处理多个网络连接的方法。python提供了3个主要的方法来实现这个目的,multiprocessing、threading和异步I/O。 今天主要说一下进程multiprocessing。 multiprocessing是一个和threading(多线程)类似的库,这个多…

【MVC和三层架构】联系、区别以及简单实践

MVC架构模式MVC架构模式概述引入MVCMVC和三层架构之间的联系和区别三层架构与MVC联系和区别银行转账小项目实践MVC架构模式概述 MVC架构模式是软件架构中的一个架构模式。 M(Model:数据/业务) V(View:视图/展示&#x…

深入xJavaFxTool的插件开发模式

背景 时光华丽丽的来到了2023年,首先在这里祝大家新年快乐,希望大家在新的一年里都能心想事成,万事如意,最重要的是身体健康。过去的2022年里,大家一定都是收获满满。不论是技术的,家庭的,事业的…

【C++】map 与 set 的介绍与使用

目录 一、关联式容器 二、键值对 三、set 3.1 set 的介绍 3.2 set 的使用 3.3. set 的使用举例 四、map 4.1 map的介绍 3.2 map 的使用 4.3 map的使用举例 五、经典练习题 1.set的使用 2.map的使用 思路一(稳定排序): 思路二(priority_queue)&#x…

LabVIEW使用共享变量在两台计算机之间进行通信

LabVIEW使用共享变量在两台计算机之间进行通信 需要选择一台计算机作为服务器并发布变量,而另一台计算机作为客户端接收变量。然后,按照以下步骤设置服务器和客户端计算机。 服务器机器: 创建LabVIEW项目并通过右键单击“我的电脑”并选择…

opencv-python常用函数解析及参数介绍(六)——图像梯度

图像梯度前言Sobel算子算子的定义Sobelx效果演示Sobely效果演示完整轮廓直接计算复杂图片的轮廓Scharr算子与laplacian算子scharr算子的定义laplacian算子定义三种算子的效果对比结尾前言 前面的文章中我们介绍了用膨胀和腐蚀得到了图像轮廓,图像梯度也是一种可以得…

五年六次

今天是 2022 年的最后一天,可算等来了。讽刺的是,就在昨天,小号写了篇文章,啥主题就不说了,然后晚上文章被删了,账号居然也被封了。2022 全年虽然我写过很多文章都被和谐了,但是最后一天喜提封号…

二、Django

Django 提示:本文根据b站黑马python课整理 链接指引 > 黑马程序员python企业级开发项目-手把手从0到1开发《美多商城》 文章目录DjangoMVT图解项目准备1.创建项目2.创建应用3.更换python解释器4.安装应用5.本地化6.项目中匹配urls7.应用中匹配urls.py8.准备视图…

Tensorflow游乐场 在线可视化

playground.tensorflow.org Tensorflow游乐场 Tensorflow游乐场提供了一个在线可视化AI训练。A Neural Network Playgroundhttp://playground.tensorflow.org/ Tensorflow游乐场 是干啥的呢 给一堆点分出蓝色部分和橙色部分。也就是二分类。 它提供了4种数据来训练 每种数据…

致敬客户、致敬行业,知道创宇2022“宇”你并肩前行!

2022回首2022,一幅数字化、智能化升级的壮阔云图徐徐展开,顺势催生出安全技术的全新变革……这一年,中国网络安全企业代表——知道创宇,持续从技术创新、安全服务、行业融合等方面深入网络安全产业升级。我们坚守攻防博弈战场、纵…

burp suite爆破sqli-labs的 less-5

一. 使用proxy抓包,具体数据包如下图: 二. 鼠标右键,将其发送到 intruder中,具体如下图: 三.选择下图选项卡: 1.默认为sniper模式,即如果有多个变量,对每个变量依次进行破解&#xf…

【 shell 编程 】第3篇 循环

循环 文章目录循环一、for 循环1.for 语法结构二、while、until 循环1.while 语法结构2.until 语法结构三、expect一、for 循环 1.for 语法结构 for 变量名 [ in 取值列表 ] do 循环体 done例子1 需求:自动循环创建10个用户 #!/bin/bash read -p &quo…