4.5. 커널 모듈 배포


커널 모듈 관리(KMM)는 클러스터의 노드모듈 리소스를 모니터링하여 커널 모듈을 노드에 로드하거나 언로드해야 하는지 여부를 결정합니다.

모듈을 사용하려면 노드에 다음이 포함되어야 합니다.

  • 모듈의 .spec.selector 필드와 일치하는 레이블입니다.
  • 모듈의 .spec.moduleLoader.container.kernelMappings 필드에 있는 항목 중 하나와 일치하는 커널 버전입니다.
  • 모듈에 정렬된 업그레이드( ordered_upgrade.md )가 구성된 경우 .spec.moduleLoader.container.version 필드와 일치하는 레이블이 필요합니다.

KMM이 모듈 리소스에 구성된 대로 노드를 원하는 상태로 조정하면 대상 노드에 작업자 포드를 만들어 필요한 작업을 실행합니다. KMM 운영자는 포드의 결과를 모니터링하고 정보를 기록합니다. 운영자는 모듈이 성공적으로 로드되면 이 정보를 사용하여 노드 객체에 레이블을 지정하고, 구성된 경우 장치 플러그인을 실행합니다.

워커 포드는 다음 작업을 수행하는 KMM 워커 바이너리를 실행합니다.

  • 모듈 리소스에 구성된 kmod 이미지를 가져옵니다. Kmod 이미지는 .ko 파일을 포함하는 표준 OCI 이미지입니다.
  • 포드의 파일 시스템에서 이미지를 추출합니다.
  • 지정된 인수로 modprobe를 실행하여 필요한 작업을 수행합니다.

4.5.1. 모듈 사용자 정의 리소스 정의

모듈 사용자 정의 리소스 정의(CRD)는 kmod 이미지를 통해 클러스터의 모든 노드 또는 선택한 노드에 로드할 수 있는 커널 모듈을 나타냅니다. Module CR(사용자 정의 리소스)은 호환되는 하나 이상의 커널 버전과 노드 선택기를 지정합니다.

Module 리소스에 호환되는 버전은 .spec.moduleLoader.container.kernelMappings 아래에 나열됩니다. 커널 매핑은 literal 버전과 일치하거나 regexp 를 사용하여 여러 항목을 동시에 일치시킬 수 있습니다.

Module 리소스의 조정 루프는 다음 단계를 실행합니다.

  1. .spec.selector 와 일치하는 모든 노드를 나열합니다.
  2. 해당 노드에서 실행 중인 모든 커널 버전 세트를 빌드합니다.
  3. 각 커널 버전에 대해 다음을 수행합니다.

    1. .spec.moduleLoader.container.kernelMappings 를 통과하여 적절한 컨테이너 이미지 이름을 찾습니다. 커널 매핑에 빌드 또는 서명이 정의되어 있고 컨테이너 이미지가 아직 없는 경우 필요에 따라 빌드, 서명 포드 또는 둘 다를 실행합니다.
    2. 이전 단계에서 결정된 컨테이너 이미지를 가져오기 위해 워커 포드를 만들고 modprobe를 실행합니다.
    3. .spec.devicePlugin 이 정의된 경우 .spec.devicePlugin.container 에 지정된 구성을 사용하여 장치 플러그인 데몬 세트를 생성합니다.
  4. 다음과 같이 garbage-collect 을 실행합니다.

    1. 어떤 노드도 타겟으로 삼지 않는 오래된 장치 플러그인 DaemonSets입니다 .
    2. 성공적인 빌드 포드.
    3. 성공적인 서명 포드.

4.5.2. 커널 모듈 간에 소프트 종속 항목 설정

일부 구성에서는 모듈이 기호를 통해 서로 직접 의존하지 않아도 제대로 작동하려면 여러 커널 모듈을 특정 순서로 로드해야 합니다. 이를 소프트 종속 항목이라고 합니다. depmod 는 일반적으로 이러한 종속성을 인식하지 못하며 생성하는 파일에 표시되지 않습니다. 예를 들어 mod_amod_b 에 대한 소프트 종속성이 있는 경우modprobe mod_amod_b 를 로드하지 않습니다.

modulesLoadingOrder 필드를 사용하여 모듈 사용자 정의 리소스 정의(CRD)에서 소프트 종속성을 선언하면 이러한 상황을 해결할 수 있습니다.

# ...
spec:
  moduleLoader:
    container:
      modprobe:
        moduleName: mod_a
        dirName: /opt
        firmwarePath: /firmware
        parameters:
          - param=1
        modulesLoadingOrder:
          - mod_a
          - mod_b
Copy to Clipboard Toggle word wrap

위의 구성에서 워커 포드는 kmod 이미지에서 mod_a를 로드하기 전에 먼저 트리 내 mod_b를 언로드하려고 시도합니다. 워커 포드가 종료되고 mod_a 가 언로드되면 mod_b는 다시 로드되지 않습니다.

참고

마지막으로 로드할 목록의 첫 번째 값은 moduleName 과 같아야 합니다.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat