2.3. 使用命令行部署工作负载
您可以使用命令行部署 OpenShift 沙盒容器工作负载。
2.3.1. 创建 KataConfig 自定义资源
您必须创建一个 KataConfig
自定义资源(CR)来作为 worker 节点上的运行时类安装 kata
。
创建 KataConfig
CR 会触发 OpenShift 沙盒容器 Operator 来执行以下操作:
-
在 RHCOS 节点上安装所需的 RHCOS 扩展,如 QEMU 和
kata-containers
。 - 确保 CRI-O 运行时配置了正确的运行时处理程序。
-
使用默认配置创建一个名为
kata
的RuntimeClass
CR。这可让用户在RuntimeClassName
字段中引用 CR 将工作负载配置为使用kata
作为运行时。此 CR 也指定运行时的资源开销。
OpenShift 沙盒容器将 kata
作为集群中的辅助 可选运行时安装,而不是作为主要运行时。
创建 KataConfig
CR 会自动重启 worker 节点。重启可能需要 10 到 60 分钟。妨碍重启时间的因素如下:
- 带有更多 worker 节点的大型 OpenShift Container Platform 部署。
- 激活 BIOS 和 Diagnostics 实用程序。
- 在硬盘而不是 SSD 上部署。
- 在物理节点上部署,如裸机,而不是在虚拟节点上部署。
- CPU 和网络较慢。
先决条件
-
您可以使用具有
cluster-admin
角色的用户访问集群。 - 可选:如果要启用节点资格检查,已安装了 Node Feature Discovery Operator。
流程
根据以下示例创建
cluster-kataconfig.yaml
清单文件:apiVersion: kataconfiguration.openshift.io/v1 kind: KataConfig metadata: name: cluster-kataconfig spec: checkNodeEligibility: false 1 logLevel: info
- 1
- 可选:将'checkNodeEligibility' 设置为
true
以运行节点资格检查。
可选: 要在所选节点上安装
kata
,请按照以下示例指定节点标签:apiVersion: kataconfiguration.openshift.io/v1 kind: KataConfig metadata: name: cluster-kataconfig spec: kataConfigPoolSelector: matchLabels: <label_key>: '<label_value>' 1 # ...
- 1
- 指定所选节点的标签。
创建
KataConfig
CR:$ oc create -f cluster-kataconfig.yaml
新的
KataConfig
CR 会被创建,并在 worker 节点上作为运行时类安装kata
。在验证安装前,等待
kata
安装完成,以及 worker 节点重新引导。
验证
运行以下命令监控安装进度:
$ watch "oc describe kataconfig | sed -n /^Status:/,/^Events/p"
当安装
kataNodes
下的所有 worker 的状态并且条件InProgress
为False
时,如果没有指定原因,则会在集群中安装kata
。
详情请参阅 KataConfig 状态信息。
2.3.2. 配置工作负载对象
您可以通过将 kata
配置为以下 pod 模板对象的运行时类来部署 OpenShift 沙盒容器工作负载:
-
Pod
对象 -
ReplicaSet
对象 -
ReplicationController
对象 -
StatefulSet
对象 -
Deployment
对象 -
deploymentConfig
对象
不要在 openshift-sandboxed-containers-operator
命名空间中部署工作负载。为这些资源创建一个专用命名空间。
先决条件
- 您已为供应商创建了 secret 对象。
- 您已为供应商创建了配置映射。
-
您已创建了
KataConfig
自定义资源 (CR)。
流程
将
spec.runtimeClassName: kata
添加到每个 pod 模板工作负载对象的清单中,如下例所示:apiVersion: v1 kind: <object> # ... spec: runtimeClassName: kata # ...
OpenShift Container Platform 创建工作负载对象并开始调度它。
验证
-
检查 pod 模板对象的
spec.runtimeClassName
字段。如果值为kata
,则工作负载在 OpenShift 沙盒容器中运行,使用对等 pod。