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를 설치했습니다.
절차
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"
SpecialResource
를 만듭니다.$ oc create -f simple-kmod-local.yaml
simple-kmod
리소스는 오브젝트 매니페스트에 지정된 대로simple-kmod
네임스페이스에 배포됩니다. 잠시 후simple-kmod
드라이버 컨테이너의 빌드 Pod가 실행되기 시작합니다. 몇 분 후에 빌드가 완료되면 드라이버 컨테이너 pod가 실행됩니다.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
simple-kmod 드라이버 컨테이너 이미지 빌드의 로그를 표시하려면 위에서 얻은 빌드 Pod 이름과 함께
oc logs
명령을 사용합니다.$ oc logs pod/simple-kmod-driver-build-12813789169ac0ee-1-build -n simple-kmod
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가 삭제되면 커널 모듈이 언로드됩니다.