2.3. 使用 CLI 部署 OpenShift 沙盒容器工作负载
您可以使用 CLI 部署 OpenShift 沙盒容器工作负载。首先,您必须安装 OpenShift 沙盒容器 Operator,然后创建 KataConfig
自定义资源。在沙盒容器中部署工作负载后,您必须将 kata
作为 runtimeClassName
添加到工作负载 YAML 文件中。
2.3.1. 使用 CLI 安装 OpenShift 沙盒容器 Operator
您可以使用 Red Hat OpenShift CLI 安装 OpenShift 沙盒容器 Operator。
先决条件
- 在集群中安装了 Red Hat OpenShift 4.13。
-
已安装 OpenShift CLI(
oc
)。 -
您可以使用具有
cluster-admin
角色的用户访问集群。 您已订阅了 OpenShift 沙盒容器目录。
注意订阅 OpenShift 沙盒容器目录为
openshift-sandboxed-containers-operator
命名空间提供了对 OpenShift 沙盒容器 Operator 的访问权限。
流程
为 OpenShift 沙盒容器 Operator 创建
Namespace
对象。创建一个包含以下清单的
Namespace
对象 YAML 文件:apiVersion: v1 kind: Namespace metadata: name: openshift-sandboxed-containers-operator
创建
Namespace
对象:$ oc create -f Namespace.yaml
为 OpenShift 沙盒容器 Operator 创建
OperatorGroup
对象。创建一个包含以下清单的
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
创建
OperatorGroup
对象:$ oc create -f OperatorGroup.yaml
创建
Subscription
对象,以便为 OpenShift 沙盒容器 Operator 订阅命名空间
。创建一个包含以下内容的
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.4.1
创建
Subscription
对象:$ oc create -f Subscription.yaml
OpenShift 沙盒容器 Operator 现已安装在集群中。
以上列出的所有对象文件名都是建议。您可以使用其他名称创建对象 YAML 文件。
验证
确保正确安装 Operator:
$ oc get csv -n openshift-sandboxed-containers-operator
输出示例
NAME DISPLAY VERSION REPLACES PHASE openshift-sandboxed-containers openshift-sandboxed-containers-operator 1.4.1 1.4.0 Succeeded
2.3.2. 使用 CLI 创建 KataConfig 自定义资源
您必须创建一个 KataConfig
自定义资源 (CR)来作为 RuntimeClass
在节点上安装 kata
。创建 KataConfig
CR 会触发 OpenShift 沙盒容器 Operator 来执行以下操作:
-
在 RHCOS 节点上安装所需的 RHCOS 扩展,如 QEMU 和
kata-containers
。 - 确保 CRI-O 运行时配置了正确的运行时处理程序。
-
使用默认配置创建一个名为
kata
的RuntimeClass
CR。这可让用户在RuntimeClassName
字段中引用 CR 将工作负载配置为使用kata
作为运行时。此 CR 也指定运行时的资源开销。
Kata 默认安装在所有 worker 节点上。如果要在特定节点上安装 kata
作为 RuntimeClass
,您可以向这些节点添加标签,然后在创建时在 KataConfig
CR 中定义标签。
先决条件
- 在集群中安装了 Red Hat OpenShift 4.13。
-
已安装 OpenShift CLI(
oc
)。 -
您可以使用具有
cluster-admin
角色的用户访问集群。 - 已安装 OpenShift 沙盒容器 Operator。
创建 KataConfig
CR 会自动重启 worker 节点。重启可能需要 10 到 60 分钟。妨碍重启时间的因素如下:
- 带有更多 worker 节点的大型 Red Hat OpenShift 部署。
- 激活 BIOS 和 Diagnostics 实用程序。
- 在硬盘而不是 SSD 上部署。
- 在物理节点上部署,如裸机,而不是在虚拟节点上部署。
- CPU 和网络较慢。
流程
使用以下清单创建 YAML 文件:
apiVersion: kataconfiguration.openshift.io/v1 kind: KataConfig metadata: name: cluster-kataconfig spec: checkNodeEligibility: false 1 logLevel: info
- 1
- 将'checkNodeEligibility' 设置为
true
,以检测节点资格作为RuntimeClass
运行kata
。如需更多信息,请参阅"检查集群节点是否有资格运行 OpenShift 沙盒容器"。
(可选)如果只在所选节点上安装
kata
作为RuntimeClass
,请创建一个包含清单中的标签的 YAML 文件:apiVersion: kataconfiguration.openshift.io/v1 kind: KataConfig metadata: name: cluster-kataconfig spec: checkNodeEligibility: false logLevel: info kataConfigPoolSelector: matchLabels: <label_key>: '<label_value>' 1
- 1
kataConfigPoolSelector
中的标签只支持单个值;不支持nodeSelector
语法。
创建
KataConfig
资源:$ oc create -f cluster-kataconfig.yaml
新的 KataConfig
CR 会被创建,并开始在 worker 节点上作为 RuntimeClass
安装 kata
。等待 kata
安装完成,以及 worker 节点重启,然后继续下一步。
OpenShift 沙盒容器仅将 kata
安装为集群上的辅助可选运行时,而不是作为主要运行时安装。
验证
监控安装进度:
$ watch "oc describe kataconfig | sed -n /^Status:/,/^Events/p"
当 Is In Progress 的值显示为
false
后,安装就已完成。
其他资源
2.3.3. 使用 CLI 在沙盒容器中部署工作负载
OpenShift 沙盒容器将 Kata 安装为集群上的辅助、可选运行时,而不是主运行时。
要在沙盒容器中部署 pod 模板工作负载,您必须将 kata
作为 runtimeClassName
添加到工作负载 YAML 文件中。
先决条件
- 在集群中安装了 Red Hat OpenShift 4.13。
-
已安装 OpenShift CLI(
oc
)。 -
您可以使用具有
cluster-admin
角色的用户访问集群。 - 已安装 OpenShift 沙盒容器 Operator。
-
您已创建了
KataConfig
自定义资源 (CR)。
流程
将
runtimeClassName: kata
添加到任何 pod 模板对象中:-
Pod
对象 -
ReplicaSet
对象 -
ReplicationController
对象 -
StatefulSet
对象 -
Deployment
对象 -
deploymentConfig
对象
Pod 对象的 .example
apiVersion: v1 kind: Pod metadata: name: hello-openshift labels: app: hello-openshift spec: runtimeClassName: kata containers: - name: hello-openshift image: quay.io/openshift/origin-hello-openshift ports: - containerPort: 8888 securityContext: privileged: false allowPrivilegeEscalation: false runAsNonRoot: true runAsUser: 1001 capabilities: drop: - ALL seccompProfile: type: RuntimeDefault
-
Red Hat OpenShift 创建工作负载并开始调度它。
验证
-
检查 pod 模板对象上的
runtimeClassName
字段。如果runtimeClassName
是kata
,则工作负载在 OpenShift 沙盒容器中运行。