Menu Close

3.3. Special Resource Operator 사용

SRO(Special Resource Operator)는 드라이버 컨테이너의 빌드 및 배포를 관리하는 데 사용됩니다. 컨테이너를 빌드하고 배포하는 데 필요한 오브젝트는 Helm 차트에 정의할 수 있습니다.

이 섹션의 예제에서는 simple-kmod 커널 모듈을 사용하여 SRO를 사용하여 드라이버 컨테이너를 빌드하고 실행하는 방법을 보여줍니다. 첫 번째 예에서 SRO 이미지에는 simple-kmod 커널 모듈을 배포하기 위한 템플릿을 포함하여 Helm 차트의 로컬 리포지토리가 포함되어 있습니다. 이 경우 드라이버 컨테이너를 배포하는 데 SpecialResource 매니페스트가 사용됩니다. 두 번째 예에서 simple-kmod SpecialResource 오브젝트는 Helm 차트를 저장하도록 생성된 ConfigMap 오브젝트를 가리킵니다.

3.3.1. SRO 이미지의 템플릿을 사용하여 simple-kmod SpecialResource 구축 및 실행

SRO 이미지에는 simple-kmod 커널 모듈을 배포하기 위한 템플릿을 포함하여 Helm 차트의 로컬 리포지토리가 포함되어 있습니다. 이 예에서 simple-kmod 커널 모듈은 SRO가 내부 SRO 리포지토리에 정의된 드라이버 컨테이너를 관리하는 방법을 표시하는 데 사용됩니다.

사전 요구 사항

  • 실행 중인 OpenShift Container Platform 클러스터가 있어야 합니다.
  • Image Registry Operator 상태를 클러스터의 Managed로 설정합니다.
  • OpenShift CLI(oc)를 설치합니다.
  • cluster-admin 권한이 있는 사용자로 OpenShift CLI에 로그인했습니다.
  • NFD (Node Feature Discovery) Operator를 설치했습니다.
  • Special Resource Operator를 설치했습니다.

절차

  1. SRO 이미지의 로컬 Helm 리포지토리를 사용하여 simple-kmod를 배포하려면 다음 SpecialResource 매니페스트를 사용합니다. 이 YAML을 simple-kmod-local.yaml로 저장합니다.

    apiVersion: sro.openshift.io/v1beta1
    kind: SpecialResource
    metadata:
      name: simple-kmod
    spec:
      namespace: simple-kmod
      chart:
        name: simple-kmod
        version: 0.0.1
        repository:
          name: example
          url: file:///charts/example
      set:
        kind: Values
        apiVersion: sro.openshift.io/v1beta1
        kmodNames: ["simple-kmod", "simple-procfs-kmod"]
        buildArgs:
        - name: "KMODVER"
          value: "SRO"
      driverContainer:
        source:
          git:
            ref: "master"
            uri: "https://github.com/openshift-psap/kvc-simple-kmod.git"
  2. SpecialResource를 만듭니다.

    $ oc create -f simple-kmod-local.yaml

    simple-kmod 리소스는 오브젝트 매니페스트에 지정된 대로 simple-kmod 네임스페이스에 배포됩니다. 잠시 후 simple-kmod 드라이버 컨테이너의 빌드 Pod가 실행되기 시작합니다. 몇 분 후에 빌드가 완료되면 드라이버 컨테이너 pod가 실행됩니다.

  3. oc get pods 명령을 사용하여 Pod 상태를 표시합니다.

    $ oc get pods -n simple-kmod

    출력 예

    NAME                                                  READY   STATUS      RESTARTS   AGE
    simple-kmod-driver-build-12813789169ac0ee-1-build     0/1     Completed   0          7m12s
    simple-kmod-driver-container-12813789169ac0ee-mjsnh   1/1     Running     0          8m2s
    simple-kmod-driver-container-12813789169ac0ee-qtkff   1/1     Running     0          8m2s

  4. simple-kmod 드라이버 컨테이너 이미지 빌드의 로그를 표시하려면 위에서 얻은 빌드 Pod 이름과 함께 oc logs 명령을 사용합니다.

    $ oc logs pod/simple-kmod-driver-build-12813789169ac0ee-1-build -n simple-kmod
  5. simple-kmod 커널 모듈이 로드되었는지 확인하려면 위의 oc get pods 명령에서 반환된 드라이버 컨테이너 Pod 중 하나에서 lsmod 명령을 실행합니다.

    $ oc exec -n simple-kmod -it pod/simple-kmod-driver-container-12813789169ac0ee-mjsnh -- lsmod | grep simple

    출력 예

    simple_procfs_kmod     16384  0
    simple_kmod            16384  0

참고

노드에서 simple-kmod 커널 모듈을 제거하려면 oc delete 명령을 사용하여 simple-kmod SpecialResource API 오브젝트를 삭제합니다. 드라이버 컨테이너 Pod가 삭제되면 커널 모듈이 언로드됩니다.