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

本文详细介绍了如何在OpenShift环境中部署OpenShiftVirtualization,配置RedHatACM或MCE,以及在OpenShiftVirtualization中创建、管理和删除托管集群的过程,包括环境设置、组件安装和配置示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OpenShift / RHEL / DevSecOps 汇总目录
说明:本文初始是在 OpenShift 4.12 + OpenShift Virtualization 4.12 + ACM 2.8 或 MCE 2.3 的环境中验证,目前已经在 Local OpenShift 4.15 + OpenShift Virtualization 4.15 + MCE 2.5 的环境中验证(在单机版的 Local OpenShift 上运行需要有 64G 内存)

技术架构

利用 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.12,执行命令允许 multiclusterengine 使用 hypershift-preview。
$ oc patch mce multiclusterengine --type=merge -p '{"spec":{"overrides":{"components":[{"name":"hypershift-preview","enabled":true}]}}}'
  1. 确认已有名为 hypershift-addon 的 ManagedClusterAddOn 对象。
$ oc get ManagedClusterAddOn hypershift-addon -n local-cluster
NAME               AVAILABLE   DEGRADED   PROGRESSING
hypershift-addon   True        False
  1. 确认会自动创建 hypershift 项目并运行 pod 。
$ 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

安装配置 MetalLB

  1. 使用缺省配置安装 MetalLB Operator。
  2. 基于以下缺省配置创建一个 MetalLB 对象。
apiVersion: metallb.io/v1beta1
kind: MetalLB
metadata:
  name: metallb
  namespace: metallb-system
  1. 创建一个 IPAddressPool 对象,其中的 IP 地址范围是节点网络中未使用的可用 IP 地址池,例如 192.168.1.101-192.168.1.120。
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
  name: ip-addresspool
  namespace: metallb-system
spec:
  addresses:
  - 192.168.1.101-192.168.1.200
  autoAssign: true
  avoidBuggyIPs: false
  1. 基于以下 YAML 创建一个 L2Advertisement 对象。
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
  name: l2-adv
  namespace: metallb-system
spec:
  ipAddressPools:
    - ip-addresspool

修改 OpenShift 配置

  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"}}]'

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

  1. 创建名为 clusters 的项目,这是托管集群关联的命名空间,默认使用 clusters。
$ oc new-project clusters
  1. Red Hat 官方下载 pull-secret 文件,或从当前集群获得 pull-secret。
$ oc get secret -n openshift-config pull-secret -o template='{{index .data ".dockerconfigjson"}}' | base64 --decode > $HOME/pull-secret

使用控制台创建托管集群

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

使用命令创建托管集群

  1. 下载 hcp 命令客户端。
$ curl -Lk $(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. 执行以下命令创建托管集群,其 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 \
  --auto-repair
  1. 可以执行以下命令查看和 my-cluster-1 托管集群相关资源的创建情况。
$ oc get vm -n clusters-my-cluster-1
$ oc get service -n clusters-my-cluster-1
$ oc get route -n clusters-my-cluster-1
$ oc get pvc -n clusters-my-cluster-1
$ oc get nodepool -n clusters
  1. 在托管集群成功创建后,可在 RHACM 中看到该集群。
    在这里插入图片描述

访问托管集群

  1. 获得 my-cluster-1 托管集群的 kubeconfig。
$ hcp create kubeconfig --name my-cluster-1 > my-cluster-1-kubeconfig
  1. 查看 my-cluster-1 托管集群的 cluster operator。
$ oc get co --kubeconfig=my-cluster-1-kubeconfig
NAME                                       VERSION   AVAILABLE   PROGRESSING   DEGRADED   SINCE   MESSAGE
console                                    4.14.19   True        False         False      8m7s    
csi-snapshot-controller                    4.14.19   True        False         False      16m     
dns                                        4.14.19   True        False         False      8m10s   
image-registry                             4.14.19   True        False         False      8m12s   
ingress                                    4.14.19   True        False         False      7m54s   
insights                                   4.14.19   True        False         False      9m3s    
kube-apiserver                             4.14.19   True        False         False      16m     
kube-controller-manager                    4.14.19   True        False         False      16m     
kube-scheduler                             4.14.19   True        False         False      16m     
kube-storage-version-migrator              4.14.19   True        False         False      8m33s   
monitoring                                 4.14.19   True        False         False      49s     
network                                    4.14.19   True        False         False      9m32s   
node-tuning                                4.14.19   True        False         False      11m     
openshift-apiserver                        4.14.19   True        False         False      16m     
openshift-controller-manager               4.14.19   True        False         False      16m     
openshift-samples                          4.14.19   True        False         False      7m34s   
operator-lifecycle-manager                 4.14.19   True        False         False      15m     
operator-lifecycle-manager-catalog         4.14.19   True        False         False      15m     
operator-lifecycle-manager-packageserver   4.14.19   True        False         False      16m     
service-ca                                 4.14.19   True        False         False      9m1s    
storage                                    4.14.19   True        False         False      15m
  1. 查看 my-cluster-1 托管集群的节点。
$ oc get nodes --kubeconfig=my-cluster-1-kubeconfig
NAME                          STATUS   ROLES    AGE   VERSION
my-cluster-1-e8c8e8b9-bpkkp   Ready    worker   21m   v1.27.8+f10c92d
my-cluster-1-e8c8e8b9-v76qk   Ready    worker   21m   v1.27.8+f10c92d

修改托管集群 Worker 节点配置

  1. 在管理集群的控制台中找到 NodePool 实例 my-cluster-1,点击进入后在 YAML 中修改 CPU 或 Memory 配置,例如将 Memory 调到 8G,然后保存。
    在这里插入图片描述
  2. OpenShift 要使用新的 NodePool 配置逐个创建新的 VM 来替换原有节点。
  3. 最后可以在管理集群中查看 NodePool 以及对应的 VM,或在托管集群中查看 Node 的配置,确认内存都更新到 8G。
    在这里插入图片描述

删除托管集群

  1. 可执行以下命令删除托管集群。
$ oc delete managedcluster my-cluster-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. 确认在删除托管集群后,其对应的 PV 还会继续保存,如果需要也可手动删除。
    在这里插入图片描述

演示视频

视频

参考

https://cloud.redhat.com/blog/effortlessly-and-efficiently-provision-openshift-clusters-with-openshift-virtualization
https://github.com/RHsyseng/hypershift-baremetal-lab
https://labs.sysdeseng.com/hypershift-baremetal-lab/4.14/index.html
https://medium.com/@ben.swinney_ce/hypershift-with-kubevirt-564bd1f850ce

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值