3.3. CLI를 사용하여 OpenShift 샌드박스 컨테이너 Operator 배포

Operator를 설치 및 배포하고 CLI에서 워크로드를 볼 수 있습니다.

3.3.1. CLI를 사용하여 OpenShift 샌드박스 컨테이너 Operator 설치

OpenShift 샌드박스 컨테이너 Operator는 OpenShift Container Platform CLI를 사용하여 설치할 수 있습니다.

사전 요구 사항

  • 클러스터에 OpenShift Container Platform 4.8을 설치합니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.
  • cluster-admin 역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.
  • OpenShift 샌드박스 컨테이너 카탈로그를 구독하고 있습니다.

    참고

    OpenShift 샌드박스 컨테이너 카탈로그를 구독하면 openshift-sandboxed-containers-operator 네임스페이스에서 OpenShift 샌드박스 컨테이너 Operator에 액세스할 수 있습니다.

절차

  1. 다음 매니페스트를 포함하는 YAML 파일을 만듭니다.

    apiVersion: v1
    kind: Namespace
    metadata:
      name: openshift-sandboxed-containers-operator
    ---
    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: openshift-sandboxed-containers-kataconfig-group
      namespace: openshift-sandboxed-containers-operator
    spec:
      targetNamespaces:
        - openshift-sandboxed-containers-operator
    ---
    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: sandboxed-containers-operatorhub
      namespace: openshift-sandboxed-containers-operator
    spec:
      source: redhat-operators
      sourceNamespace: openshift-marketplace
      name: sandboxed-containers-operator
      startingCSV: sandboxed-containers-operator.v1.0.0
      channel: "preview-1.0"
      approval: "Automatic"
    참고

    preview-1.0 채널을 사용하면 OpenShift Container Platform 버전과 호환되는 OpenShift 샌드박스 컨테이너 버전을 설치할 수 있습니다.

  2. 다음 명령을 실행하여 OpenShift 샌드박스 컨테이너에 필요한 Namespace, OperatorGroupSubscription 오브젝트를 생성합니다.

    $ oc create -f <file name>.yaml
  3. Operator가 올바르게 설치되었는지 확인합니다.

    $ oc get csv -n openshift-sandboxed-containers-operator

    출력 예

    NAME                             DISPLAY                                  VERSION  REPLACES                    PHASE
    openshift-sandboxed-containers   openshift-sandboxed-containers-operator  1.0.0    <csv-of-previous-version>   Succeeded

  4. 사용 가능한 배포를 확인합니다.

    $ oc get deployments -n openshift-sandboxed-containers-operator

    출력 예

    NAME                                        READY  UP-TO-DATE   AVAILABLE   AGE
    openshift-sandboxed-containers-operator                         1/111       9m48s

검증

  • KataConfig 리소스를 생성하여 설치를 트리거할 수 있도록 Operator가 실행 중인지 확인합니다.

    $ oc get deployments -n openshift-sandboxed-containers-operator

    출력 예

    NAME                                                READY   UP-TO-DATE   AVAILABLE   AGE
    openshift-sandboxed-containers-controller-manager   1/1     1            1           40d

3.3.1.1. Kata 런타임 설치 트리거

다음을 수행하려면 OpenShift 샌드박스 컨테이너 Operator를 트리거하려면 하나의 KataConfig CR( 사용자 정의 리소스)을 생성해야 합니다.

  • RHCOS 노드에 QEMU 및 kata-containers 와 같은 필요한 RHCOS 확장을 설치합니다.
  • 런타임 CRI-O가 올바른 Kata 런타임 핸들러로 구성되었는지 확인합니다.
  • 가상화로 인한 추가 오버헤드 및 필요한 추가 프로세스에 대해 필요한 구성으로 RuntimeClass 사용자 지정 리소스를 생성합니다.

사전 요구 사항

  • 클러스터에 OpenShift Container Platform 4.8을 설치합니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.
  • cluster-admin 역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.

절차

  1. KataConfig 리소스를 생성합니다.

    $ oc create -f <file name>.yaml

    예제

    apiVersion: kataconfiguration.openshift.io/v1
    kind: KataConfig
    metadata:
      name: cluster-kataconfig

  2. 설치 진행 상황을 모니터링합니다.

    • KataConfig 설치를 설명할 수 있습니다.

      $ oc describe kataconfig
      • 상태에서 완료된 노드 필드를 확인합니다.
      • 완료된 노드 값이 작업자 노드 수와 일치하는 경우 설치가 완료됩니다. 상태에는 설치가 완료된 노드 목록도 포함됩니다.
    • KataConfig 리소스를 확인하여 설치 진행 상황을 확인할 수 있습니다.

      $ watch -n 10 oc describe kataconfig

      또는 KataConfig 리소스의 상태를 확인할 수 있습니다. 이 작업은 oc get KataConfig <name> -oyaml을 실행하고 출력에서 status 필드를 검사하여 수행할 수 있습니다.

이제 Kata 런타임이 클러스터에 설치되어 보조 런타임으로 사용할 수 있습니다. 클러스터에서 Kata에 대해 새로 생성된 RuntimeClass가 표시되는지 확인합니다.

중요

OpenShift 샌드박스 컨테이너는 Kata를 기본 런타임이 아닌 클러스터의 보조 선택적 런타임으로만 설치합니다.

검증

  • 다음을 실행하여 KataConfig 사용자 정의 리소스의 값을 모니터링할 수 있습니다.

    $ watch oc describe KataConfig cluster-kataconfig

추가 리소스

3.3.1.2. OpenShift 샌드박스 컨테이너의 노드 선택

특정 작업자에 Kata 런타임을 선택적으로 설치할 수 있습니다.

사전 요구 사항

  • 클러스터에 OpenShift Container Platform 4.8을 설치합니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.
  • cluster-admin 역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.

절차

  1. 노드를 선택하는 데 사용할 레이블을 확인합니다. 이 예에서는 레이블을 사용하여 OpenShift 샌드박스 컨테이너 워크로드에서 실행할 후보로 선택할 수 있습니다. 노드가 있으면 선택됩니다.

    1. 노드에 레이블을 적용하려면 다음 명령을 실행합니다.

      $ oc label node <worker_node_name> <label>=<value>

      이렇게 하면 값이 <value><label> 레이블이 있는 작업자 노드에 레이블이 지정됩니다.

  2. 레이블 선택기를 추가하려면 KataConfig CR(사용자 정의 리소스)을 편집합니다.

    $ oc edit kataconfig

    예제

      apiVersion: kataconfiguration.openshift.io/v1
      kind: KataConfig
      metadata:
        name: cluster-kataconfig
      spec:
        kataConfigPoolSelector:
          matchLabels:
             custom-kata-machine-pool: 'true'

검증

  • machine-config-pool 오브젝트의 노드가 구성 업데이트를 통해 수행하는지 확인할 수 있습니다.

    • 기본 노드를 사용하는 경우 다음을 실행하여 machine-config-pool 리소스를 모니터링할 수 있습니다.

      $ watch oc get mcp worker
    • 선택한 노드를 사용하는 경우 다음을 실행하여 machine-config-pool 리소스를 모니터링할 수 있습니다.

      $ watch oc get mcp kata-oc
  • watch oc describe kataconfig cluster-kataconfig를 실행하여 노드의 sandboxed-containers 확장 실패에 대한 정보를 표시할 수 있습니다. 정보는 machine-config-pool 오브젝트의 상태에서 수집됩니다. 다음을 실행하여 정보를 볼 수 있습니다.

    $ oc describe mcp <machine-config-pool>

3.3.1.3. OpenShift 샌드박스 컨테이너 워크로드 예약

OpenShift 샌드박스 컨테이너에서 실행되도록 워크로드를 예약할 수 있습니다.

사전 요구 사항

  • 클러스터에 OpenShift Container Platform 4.8을 설치합니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.
  • cluster-admin 역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.

절차

  1. pod 템플릿 리소스에 runtimeClassName: kata를 추가합니다.

    • Pod 오브젝트
    • ReplicaSet 오브젝트
    • ReplicationController 오브젝트
    • StatefulSet 오브젝트
    • Deployment 오브젝트
    • DeploymentConfig 오브젝트

Pod 오브젝트의 예

  apiVersion: v1
  kind: Pod
  metadata:
   name: mypod
  spec:
    runtimeClassName: kata

Deployment 오브젝트의 예

  apiVersion: apps/v1
  kind: Deployment
  metadata:
    name: mypod
    labels:
      app: mypod
  spec:
    replicas: 3
    selector:
      matchLabels:
        app: mypod
    template:
      metadata:
        labels:
          app: mypod
      spec:
        runtimeClassName: kata
        containers:
        - name: mypod
          image: myImage

pod 템플릿 리소스가 runtimeClassName: kata를 사용하여 생성된 후 OpenShift Container Platform은 OpenShift 샌드박스 컨테이너에서 활성화된 노드의 워크로드 예약을 시작합니다. 선택기를 사용하지 않으면 기본값은 모든 작업자 노드로 설정됩니다. 워크로드는 OpenShift 샌드박스 컨테이너에서 실행됩니다.

3.3.2. CLI에서 OpenShift 샌드박스 컨테이너 워크로드 보기

CLI에서 워크로드에 사용된 Pod의 runtimeClass를 볼 수 있습니다.

사전 요구 사항

  • 클러스터에 OpenShift Container Platform 4.8을 설치합니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.
  • cluster-admin 역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.

절차

  • pod의 runtimeClassName 필드를 검사하여 일반 컨테이너와 OpenShift 샌드박스 컨테이너에서 실행되는 pod를 확인합니다.

    • 노드에서 각 pod에는 해당 qemu 프로세스가 있습니다.

검증

  • openshift-sandboxed-containers-operator 컨트롤러 Pod의 로그를 확인하여 실행 중인 단계에 대한 자세한 메시지를 확인할 수 있습니다.

    • 다음을 실행하여 컨트롤러 Pod의 이름을 검색할 수 있습니다.

      $ oc get pods -n openshift-sandboxed-containers-operator | grep openshift-sandboxed-containers-operator-controller-manager

      이를 통해 해당 pod의 컨테이너 관리자 로그를 모니터링할 수 있습니다.