This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.3.3. 使用特殊资源 Operator
特殊资源 Operator (SRO) 用于管理驱动程序容器的构建和部署。构建和部署容器所需的对象可以在 Helm Chart 中定义。
本节中的示例使用 simple-kmod SpecialResource
对象来指向所创建的 ConfigMap
对象来存储 Helm chart。
3.3.1. 使用配置映射构建并运行 simple-kmod SpecialResource 复制链接链接已复制到粘贴板!
在这个示例中,simple-kmod 内核模块显示特殊资源 Operator(SRO)如何管理驱动程序容器。容器在存储在配置映射中的 Helm Chart 模板中定义。
先决条件
- 有一个正在运行的 OpenShift Container Platform 集群。
-
您可以将集群的 Image Registry Operator 状态设置为
Managed
。 -
已安装 OpenShift CLI(
oc
)。 -
以具有
cluster-admin
权限的用户身份登录 OpenShift CLI。 - 已安装 Node Feature Discovery (NFD) Operator。
- 已安装 SRO。
-
已安装 Helm CLI (
helm
)。
流程
要创建 simple-kmod
SpecialResource
对象,请定义用于构建镜像的镜像流和构建配置,以及用于运行容器的服务帐户、角色、角色绑定和守护进程集。需要服务帐户、角色和角色绑定来运行具有特权安全上下文的守护进程集,以便加载内核模块。创建
templates
目录,并更改到此目录:mkdir -p chart/simple-kmod-0.0.1/templates
$ mkdir -p chart/simple-kmod-0.0.1/templates
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd chart/simple-kmod-0.0.1/templates
$ cd chart/simple-kmod-0.0.1/templates
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将镜像流和构建配置的 YAML 模板保存到
templates
目录中的0000-buildconfig.yaml
中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
templates
目录中的 RBAC 资源和守护进程设置的以下 YAML 模板保存为1000-driver-container.yaml
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进入
chart/simple-kmod-0.0.1
目录:cd ..
$ cd ..
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
chart/simple-kmod-0.0.1
目录中,将 Chart 的以下 YAML 保存为Chart.yaml
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在
Chart
目录中,使用helm package
命令创建 chart:helm package simple-kmod-0.0.1/
$ helm package simple-kmod-0.0.1/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Successfully packaged chart and saved it to: /data/<username>/git/<github_username>/special-resource-operator/yaml-for-docs/chart/simple-kmod-0.0.1/simple-kmod-0.0.1.tgz
Successfully packaged chart and saved it to: /data/<username>/git/<github_username>/special-resource-operator/yaml-for-docs/chart/simple-kmod-0.0.1/simple-kmod-0.0.1.tgz
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建配置映射以存储 chart 文件:
为配置映射文件创建目录:
mkdir cm
$ mkdir cm
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 Helm Chart 复制到
cm
目录中:cp simple-kmod-0.0.1.tgz cm/simple-kmod-0.0.1.tgz
$ cp simple-kmod-0.0.1.tgz cm/simple-kmod-0.0.1.tgz
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个索引文件,指定包含 Helm Chart 的 Helm 仓库:
helm repo index cm --url=cm://simple-kmod/simple-kmod-chart
$ helm repo index cm --url=cm://simple-kmod/simple-kmod-chart
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为 Helm Chart 中定义的对象创建一个命名空间:
oc create namespace simple-kmod
$ oc create namespace simple-kmod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建配置映射对象:
oc create cm simple-kmod-chart --from-file=cm/index.yaml --from-file=cm/simple-kmod-0.0.1.tgz -n simple-kmod
$ oc create cm simple-kmod-chart --from-file=cm/index.yaml --from-file=cm/simple-kmod-0.0.1.tgz -n simple-kmod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
使用以下
SpecialResource
清单,使用您在配置映射中创建的 Helm Chart 部署 simple-kmod 对象。将此 YAML 保存为simple-kmod-configmap.yaml
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在命令行中创建
SpecialResource
文件:oc create -f simple-kmod-configmap.yaml
$ oc create -f simple-kmod-configmap.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
如果要从节点中删除 simple-kmod 内核模块,请使用 oc delete
命令删除 simple-kmod SpecialResource
API 对象。删除驱动程序容器 pod 时,内核模块会被卸载。
验证
simple-kmod
资源部署在 simple-kmod
命名空间中,如对象清单中指定的。片刻之后,simple-kmod
驱动程序容器的构建 pod 开始运行。构建在几分钟后完成,然后驱动程序容器容器集开始运行。
使用
oc get pods
命令显示构建 pod 的状态:oc get pods -n simple-kmod
$ oc get pods -n simple-kmod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY STATUS RESTARTS AGE simple-kmod-driver-build-12813789169ac0ee-1-build 0/1 Completed 0 7m12s simple-kmod-driver-container-12813789169ac0ee-mjsnh 1/1 Running 0 8m2s simple-kmod-driver-container-12813789169ac0ee-qtkff 1/1 Running 0 8m2s
NAME READY STATUS RESTARTS AGE simple-kmod-driver-build-12813789169ac0ee-1-build 0/1 Completed 0 7m12s simple-kmod-driver-container-12813789169ac0ee-mjsnh 1/1 Running 0 8m2s simple-kmod-driver-container-12813789169ac0ee-qtkff 1/1 Running 0 8m2s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
oc logs
命令以及从上述oc get pods
命令获取的构建 pod 名称,以显示 simple-kmod 驱动程序容器镜像构建的日志:oc logs pod/simple-kmod-driver-build-12813789169ac0ee-1-build -n simple-kmod
$ oc logs pod/simple-kmod-driver-build-12813789169ac0ee-1-build -n simple-kmod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要验证是否载入了 simple-kmod 内核模块,请在上面的
oc get pods
命令返回的一个驱动程序容器 pod 中执行lsmod
命令:oc exec -n simple-kmod -it pod/simple-kmod-driver-container-12813789169ac0ee-mjsnh -- lsmod | grep simple
$ oc exec -n simple-kmod -it pod/simple-kmod-driver-container-12813789169ac0ee-mjsnh -- lsmod | grep simple
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
simple_procfs_kmod 16384 0 simple_kmod 16384 0
simple_procfs_kmod 16384 0 simple_kmod 16384 0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
sro_kind_completed_info
SRO Prometheus 指标提供有关所部署不同对象的状态的信息,这可用于对 SRO CR 安装进行故障排除。SRO 还提供其他类型的指标,可用于监视环境的健康状况。
您可以在 Red Hat Advanced Cluster Management(RHACM)的 hub-and-spoke 部署中使用 Special Resource Operator(SRO)将 hub 集群连接到一个或多个受管集群。
这个示例步骤演示了如何在 hub 中构建驱动程序容器。SRO 监视 hub 集群资源来识别 OpenShift Container Platform 版本的 helm chart,用来创建它要提供给 spoke 的资源。
先决条件
- 有一个正在运行的 OpenShift Container Platform 集群。
-
已安装 OpenShift CLI(
oc
)。 -
以具有
cluster-admin
权限的用户身份登录 OpenShift CLI。 - 已安装 SRO。
-
已安装 Helm CLI (
helm
)。 - 已安装 Red Hat Advanced Cluster Management(RHACM)。
- 已配置了一个容器 registry。
流程
运行以下命令来创建
templates
目录:mkdir -p charts/acm-simple-kmod-0.0.1/templates
$ mkdir -p charts/acm-simple-kmod-0.0.1/templates
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来更改
templates
目录:cd charts/acm-simple-kmod-0.0.1/templates
$ cd charts/acm-simple-kmod-0.0.1/templates
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为
BuildConfig
、Policy
和PlacementRule
资源创建模板文件。将镜像流和构建配置的 YAML 模板保存在
templates
目录中,存为0001-buildconfig.yaml
。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 ACM 策略的 YAML 模板保存到
templates
目录中,存为0002-policy.yaml
。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将放置规则的此 YAML 模板保存到
templates
目录中,存为0003-policy.yaml
。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,进入
chart/acm-simple-kmod-0.0.1
目录:cd ..
cd ..
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
charts/acm-simple-kmod-0.0.1
目录中将 chart 的以下 YAML 模板保存为Chart.yaml
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在
chart
目录中,使用以下命令创建 chart:helm package acm-simple-kmod-0.0.1/
$ helm package acm-simple-kmod-0.0.1/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Successfully packaged chart and saved it to: <directory>/charts/acm-simple-kmod-0.0.1.tgz
Successfully packaged chart and saved it to: <directory>/charts/acm-simple-kmod-0.0.1.tgz
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建配置映射以存储 chart 文件。
运行以下命令,为配置映射文件创建一个目录:
mkdir cm
$ mkdir cm
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将 Helm Chart 复制到
cm
目录中:cp acm-simple-kmod-0.0.1.tgz cm/acm-simple-kmod-0.0.1.tgz
$ cp acm-simple-kmod-0.0.1.tgz cm/acm-simple-kmod-0.0.1.tgz
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,创建指定包含 Helm chart 的 Helm 仓库的索引文件:
helm repo index cm --url=cm://acm-simple-kmod/acm-simple-kmod-chart
$ helm repo index cm --url=cm://acm-simple-kmod/acm-simple-kmod-chart
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,为 Helm chart 中定义的对象创建一个命名空间:
oc create namespace acm-simple-kmod
$ oc create namespace acm-simple-kmod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建配置映射对象:
oc create cm acm-simple-kmod-chart --from-file=cm/index.yaml --from-file=cm/acm-simple-kmod-0.0.1.tgz -n acm-simple-kmod
$ oc create cm acm-simple-kmod-chart --from-file=cm/index.yaml --from-file=cm/acm-simple-kmod-0.0.1.tgz -n acm-simple-kmod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
使用以下
SpecialResourceModule
清单,使用配置映射中创建的 Helm chart 部署simple-kmod
对象。将此 YAML 文件保存为acm-simple-kmod.yaml
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定您配置的 registry 的 URL。
运行以下命令来创建特殊资源模块:
oc apply -f charts/examples/acm-simple-kmod.yaml
$ oc apply -f charts/examples/acm-simple-kmod.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令,检查构建 pod 的状态:
KUBECONFIG=~/hub/auth/kubeconfig oc get pod -n acm-simple-kmod
$ KUBECONFIG=~/hub/auth/kubeconfig oc get pod -n acm-simple-kmod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY STATUS RESTARTS AGE acm-simple-kmod-4-18-0-305-34-2-el8-4-x86-64-1-build 0/1 Completed 0 42m
NAME READY STATUS RESTARTS AGE acm-simple-kmod-4-18-0-305-34-2-el8-4-x86-64-1-build 0/1 Completed 0 42m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令检查是否创建了策略:
KUBECONFIG=~/hub/auth/kubeconfig oc get placementrules,placementbindings,policies -n acm-simple-kmod
$ KUBECONFIG=~/hub/auth/kubeconfig oc get placementrules,placementbindings,policies -n acm-simple-kmod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令检查资源是否已协调:
KUBECONFIG=~/hub/auth/kubeconfig oc get specialresourcemodule acm-simple-kmod -o json | jq -r '.status'
$ KUBECONFIG=~/hub/auth/kubeconfig oc get specialresourcemodule acm-simple-kmod -o json | jq -r '.status'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,检查资源是否在 spoke 中运行:
KUBECONFIG=~/spoke1/kubeconfig oc get ds,pod -n acm-simple-kmod
$ KUBECONFIG=~/spoke1/kubeconfig oc get ds,pod -n acm-simple-kmod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow