This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.3.3. Special Resource Operator 사용
SRO(Special Resource Operator)는 드라이버 컨테이너의 빌드 및 배포를 관리하는 데 사용됩니다. 컨테이너를 빌드하고 배포하는 데 필요한 오브젝트는 Helm 차트에 정의할 수 있습니다.
이 섹션의 예제에서는 simple-kmod SpecialResource 오브젝트를 사용하여 Helm 차트를 저장하기 위해 생성된 ConfigMap 오브젝트를 가리킵니다.
3.3.1. 구성 맵을 사용하여 simple-kmod SpecialResource 구축 및 실행 링크 복사링크가 클립보드에 복사되었습니다!
이 예제에서 simple-kmod 커널 모듈은 Special Resource Operator (SRO)가 드라이버 컨테이너를 관리하는 방법을 보여줍니다. 컨테이너는 구성 맵에 저장된 Helm 차트 템플릿에 정의됩니다.
사전 요구 사항
- 실행 중인 OpenShift Container Platform 클러스터가 있어야 합니다.
-
Image Registry Operator 상태를 클러스터의
Managed로 설정합니다. -
OpenShift CLI(
oc)를 설치합니다. -
cluster-admin권한이 있는 사용자로 OpenShift CLI에 로그인했습니다. - NFD (Node Feature Discovery) Operator를 설치했습니다.
- SRO가 설치되어 있어야 합니다.
-
Helm CLI(
helm)가 설치되어 있어야 합니다.
절차
simple-kmod
SpecialResource오브젝트를 생성하려면 이미지 스트림과 빌드 구성을 정의하여 이미지를 빌드하고, 컨테이너를 실행하도록 서비스 계정, 역할, 역할 바인딩 및 데몬 세트를 정의합니다. 커널 모듈을 로드할 수 있도록 권한 있는 보안 컨텍스트로 데몬 세트를 실행하려면 서비스 계정, 역할 및 역할 바인딩이 필요합니다.templates디렉터리를 생성하고 이 디렉터리로 변경합니다.mkdir -p chart/simple-kmod-0.0.1/templates
$ mkdir -p chart/simple-kmod-0.0.1/templatesCopy to Clipboard Copied! Toggle word wrap Toggle overflow cd chart/simple-kmod-0.0.1/templates
$ cd chart/simple-kmod-0.0.1/templatesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이미지 스트림 및 빌드 구성에 대한 이 YAML 템플릿을
templates디렉터리에0000-buildconfig.yaml로 저장합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow templates디렉터리에 설정된 RBAC 리소스 및 데몬에 대한 다음 YAML 템플릿을1000-driver-container.yaml로 저장합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow chart/simple-kmod-0.0.1디렉터리로 변경합니다.cd ..
$ cd ..Copy to Clipboard Copied! Toggle word wrap Toggle overflow 차트에 대한 다음 YAML을
chart/simple-kmod-0.0.1디렉터리에Chart.yaml로 저장합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
chart디렉토리에서hhelm package명령을 사용하여 차트를 생성합니다.helm package simple-kmod-0.0.1/
$ helm package simple-kmod-0.0.1/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Successfully packaged chart and saved it to: /data/<username>/git/<github_username>/special-resource-operator/yaml-for-docs/chart/simple-kmod-0.0.1/simple-kmod-0.0.1.tgz
Successfully packaged chart and saved it to: /data/<username>/git/<github_username>/special-resource-operator/yaml-for-docs/chart/simple-kmod-0.0.1/simple-kmod-0.0.1.tgzCopy to Clipboard Copied! Toggle word wrap Toggle overflow 차트 파일을 저장할 구성 맵을 생성합니다.
구성 맵 파일의 디렉터리를 생성합니다.
mkdir cm
$ mkdir cmCopy to Clipboard Copied! Toggle word wrap Toggle overflow Helm 차트를
cm디렉터리에 복사합니다.cp simple-kmod-0.0.1.tgz cm/simple-kmod-0.0.1.tgz
$ cp simple-kmod-0.0.1.tgz cm/simple-kmod-0.0.1.tgzCopy to Clipboard Copied! Toggle word wrap Toggle overflow Helm 차트가 포함된 Helm 리포지터리를 지정하는 인덱스 파일을 생성합니다.
helm repo index cm --url=cm://simple-kmod/simple-kmod-chart
$ helm repo index cm --url=cm://simple-kmod/simple-kmod-chartCopy to Clipboard Copied! Toggle word wrap Toggle overflow Helm 차트에 정의된 오브젝트의 네임스페이스를 생성합니다.
oc create namespace simple-kmod
$ oc create namespace simple-kmodCopy to Clipboard Copied! Toggle word wrap Toggle overflow 구성 맵 오브젝트를 생성합니다.
oc create cm simple-kmod-chart --from-file=cm/index.yaml --from-file=cm/simple-kmod-0.0.1.tgz -n simple-kmod
$ oc create cm simple-kmod-chart --from-file=cm/index.yaml --from-file=cm/simple-kmod-0.0.1.tgz -n simple-kmodCopy to Clipboard Copied! Toggle word wrap Toggle overflow
구성 맵에서 생성한 Helm 차트를 사용하여 simple-kmod 오브젝트를 배포하려면 다음
SpecialResource매니페스트를 사용합니다. 이 YAML을simple-kmod-configmap.yaml로 저장합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 명령줄에서
SpecialResource파일을 만듭니다.oc create -f simple-kmod-configmap.yaml
$ oc create -f simple-kmod-configmap.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
노드에서 simple-kmod 커널 모듈을 제거하려면 oc delete 명령을 사용하여 simple-kmod SpecialResource API 오브젝트를 삭제합니다. 드라이버 컨테이너 Pod가 삭제되면 커널 모듈이 언로드됩니다.
검증
simple-kmod 리소스는 오브젝트 매니페스트에 지정된 대로 simple-kmod 네임스페이스에 배포됩니다. 잠시 후 simple-kmod 드라이버 컨테이너의 빌드 Pod가 실행되기 시작합니다. 몇 분 후에 빌드가 완료되면 드라이버 컨테이너 pod가 실행됩니다.
oc get pods명령을 사용하여 빌드 Pod의 상태를 표시합니다.oc get pods -n simple-kmod
$ oc get pods -n simple-kmodCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
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
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 8m2sCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc logs명령과 위의oc get pods명령에서 얻은 빌드 Pod 이름을 사용하여 simple-kmod 드라이버 컨테이너 이미지 빌드의 로그를 표시합니다.oc logs pod/simple-kmod-driver-build-12813789169ac0ee-1-build -n simple-kmod
$ oc logs pod/simple-kmod-driver-build-12813789169ac0ee-1-build -n simple-kmodCopy to Clipboard Copied! Toggle word wrap Toggle overflow simple-kmod 커널 모듈이 로드되었는지 확인하려면 위의
oc get pods명령에서 반환된 드라이버 컨테이너 Pod 중 하나에서lsmod명령을 실행합니다.oc exec -n simple-kmod -it pod/simple-kmod-driver-container-12813789169ac0ee-mjsnh -- lsmod | grep simple
$ oc exec -n simple-kmod -it pod/simple-kmod-driver-container-12813789169ac0ee-mjsnh -- lsmod | grep simpleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
simple_procfs_kmod 16384 0 simple_kmod 16384 0
simple_procfs_kmod 16384 0 simple_kmod 16384 0Copy to Clipboard Copied! Toggle word wrap Toggle overflow
sro_kind_completed_info SRO Prometheus 메트릭은 배포 중인 다양한 오브젝트의 상태에 대한 정보를 제공하며, SRO CR 설치 문제를 해결하는 데 유용할 수 있습니다. SRO는 환경의 상태를 확인하는 데 사용할 수 있는 다른 유형의 메트릭도 제공합니다.