第 4 章 在 IBM 上部署工作负载
您可以在 IBM Z® 和 IBM® LinuxONE 上部署 OpenShift 沙盒容器工作负载。
在 IBM Z® 和 IBM® LinuxONE 上部署 OpenShift 沙盒容器工作负载只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
集群先决条件
- 已安装 Red Hat OpenShift Container Platform 4.14 或更高版本。
- 集群有三个控制节点和两个 worker 节点。
部署流程
虽然本文档只涉及 IBM Z®,但所有流程也适用于 IBM® LinuxONE。
您可以通过执行以下步骤部署 OpenShift 沙盒容器工作负载:
- 在 KVM 主机上配置 libvirt 卷。
- 创建 KVM 客户机镜像并将其上传到 libvirt 卷。
- 创建对等 pod 虚拟机镜像并将其上传到 libvirt 卷。
- 为 libvirt 提供程序创建 secret。
- 为 libvirt 供应商创建配置映射。
- 为您的 KVM 主机创建 SSH 密钥 secret。
-
创建
KataConfig
CR。 - 可选:修改每个节点的对等 pod VM 限制。
-
将您的工作负载对象配置为使用
kata-remote
运行时类。
- 集群节点和对等 pod 必须位于同一 IBM Z® KVM 主机逻辑分区(LPAR)中。
- 集群节点和对等 pod 必须连接到同一子网。
4.1. 准备您的环境
执行以下步骤准备您的环境:
- 确保集群有足够的资源。
- 安装 OpenShift 沙盒容器 Operator。
4.1.1. 资源要求
对等 pod 虚拟机(VM)需要位于两个位置的资源:
-
worker 节点。worker 节点存储元数据、Kata shim 资源(
containerd-shim-kata-v2
)、remote-hypervisor 资源(cloud-api-adaptor
),以及 worker 节点和对等 pod 虚拟机之间的隧道设置。 - 云实例。这是在云中运行的实际对等 pod 虚拟机。
Kubernetes worker 节点中使用的 CPU 和内存资源由 RuntimeClass (kata-remote
)定义中包含的 pod 开销 处理,用于创建对等 pod。
在云中运行的对等 pod 虚拟机总数定义为 Kubernetes 节点扩展资源。这个限制是每个节点,并由 peerpodConfig
自定义资源(CR)中的 limit
属性设置。
在创建 kataConfig
CR 并启用对等 pod 时,名为 peerpodconfig-openshift
的 peerpodConfig
CR 会被创建,位于 openshift-sandboxed-containers-operator
命名空间中。
以下 peerpodConfig
CR 示例显示默认的 spec
值:
apiVersion: confidentialcontainers.org/v1alpha1
kind: PeerPodConfig
metadata:
name: peerpodconfig-openshift
namespace: openshift-sandboxed-containers-operator
spec:
cloudSecretName: peer-pods-secret
configMapName: peer-pods-cm
limit: "10" 1
nodeSelector:
node-role.kubernetes.io/kata-oc: ""
- 1
- 默认限制为每个节点 10 个虚拟机。
扩展资源名为 kata.peerpods.io/vm
,并允许 Kubernetes 调度程序处理容量跟踪和核算。
您可以根据环境要求编辑每个节点的限制。如需更多信息,请参阅"修改对等 pod 中每个节点的虚拟机限制"。
变异 Webhook 将扩展的资源 kata.peerpods.io/vm
添加到 pod 规格中。如果存在,它还会从 pod 规格中删除任何特定于资源的条目。这可让 Kubernetes 调度程序考虑这些扩展资源,确保仅在资源可用时调度对等 pod。
变异 Webhook 修改 Kubernetes pod,如下所示:
-
变异 Webhook 会检查 pod 是否有预期的
RuntimeClassName
值,在TARGET_RUNTIME_CLASS
环境变量中指定。如果 pod 规格中的值与TARGET_RUNTIME_CLASS
的值不匹配,则 Webhook 会在不修改 pod 的情况下退出。 如果
RuntimeClassName
值匹配,webhook 会对 pod 规格进行以下更改:-
Webhook 从 pod 中所有容器和 init 容器的
resources
字段中删除每个资源规格。 -
Webhook 通过修改 pod 中第一个容器的 resources 字段,将扩展资源(
kata.peerpods.io/vm
)添加到 spec。Kubernetes 调度程序使用扩展资源kata.peerpods.io/vm
用于核算目的。
-
Webhook 从 pod 中所有容器和 init 容器的
变异 Webhook 排除 OpenShift Container Platform 中的特定系统命名空间。如果在这些系统命名空间中创建了对等 pod,则使用 Kubernetes 扩展资源的资源核算不起作用,除非 pod spec 包含扩展资源。
作为最佳实践,定义集群范围的策略,仅允许在特定命名空间中创建对等 pod。
4.1.2. 安装 OpenShift 沙盒容器 Operator
您可以使用 OpenShift Container Platform Web 控制台或命令行界面(CLI)安装 OpenShift 沙盒容器 Operator。
4.1.2.1. 使用 Web 控制台安装 Operator
您可以使用 Red Hat OpenShift Container Platform Web 控制台安装 OpenShift 沙盒容器 Operator。
先决条件
-
您可以使用具有
cluster-admin
角色的用户访问集群。
流程
-
在 OpenShift Container Platform Web 控制台中导航至 Operators
OperatorHub。 -
在 Filter by keyword 字段中,输入
OpenShift sandboxed containers
。 - 选择 OpenShift 沙盒容器 Operator 标题并点 Install。
- 在 Install Operator 页面中,从可用 Update Channel 选项列表中选择 stable。
验证为 Installed Namespace 选择了 Operator recommended Namespace。这会在
openshift-sandboxed-containers-operator
命名空间中安装 Operator。如果此命名空间尚不存在,则会自动创建。注意尝试在
openshift-sandboxed-containers-operator
以外的命名空间中安装 OpenShift 沙盒容器 Operator 会导致安装失败。- 验证是否为 Approval Strategy 选择了 Automatic。Automatic 是默认值,当有新的 z-stream 发行版本可用时,自动启用对 OpenShift 沙盒容器的自动更新。
- 点 Install。
OpenShift 沙盒容器 Operator 现已安装在集群中。
验证
-
导航到 Operators
Installed Operators。 - 验证 OpenShift 沙盒容器 Operator 是否已显示。
4.1.2.2. 使用 CLI 安装 Operator
您可以使用 CLI 安装 OpenShift 沙盒容器 Operator。
先决条件
-
已安装 OpenShift CLI(
oc
)。 -
您可以使用具有
cluster-admin
角色的用户访问集群。
流程
创建
Namespace.yaml
清单文件:apiVersion: v1 kind: Namespace metadata: name: openshift-sandboxed-containers-operator
运行以下命令创建命名空间:
$ oc create -f Namespace.yaml
创建
OperatorGroup.yaml
清单文件:apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: openshift-sandboxed-containers-operator namespace: openshift-sandboxed-containers-operator spec: targetNamespaces: - openshift-sandboxed-containers-operator
运行以下命令来创建 operator 组:
$ oc create -f OperatorGroup.yaml
创建
Subscription.yaml
清单文件:apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: openshift-sandboxed-containers-operator namespace: openshift-sandboxed-containers-operator spec: channel: stable installPlanApproval: Automatic name: sandboxed-containers-operator source: redhat-operators sourceNamespace: openshift-marketplace startingCSV: sandboxed-containers-operator.v1.6.0
运行以下命令来创建订阅:
$ oc create -f Subscription.yaml
OpenShift 沙盒容器 Operator 现已安装在集群中。
验证
运行以下命令确保 Operator 已正确安装:
$ oc get csv -n openshift-sandboxed-containers-operator
输出示例
NAME DISPLAY VERSION REPLACES PHASE openshift-sandboxed-containers openshift-sandboxed-containers-operator 1.6.0 1.5.3 Succeeded