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 的访问权限。

流程

  1. 为 OpenShift 沙盒容器 Operator 创建 Namespace 对象。

    1. 创建一个包含以下清单的 Namespace 对象 YAML 文件:

      apiVersion: v1
      kind: Namespace
      metadata:
        name: openshift-sandboxed-containers-operator
    2. 创建 Namespace 对象:

      $ oc create -f Namespace.yaml
  2. 为 OpenShift 沙盒容器 Operator 创建 OperatorGroup 对象。

    1. 创建一个包含以下清单的 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
    2. 创建 OperatorGroup 对象:

      $ oc create -f OperatorGroup.yaml
  3. 创建 Subscription 对象,以便为 OpenShift 沙盒容器 Operator 订阅命名空间

    1. 创建一个包含以下内容的 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
    2. 创建 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 运行时配置了正确的运行时处理程序。
  • 使用默认配置创建一个名为 kataRuntimeClass 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 和网络较慢。

流程

  1. 使用以下清单创建 YAML 文件:

    apiVersion: kataconfiguration.openshift.io/v1
    kind: KataConfig
    metadata:
      name: cluster-kataconfig
    spec:
      checkNodeEligibility: false 1
      logLevel: info
    1
    将'checkNodeEligibility' 设置为 true,以检测节点资格作为 RuntimeClass 运行 kata。如需更多信息,请参阅"检查集群节点是否有资格运行 OpenShift 沙盒容器"。
  2. (可选)如果只在所选节点上安装 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 语法。
  3. 创建 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 字段。如果 runtimeClassNamekata,则工作负载在 OpenShift 沙盒容器中运行。