1.3.2. OpenShift Container Platform에 커널 모듈 프로비저닝
OpenShift Container Platform 클러스터를 처음 부팅할 때 커널 모듈을 활성화할 필요가 있는지 여부에 따라 다음 두 가지 방법 중 하나로 커널 모듈을 배포하도록 설정할 수 있습니다.
-
클러스터 설치시 커널 모듈 프로비저닝 (day-1):
MachineConfig개체를 통해 콘텐츠를 작성하고 매니페스트 파일 세트와 함께openshift-install에 제공할 수 있습니다. - Machine Config Operator를 통해 커널 모듈 프로비저닝 (day-2): 커널 모듈을 추가하기 위해 클러스터가 가동 될 때까지 대기할 경우 MCO (Machine Config Operator)를 통해 커널 모듈 소프트웨어를 배포할 수 있습니다.
두 경우 모두 새 커널이 감지되면 각 노드에서 커널 소프트웨어 패키지 및 관련 소프트웨어 패키지를 가져올 수 있어야 합니다. 해당 콘텐츠를 가져올 수 있도록 각 노드를 설정할 수있는 몇 가지 방법이 있습니다.
- 각 노드에 RHEL 인타이틀먼트를 제공합니다.
-
/ etc / pki / entitlement디렉터리에서 기존 RHEL 호스트의 RHEL 인타이틀먼트를 취득하고 Ignition 설정을 빌드할 때 제공하는 다른 파일과 동일한 위치에 복사합니다. -
Dockerfile에서 커널 및 기타 패키지가 포함된
yum저장소에 대한 포인터를 추가합니다. 여기에는 새로 설치된 커널과 일치해야하므로 새 커널 패키지가 포함되어 있어야합니다.
1.3.2.1. MachineConfig 개체를 통한 커널 모듈 프로비저닝 링크 복사링크가 클립보드에 복사되었습니다!
MachineConfig 개체로 커널 모듈 소프트웨어를 패키지하면 설치시 또는 Machine Config Operator를 통해 해당 소프트웨어를 작업자 또는 컨트롤 플레인 노드에 전달할 수 있습니다.
프로세스
RHEL 8 시스템을 등록합니다.
# subscription-manager registerRHEL 8 시스템에 서브스크립션을 연결합니다.
# subscription-manager attach --auto소프트웨어를 빌드하는 데 필요한 소프트웨어를 설치합니다.
# yum install podman make git -y커널 모듈 및 툴을 호스팅할 디렉터리를 생성합니다.
$ mkdir kmods; cd kmodskmods-via-containers소프트웨어를 가져옵니다:kmods-via-containers저장소를 복제합니다.$ git clone https://github.com/kmods-via-containers/kmods-via-containerskvc-simple-kmod저장소를 복제합니다.$ git clone https://github.com/kmods-via-containers/kvc-simple-kmod
-
모듈 소프트웨어를 가져옵니다. 이 예에서는
kvc-simple-kmod가 사용됩니다. 이전에 복제된 리포지토리를 사용하여 fakeroot 디렉터리를 만들고 Ignition을 통해 전달할 파일을 이 디렉터리에 배치합니다.
디렉터리를 만듭니다.
$ FAKEROOT=$(mktemp -d)kmod-via-containers디렉터리로 변경합니다.$ cd kmods-via-containersKVC 프레임워크 인스턴스를 설치합니다.
$ make install DESTDIR=${FAKEROOT}/usr/local CONFDIR=${FAKEROOT}/etc/kvc-simple-kmod디렉터리로 변경합니다.$ cd ../kvc-simple-kmod인스턴스를 생성합니다.
$ make install DESTDIR=${FAKEROOT}/usr/local CONFDIR=${FAKEROOT}/etc/
다음 명령을 실행하여 fakeroot 디렉토리를 복제하고 모든 심볼릭 링크를 대상 복사본으로 교체합니다.
$ cd .. && rm -rf kmod-tree && cp -Lpr ${FAKEROOT} kmod-tree커널 모듈 트리를 포함하는 Butane 구성 파일
99-simple-kmod.bu를 생성하고 systemd 서비스를 활성화합니다.참고Butane에 대한 자세한 내용은 “Butane 을 사용하여 머신 구성 생성”을 참조하십시오.
variant: openshift version: 4.13.0 metadata: name: 99-simple-kmod labels: machineconfiguration.openshift.io/role: worker1 storage: trees: - local: kmod-tree systemd: units: - name: kmods-via-containers@simple-kmod.service enabled: true- 1
- 컨트롤 플레인 노드에 배포하려면
worker를master로 변경합니다. 컨트롤 플레인 및 작업자 노드에 모두 배포하려면 각 노드 유형에 대해 이러한 지침의 나머지 부분을 한 번씩 수행합니다.
Butane을 사용하여 전달할 파일과 구성이 포함된 머신 구성 YAML 파일
99-simple-kmod.yaml을 생성합니다.$ butane 99-simple-kmod.bu --files-dir . -o 99-simple-kmod.yaml클러스터가 아직 작동하지 않은 경우 매니페스트 파일을 생성하고 해당 파일을
openshift디렉터리에 추가합니다. 클러스터가 이미 실행중인 경우 다음과 같이 파일을 적용합니다.$ oc create -f 99-simple-kmod.yaml노드는
kmods-via-containers@simple-kmod.service서비스를 시작하고 커널 모듈이 로드됩니다.커널 모듈이 로드되었는지 확인하려면
oc debug node / <openshift-node>를 사용 후chroot / host를사용하여 노드에 로그인할 수 있습니다. 모듈을 나열하려면lsmod명령을 사용합니다.$ lsmod | grep simple_출력 예
simple_procfs_kmod 16384 0 simple_kmod 16384 0