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

CLI를 사용하여 OpenShift 샌드박스 컨테이너 워크로드를 배포할 수 있습니다. 먼저 OpenShift 샌드박스 컨테이너 Operator를 설치한 다음 KataConfig 사용자 정의 리소스를 생성해야 합니다. 샌드박스 컨테이너에 워크로드를 배포할 준비가 되면 kata 를 워크로드 YAML 파일에 runtimeClassName 으로 추가해야 합니다.

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

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

사전 요구 사항

  • 클러스터에 OpenShift Container Platform 4.12가 설치되어 있어야 합니다.
  • 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-1.3"
        installPlanApproval: Automatic
        name: sandboxed-containers-operator
        source: redhat-operators
        sourceNamespace: openshift-marketplace
        startingCSV: sandboxed-containers-operator.v1.3.2
    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.3.2    1.3.1        Succeeded

3.3.2. CLI를 사용하여 KataConfig 사용자 지정 리소스 생성

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

  • RHCOS 노드에 QEMU 및 kata-containers 와 같은 필요한 RHCOS 확장을 설치합니다.
  • CRI-O 런타임이 올바른 kata 런타임 처리기로 구성되었는지 확인합니다.
  • 기본 구성으로 kata 라는 RuntimeClass CR을 생성합니다. 이를 통해 사용자는 RuntimeClassName 필드의 CR을 참조하여 kata 를 런타임으로 사용하도록 워크로드를 구성할 수 있습니다. 이 CR은 런타임의 리소스 오버헤드도 지정합니다.
참고

Kata는 기본적으로 모든 작업자 노드에 설치됩니다. kata 를 특정 노드에만 RuntimeClass 로 설치하려면 해당 노드에 라벨을 추가한 다음 이를 생성할 때 KataConfig CR에 라벨을 정의할 수 있습니다.

사전 요구 사항

  • 클러스터에 OpenShift Container Platform 4.12가 설치되어 있습니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.
  • cluster-admin 역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.
  • OpenShift 샌드박스 컨테이너 Operator가 설치되어 있습니다.
중요

KataConfig CR을 생성하면 작업자 노드가 자동으로 재부팅됩니다. 재부팅에는 10분에서 60분 이상 걸릴 수 있습니다. 재부팅 시간을 방해하는 요소는 다음과 같습니다.

  • 더 많은 수의 작업자 노드가 있는 대규모 OpenShift Container Platform 배포
  • BIOS 및ECDHE 유틸리티 활성화
  • SSD가 아닌 하드 드라이브에 배포합니다.
  • 가상 노드가 아닌 베어 메탈과 같은 물리적 노드에 배포합니다.
  • 느린 CPU 및 네트워크

절차

  1. 다음 매니페스트를 사용하여 YAML 파일을 생성합니다.

    apiVersion: kataconfiguration.openshift.io/v1
    kind: KataConfig
    metadata:
      name: cluster-kataconfig
    spec:
      checkNodeEligibility: false 1
      logLevel: info
    1
    노드 자격을 감지하려면 'checkNodeEligibility'를 true 로 설정하여 kataRuntimeClass 로 실행합니다. 자세한 내용은 "클러스터 노드가 OpenShift 샌드박스 컨테이너를 실행할 수 있는지 확인"을 참조하십시오.
  2. (선택 사항) 선택한 노드에만 kataRuntimeClass 로 설치하려면 매니페스트에 라벨이 포함된 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 <file name>.yaml

KataConfig CR이 생성되고 작업자 노드에 kataRuntimeClass 로 설치합니다. kata 설치가 완료되고 작업자 노드가 재부팅될 때까지 기다린 후 다음 단계를 계속합니다.

중요

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

검증

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

    $ watch "oc describe kataconfig | sed -n /^Status:/,/^Events/p"

    Is In Progress 의 값이 false 로 표시되면 설치가 완료됩니다.

3.3.3. CLI를 사용하여 샌드박스 컨테이너에서 워크로드 배포

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

샌드박스 컨테이너에 pod 템플릿 워크로드를 배포하려면 kata 를 워크로드 YAML 파일에 runtimeClassName 으로 추가해야 합니다.

사전 요구 사항

  • 클러스터에 OpenShift Container Platform 4.12가 설치되어 있습니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.
  • cluster-admin 역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.
  • OpenShift 샌드박스 컨테이너 Operator가 설치되어 있습니다.
  • KataConfig CR(사용자 정의 리소스)을 생성했습니다.

절차

  • pod 템플릿 오브젝트에 runtimeClassName: kata 를 추가합니다.

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

Pod 오브젝트의 예

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

OpenShift Container Platform은 워크로드를 생성하고 예약하기 시작합니다.

검증

  • Pod 템플릿 오브젝트에서 runtimeClassName 필드를 검사합니다. runtimeClassNamekata 인 경우 워크로드는 OpenShift 샌드박스 컨테이너에서 실행됩니다.