• OpenShift 4 - 在 OpenShift Virtualization 上自动部署 OpenShift 托管集群(演示视频)


    OpenShift / RHEL / DevSecOps 汇总目录
    说明:本文初始是在 OpenShift 4.12 + OpenShift Virtualization 4.12 + ACM 2.8 或 MCE 2.3 的环境中验证,目前已经在 OpenShift 4.15 + OpenShift Virtualization 4.15 + ACM 2.10 或 MCE 2.5 的环境中验证

    技术架构

    利用 OpenShift Virtualization 运行 OpenShift Hosted Cluster 即托管集群的架构如下图,该模式就是在 OpenShift 管理集群中的由 OpenShift Virtualization 提供的 VM 中运行托管集群的 Worker 节点。
    在这里插入图片描述

    安装配置环境

    环境要求

    • 如果是生产环境,建议在 Baremetal 环境中运行 OpenShift 管理集群。
    • OpenShift 管理集群需要使用 Kubernetes-OVN 类型的 CNI。如果使用的是 OpenShiftSDN,可参考《Migrating to the OVN-Kubernetes network plugin》将其转换成 Kubernetes-OVN。

    安装配置 OpenShift Virtualization

    1. 使用缺省配置安装 OpenShift Virtualization Operator。
    2. 然后在其内部使用缺省配置创建一个 OpenShift Virtualization Deployment。

    安装配置 Red Hat ACM 或 MCE

    1. 使用缺省配置安装 Red Hat ACM Operator 或 MCE Operator。
    2. 使用缺省配置创建一个 MultiClusterHub 或 MultiClusterEngine (名称为 multiclusterengine) 对象。
    3. (在 OpenShift 4.15 中可忽略)执行命令允许 multiclusterengine 使用 hypershift-preview。说明:这是由于该功能目前还是 Preview 阶段,预计正式 GA 后可省略此步。
    $ oc patch mce multiclusterengine --type=merge -p '{"spec":{"overrides":{"components":[{"name":"hypershift-preview","enabled":true}]}}}'
    
    • 1
    1. 确认已有名为 hypershift-addon 的 ManagedClusterAddOn 对象。
    $ oc get ManagedClusterAddOn hypershift-addon -n local-cluster
    NAME               AVAILABLE   DEGRADED   PROGRESSING
    hypershift-addon   True        False
    
    • 1
    • 2
    • 3
    1. 确认会自动创建 hypershift 项目和 Deployment 。
    $ oc get deployment -n hypershift
    NAME       READY   UP-TO-DATE   AVAILABLE   AGE
    operator   2/2     2            2           6m6s
    $ oc get pod -n hypershift
    NAME                        READY   STATUS    RESTARTS   AGE
    operator-7fdc8d998b-8s7pl   1/1     Running   0          9h
    operator-7fdc8d998b-l9xpd   1/1     Running   0          9h
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    安装配置 MetalLB

    1. 使用缺省配置安装 MetalLB Operator。
    2. 基于以下缺省配置创建一个 MetalLB 对象。
    apiVersion: metallb.io/v1beta1
    kind: MetalLB
    metadata:
      name: metallb
      namespace: metallb-system
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. 基于以下 YAML 创建一个 IPAddressPool 对象。
    apiVersion: metallb.io/v1beta1
    kind: IPAddressPool
    metadata:
      name: ip-addresspool
      namespace: metallb-system
    spec:
      addresses:
      - 10.39.127.20-10.39.127.26
      autoAssign: true
      avoidBuggyIPs: false
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    1. 基于以下 YAML 创建一个 L2Advertisement 对象。
    apiVersion: metallb.io/v1beta1
    kind: L2Advertisement
    metadata:
      name: l2-adv
      namespace: metallb-system
    spec:
      ipAddressPools:
        - ip-addresspool
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    1. 执行命令,允许 OpenShift 的 ingresscontroller 使用 wildcard DNS routes。
    $ oc patch ingresscontroller -n openshift-ingress-operator default --type=json -p '[{ "op": "add", "path": "/spec/routeAdmission", "value": {wildcardPolicy: "WildcardsAllowed"}}]'
    
    • 1

    在 OpenShift Virtualization 中创建 OpenShift Hosted Cluster 托管集群

    1. 创建名为 clusters 的项目。
    $ oc new-project clusters
    
    • 1
    1. Red Hat 官方下载 pull-secret 文件。

    使用控制台创建托管集群

    1. 在 RHACM 控制台的集群页面中点击“创建集群”,然后进入 Red Hat OpenShift Virtualization,再点击 “托管”就可看到创建集群的界面。
    2. 在“集群详情”步骤中点击“基础架构供应商凭证”的下拉框,然后点击“添加凭证”。
    3. 在“输入凭证基本信息”步骤中提供凭证名称和存放的命名空间。
      在这里插入图片描述
    4. 在“输入 pull secret 和 SSH 秘钥”步骤中将 pull-secret 文件中的内容粘贴进去。然后在“复查”后完成添加凭证。
      在这里插入图片描述
    5. 在下截图的步骤中选择刚刚添加的凭证,并提供集群名和发行镜像。
      在这里插入图片描述
    6. 在下图步骤中提供节点池名称。
      在这里插入图片描述
    7. 完成配置并创建托管集群,然后可查看托管集群状态。
      在这里插入图片描述

    使用命令创建托管集群

    1. 下载 hcp 客户端。
    $ curl -L $(oc get consoleclidownload hcp-cli-download -o json | jq -r '.spec.links[] | select(.text=="Download hcp CLI for Linux for x86_64").href') | tar xvz ./
    
    • 1
    1. 执行以下命令创建托管集群,其 Worker 节点将运行在有 kubevirt 供应的 VM 环境中。
    $ export PULL_SECRET="$HOME/pull-secret"
    $ export MEM="6Gi"
    $ export CPU="2"
    $ export WORKER_COUNT="2"
    $ export CLUSTER_NAME=my-cluster-1
    $ export OCP_VERSION=4.14.19
     
    $ hcp create cluster kubevirt \
      --name $CLUSTER_NAME \
      --release-image quay.io/openshift-release-dev/ocp-release:$OCP_VERSION-x86_64 \
      --node-pool-replicas $WORKER_COUNT \
      --pull-secret $PULL_SECRET \
      --memory $MEM \
      --cores $CPU
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    1. 托管集群成功创建后,可在 RHACM 中看到该集群。
      在这里插入图片描述

    删除托管集群

    1. 可执行以下命令删除托管集群。
    $ hcp destroy cluster kubevirt --name my-cluster-1
    2023-09-06T11:59:18Z    INFO    Found hosted cluster    {"namespace": "clusters", "name": "my-cluster-1"}
    2023-09-06T11:59:19Z    INFO    Updated finalizer for hosted cluster    {"namespace": "clusters", "name": "my-cluster-1"}
    2023-09-06T11:59:19Z    INFO    Deleting hosted cluster {"namespace": "clusters", "name": "my-cluster-1"}
    2023-09-06T12:01:41Z    INFO    Deleting Secrets        {"namespace": "clusters"}
    2023-09-06T12:01:41Z    INFO    Deleted CLI generated secrets
    2023-09-06T12:01:41Z    INFO    Finalized hosted cluster        {"namespace": "clusters", "name": "my-cluster-1"}
    2023-09-06T12:01:41Z    INFO    Successfully destroyed cluster and infrastructure       {"namespace": "clusters", "name": "my-cluster-1d", "infraID": "my-cluster-1-zkrvf"}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    演示视频

    视频

    参考

    https://medium.com/@ben.swinney_ce/hypershift-with-kubevirt-564bd1f850ce
    https://cloud.redhat.com/blog/effortlessly-and-efficiently-provision-openshift-clusters-with-openshift-virtualization

  • 相关阅读:
    移动端学习:实现App中的下载功能,在手机接管文件系统
    基于SSM的超市会员管理系统
    STM32F103ZET6_ADC
    【017】基于vue.js的网易云web端(实现播放、登录)(Node接口实现)
    大前端CPU优化技术--SIMD技术
    java实现贪心算法代码示例
    8月算法训练------第九天(搜索与回溯)解题报告
    MongoDB快速上手
    JavaBean事件
    [【机器学习】深度概率模型(DPM)原理和文本分类实践
  • 原文地址:https://blog.csdn.net/weixin_43902588/article/details/132715818