附录#
启用集群范围的授权#
简介#
注意
驱动程序工具包 (Driver Toolkit) 允许在 OpenShift 4.8 的某些 z-stream 和 OpenShift 4.9 的所有 z-stream 上进行 GPU Operator 的免授权部署。但是,某些驱动程序工具包镜像已损坏,因此我们建议为 4.9.9 之前的所有 OpenShift 版本维护授权。有关更多信息,请参阅 损坏的驱动程序工具包。
NVIDIA GPU Operator 部署了多个 Pod,用于管理和启用 GPU 以在 OpenShift Container Platform 中使用。其中一些 Pod 需要 OpenShift Container Platform 使用的通用基础镜像 (UBI) 中默认不可用的软件包。为了使软件包可用于 NVIDIA GPU 驱动程序容器,您必须在 OpenShift 中启用集群范围的授权容器构建。
从高层次来看,启用集群范围的授权涉及三个步骤
从 Red Hat 客户门户 下载 Red Hat OpenShift Container Platform 订阅证书(访问需要登录凭据)。
创建一个
MachineConfig
,它启用订阅管理器并提供有效的订阅证书。等待MachineConfigOperator
重新启动节点并完成应用MachineConfig
。验证集群范围的授权是否正常工作。
这些说明假定您从 Red Hat 客户门户 下载了 base64 编码的授权,或者从现有节点中提取了授权。
创建授权容器需要您将具有有效 Red Hat 授权证书的机器配置分配给您的工作节点。此步骤是必要的,因为 Red Hat Enterprise Linux (RHEL) CoreOS 节点尚未自动获得授权。
获取授权证书#
按照以下指南编辑获取授权证书。
导航到 Red Hat 客户门户系统管理页面,然后单击 新建。
选择 Hypervisor,然后在 名称 字段中填写文本 OpenShift-Entitlement。
单击 创建。
选择 订阅 选项卡,然后单击 附加订阅。
搜索 Red Hat Developer Subscription [此处内容可能因帐户而异],选择其中一个并单击 附加订阅。
注意
此处选择 Red Hat Developer Subscription 纯粹是为了说明此示例。请根据您的需求选择合适的订阅。
单击 下载证书。

下载并解压文件。
提取密钥 <key>.pem 并使用以下命令进行测试
$ curl -E <key>.pem -Sfs -k https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/repodata/repomd.xml | head -3
注意
使用有效密钥,curl 将下载存储库入口点并显示其 head,如下例所示。
使用无效密钥,curl 下载将被 Red Hat 软件包镜像拒绝。
<?xml version="1.0" encoding="UTF-8"?> <repomd xmlns="http://linux.duke.edu/metadata/repo" xmlns:rpm="http://linux.duke.edu/metadata/rpm"> <revision>1631130504</revision>
添加集群范围的授权#
使用以下步骤添加集群范围的授权
创建一个本地的适当命名的目录。切换到此目录。
下载用于 OpenShift Container Platform 上集群范围授权的
machine config YAML 模板
。将下载的文件0003-cluster-wide-machineconfigs.yaml.template
保存到步骤 1 中创建的目录。将从您的授权证书中选择的
pem
文件复制到名为nvidia.pem
的本地文件$ cp <path/to/pem/file>/<certificate-file-name>.pem nvidia.pem
通过附加授权证书生成 MachineConfig 文件
$ sed -i -f - 0003-cluster-wide-machineconfigs.yaml.template << EOF s/BASE64_ENCODED_PEM_FILE/$(base64 -w0 nvidia.pem)/g EOF
将机器配置应用到 OpenShift 集群
$ oc apply -f 0003-cluster-wide-machineconfigs.yaml.template
注意
此步骤触发由 OpenShift Machine Config Operator 驱动的更新,并逐个启动所有工作节点上的重启。
machineconfig.machineconfiguration.openshift.io/50-rhsm-conf created machineconfig.machineconfiguration.openshift.io/50-entitlement-pem created machineconfig.machineconfiguration.openshift.io/50-entitlement-key-pem created
检查
machineconfig
$ oc get machineconfig | grep entitlement
50-entitlement-key-pem 2.2.0 45s 50-entitlement-pem 2.2.0 45s
监控
MachineConfigPool
对象$ oc get mcp/worker
NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE worker rendered-worker-5f1eaf24c760fb389d47d3c37ef41c29 True False False 2 2 2 0 7h15m
在这里,您可以看到 MCP 已更新,未更新或未降级,因此所有
MachineConfig
资源已成功应用于节点,您可以继续验证集群。
验证集群范围的授权#
使用测试 Pod 验证集群范围的授权,该测试 Pod 查询 Red Hat 订阅存储库以获取 kernel-devel 软件包。
创建测试 Pod
$ cat << EOF >> mypod.yaml apiVersion: v1 kind: Pod metadata: name: cluster-entitled-build-pod namespace: default spec: containers: - name: cluster-entitled-build image: registry.access.redhat.com/ubi8:latest command: [ "/bin/sh", "-c", "dnf search kernel-devel --showduplicates" ] restartPolicy: Never EOF
应用测试 Pod
$ oc create -f mypod.yaml
pod/cluster-entitled-build-pod created
验证测试 Pod 是否已创建
$ oc get pods -n default
NAME READY STATUS RESTARTS AGE cluster-entitled-build-pod 1/1 Completed 0 64m
验证 Pod 是否可以找到必要的 kernel-devel 软件包
$ oc logs cluster-entitled-build-pod -n default
Updating Subscription Management repositories. Unable to read consumer identity Subscription Manager is operating in container mode. Red Hat Enterprise Linux 8 for x86_64 - AppStre 15 MB/s | 14 MB 00:00 Red Hat Enterprise Linux 8 for x86_64 - BaseOS 15 MB/s | 13 MB 00:00 Red Hat Universal Base Image 8 (RPMs) - BaseOS 493 kB/s | 760 kB 00:01 Red Hat Universal Base Image 8 (RPMs) - AppStre 2.0 MB/s | 3.1 MB 00:01 Red Hat Universal Base Image 8 (RPMs) - CodeRea 12 kB/s | 9.1 kB 00:00 ====================== Name Exactly Matched: kernel-devel ====================== kernel-devel-4.18.0-80.1.2.el8_0.x86_64 : Development package for building : kernel modules to match the kernel kernel-devel-4.18.0-80.el8.x86_64 : Development package for building kernel : modules to match the kernel kernel-devel-4.18.0-80.4.2.el8_0.x86_64 : Development package for building : kernel modules to match the kernel kernel-devel-4.18.0-80.7.1.el8_0.x86_64 : Development package for building : kernel modules to match the kernel kernel-devel-4.18.0-80.11.1.el8_0.x86_64 : Development package for building : kernel modules to match the kernel kernel-devel-4.18.0-147.el8.x86_64 : Development package for building kernel : modules to match the kernel kernel-devel-4.18.0-80.11.2.el8_0.x86_64 : Development package for building : kernel modules to match the kernel kernel-devel-4.18.0-80.7.2.el8_0.x86_64 : Development package for building : kernel modules to match the kernel kernel-devel-4.18.0-147.0.3.el8_1.x86_64 : Development package for building : kernel modules to match the kernel kernel-devel-4.18.0-147.0.2.el8_1.x86_64 : Development package for building : kernel modules to match the kernel kernel-devel-4.18.0-147.3.1.el8_1.x86_64 : Development package for building : kernel modules to match the kernel
现在,任何基于 RHEL 的 Pod 都可以运行授权构建。