16.2. 为单节点 OpenShift 集群准备基于镜像的安装
要为单节点 OpenShift 集群准备基于镜像的安装,您必须完成以下任务:
- 使用 Lifecycle Agent 创建 seed 镜像。
- 验证所有软件组件是否都满足所需的版本。如需更多信息,请参阅"基于镜像的安装和部署软件先决条件"。
其他资源
16.2.1. 安装生命周期代理
使用 Lifecycle Agent 从 seed 集群生成 seed 镜像。您可以使用 OpenShift CLI (oc
)或 Web 控制台安装 Lifecycle Agent。
16.2.1.1. 使用 CLI 安装生命周期代理
您可以使用 OpenShift CLI (oc
)安装生命周期代理。
先决条件
-
已安装 OpenShift CLI(
oc
)。 -
您已以具有
cluster-admin
权限的用户身份登录。
流程
为 Lifecycle Agent 创建
Namespace
对象 YAML 文件:apiVersion: v1 kind: Namespace metadata: name: openshift-lifecycle-agent annotations: workload.openshift.io/allowed: management
运行以下命令来创建
Namespace
CR:$ oc create -f <namespace_filename>.yaml
为 Lifecycle Agent 创建
OperatorGroup
对象 YAML 文件:apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: openshift-lifecycle-agent namespace: openshift-lifecycle-agent spec: targetNamespaces: - openshift-lifecycle-agent
运行以下命令来创建
OperatorGroup
CR:$ oc create -f <operatorgroup_filename>.yaml
为生命周期代理创建一个
Subscription
CR:apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: openshift-lifecycle-agent-subscription namespace: openshift-lifecycle-agent spec: channel: "stable" name: lifecycle-agent source: redhat-operators sourceNamespace: openshift-marketplace
运行以下命令来创建
Subscription
CR:$ oc create -f <subscription_filename>.yaml
验证
要验证安装是否成功,请运行以下命令来检查 CSV 资源:
$ oc get csv -n openshift-lifecycle-agent
输出示例
NAME DISPLAY VERSION REPLACES PHASE lifecycle-agent.v4.17.0 Openshift Lifecycle Agent 4.17.0 Succeeded
运行以下命令验证 Lifecycle Agent 是否正在运行:
$ oc get deploy -n openshift-lifecycle-agent
输出示例
NAME READY UP-TO-DATE AVAILABLE AGE lifecycle-agent-controller-manager 1/1 1 1 14s
16.2.1.2. 使用 Web 控制台安装 Lifecycle Agent
您可以使用 OpenShift Container Platform Web 控制台安装 Lifecycle Agent。
先决条件
-
您已以具有
cluster-admin
权限的用户身份登录。
流程
-
在 OpenShift Container Platform Web 控制台中导航至 Operators
OperatorHub。 - 从可用的 Operator 列表中选择 Lifecycle Agent,然后点 Install。
- 在 Install Operator 页面中,在 A specific namespace on the cluster 下选择 openshift-lifecycle-agent。
- 点 Install。
验证
确认安装成功:
-
点 Operators
Installed Operators。 确保 openshift-lifecycle-agent 项目中列出的 Lifecycle Agent 的 Status 为 InstallSucceeded。
注意在安装过程中,Operator 可能会显示 Failed 状态。如果安装过程结束后有 InstallSucceeded 信息,您可以忽略这个 Failed 信息。
-
点 Operators
如果 Operator 没有成功安装:
-
点 Operators
Installed Operators,检查 Operator Subscriptions 和 Install Plans 选项卡中的 Status 是否有任何错误。 -
点 Workloads
Pods,在 openshift-lifecycle-agent 项目中检查 pod 的日志。
16.2.3. seed 镜像配置
您可以从单节点 OpenShift 集群创建 seed 镜像,使用与裸机主机相同的硬件,以及类似的目标集群配置。但是,从 seed 集群生成的 seed 镜像不能包含任何特定于集群的配置。
下表列出了您必须且不得包含在 seed 镜像中的组件、资源和配置:
集群配置 | 在 seed 镜像中包括 |
---|---|
性能配置集 | 是 |
目标集群的 | 是 |
IP 版本 [1] | 是 |
第 2 天 Operator 集,包括 Lifecycle Agent 和 OADP Operator | 是 |
断开连接的 registry 配置 [2] | 是 |
有效的代理配置 [3] | 是 |
FIPS 配置 | 是 |
与目标集群大小匹配的容器存储的主磁盘上的专用分区 | 是 |
本地卷
| 否 |
- 这个版本不支持双栈网络。
- 如果在断开连接的环境中安装了 seed 集群,则目标集群还必须在断开连接的环境中安装。
- seed 和目标集群的代理配置不必相互匹配。
16.2.3.1. 使用 RAN DU 配置集的 seed 镜像配置
下表列出了在使用 RAN DU 配置集时必须且不得包含在 seed 镜像中的组件、资源和配置:
资源 | 在 seed 镜像中包括 |
---|---|
作为第 0 天安装的一部分应用的所有额外清单 | 是 |
所有第 2 天 Operator 订阅 | 是 |
| 是 |
| 是 |
| 是 |
| 是 |
| 是 |
|
No,如果在 |
| 否 |
| 否 |
以下资源和配置列表可作为额外清单或使用 RHACM 策略应用:
-
ClusterLogForwarder.yaml
-
ReduceMonitoringFootprint.yaml
-
SriovFecClusterConfig.yaml
-
PtpOperatorConfigForEvent.yaml
-
DefaultCatsrc.yaml
-
PtpConfig.yaml
-
SriovNetwork.yaml
如果使用 GitOps ZTP,请使用 RHACM 策略启用这些资源,以确保可以在集群生命周期中应用配置更改。
16.2.4. 使用生命周期代理生成 seed 镜像
使用 Lifecycle Agent 从受管集群生成 seed 镜像。Operator 会检查所需的系统配置,在生成 seed 镜像前执行任何必要的系统清理,并启动镜像生成。seed 镜像生成包括以下任务:
- 停止集群 Operator
- 准备 seed 镜像配置
-
生成并推送 seed
Generator
CR 中指定的镜像存储库 - 恢复集群 Operator
- 使 seed 集群证书过期
- 为 seed 集群生成新证书
-
在 seed 集群中恢复和更新
SeedGenerator
CR
先决条件
- 在 seed 集群中没有安装 Kubernetes Operator 的 RHACM 和多集群引擎。
- 您已在 seed 集群中配置了共享目录。
- 您已在 seed 集群中安装 OADP Operator 的最低版本和 Lifecycle Agent。
- 确保在 seed 集群中没有配置持久性卷。
-
如果使用 Local Storage Operator,请确保 seed 集群中不存在
LocalVolume
CR。 -
如果使用 LVM 存储,请确保在 seed 集群中不存在
LVMCluster
CR。 -
如果使用 OADP,请确保 seed 集群中不存在
DataProtectionApplication
CR。
流程
从 hub 中分离受管集群,从 seed 集群中删除任何不能位于 seed 镜像中的任何 RHACM 特定资源:
运行以下命令手动分离 seed 集群:
$ oc delete managedcluster sno-worker-example
-
等待受管集群被删除。删除集群后,创建正确的
SeedGenerator
CR。Lifecycle Agent 清理 RHACM 工件。
-
等待受管集群被删除。删除集群后,创建正确的
如果使用 GitOps ZTP,请通过从
kustomization.yaml
中删除 seed 集群的SiteConfig
CR 来分离集群:如果您有一个引用多个
SiteConfig
CR 的kustomization.yaml
文件,请从kustomization.yaml
中删除您看到的集群SiteConfig
CR:apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization generators: #- example-seed-sno1.yaml - example-target-sno2.yaml - example-target-sno3.yaml
如果您有一个引用一个
SiteConfig
CR 的kustomization.yaml
,请从kustomization.yaml
中删除您看到的集群SiteConfig
CR,并添加generators: {}
行:apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization generators: {}
在 Git 存储库中提交
kustomization.yaml
更改,并将更改推送到您的存储库。ArgoCD 管道检测到更改并删除受管集群。
创建
Secret
对象,以便您可以将 seed 镜像推送到 registry。运行以下命令来创建身份验证文件:
$ MY_USER=myuserid $ AUTHFILE=/tmp/my-auth.json $ podman login --authfile ${AUTHFILE} -u ${MY_USER} quay.io/${MY_USER}
$ base64 -w 0 ${AUTHFILE} ; echo
将输出复制到
openshift-lifecycle-agent
命名空间中名为seedgen
的Secret
YAML 文件中的seedAuth
字段中:apiVersion: v1 kind: Secret metadata: name: seedgen 1 namespace: openshift-lifecycle-agent type: Opaque data: seedAuth: <encoded_AUTHFILE> 2
运行以下命令来应用
Secret
:$ oc apply -f secretseedgenerator.yaml
创建
SeedGenerator
CR:apiVersion: lca.openshift.io/v1 kind: SeedGenerator metadata: name: seedimage 1 spec: seedImage: <seed_container_image> 2
运行以下命令来生成 seed 镜像:
$ oc apply -f seedgenerator.yaml
重要当 Lifecycle Agent 生成 seed 镜像时,集群会重启并丢失 API 功能。应用
SeedGenerator
CR 会停止kubelet
和 CRI-O 操作,然后启动镜像生成。
如果要生成更多 seed 镜像,则必须使用您要从中生成 seed 镜像的版本置备一个新的 seed 集群。
验证
集群恢复并可用后,您可以通过运行以下命令来检查
SeedGenerator
CR 的状态:$ oc get seedgenerator -o yaml
输出示例
status: conditions: - lastTransitionTime: "2024-02-13T21:24:26Z" message: Seed Generation completed observedGeneration: 1 reason: Completed status: "False" type: SeedGenInProgress - lastTransitionTime: "2024-02-13T21:24:26Z" message: Seed Generation completed observedGeneration: 1 reason: Completed status: "True" type: SeedGenCompleted 1 observedGeneration: 1
- 1
- seed 镜像生成已完成。