4.5. in-tree 모듈을 out-of-tree 모듈로 교체


KMM(커널 모듈 관리)을 사용하여 필요에 따라 커널에 로드하거나 언로드할 수 있는 커널 모듈을 빌드할 수 있습니다. 이러한 모듈은 시스템을 재부팅할 필요 없이 커널의 기능을 확장합니다. 모듈은 기본 제공 또는 동적으로 로드됨으로 구성할 수 있습니다.

동적으로 로드된 모듈에는 in-tree 모듈 및 OOT(out-of-tree) 모듈이 포함됩니다. in-tree 모듈은 Linux 커널 트리 내부에 있습니다. 즉, 이미 커널에 포함되어 있습니다. out-of-tree 모듈은 Linux 커널 트리 외부에 있습니다. 일반적으로 트리에 제공된 커널 모듈의 새 버전을 테스트하거나 비호환성을 처리하는 등 개발 및 테스트 목적으로 작성됩니다.

KMM에 의해 로드된 일부 모듈은 이미 노드에 로드된 in-tree 모듈을 교체할 수 있습니다. 모듈을 로드하기 전에 in-tree 모듈을 언로드하려면 .spec.moduleLoader.container.inTreeModuleToRemove 필드를 설정합니다. 다음은 모든 커널 매핑의 모듈 교체를 위한 예입니다.

# ...
spec:
  moduleLoader:
    container:
      modprobe:
        moduleName: mod_a

      inTreeModuleToRemove: mod_b
Copy to Clipboard Toggle word wrap

이 예에서 moduleLoader Pod는 inTreeModuleToRemove 을 사용하여 moduleLoader 이미지에서 mod_a 를 로드하기 전에 in-tree mod_b 를 언로드합니다. moduleLoader`pod is terminated and `mod_a가 언로드되면 mod_b가 다시 로드되지 않습니다.

다음은 특정 커널 매핑의 모듈 교체를 위한 예입니다.

# ...
spec:
  moduleLoader:
    container:
      kernelMappings:
        - literal: 6.0.15-300.fc37.x86_64
          containerImage: some.registry/org/my-kmod:6.0.15-300.fc37.x86_64
          inTreeModuleToRemove: <module_name>
Copy to Clipboard Toggle word wrap

4.5.1. 모듈 CR의 예

다음은 주석 처리 Module 예제입니다.

apiVersion: kmm.sigs.x-k8s.io/v1beta1
kind: Module
metadata:
  name: <my_kmod>
spec:
  moduleLoader:
    container:
      modprobe:
        moduleName: <my_kmod> 
1

        dirName: /opt 
2

        firmwarePath: /firmware 
3

        parameters:  
4

          - param=1
      kernelMappings:  
5

        - literal: 6.0.15-300.fc37.x86_64
          containerImage: some.registry/org/my-kmod:6.0.15-300.fc37.x86_64
        - regexp: '^.+\fc37\.x86_64$' 
6

          containerImage: "some.other.registry/org/<my_kmod>:${KERNEL_FULL_VERSION}"
        - regexp: '^.+$' 
7

          containerImage: "some.registry/org/<my_kmod>:${KERNEL_FULL_VERSION}"
          build:
            buildArgs:  
8

              - name: ARG_NAME
                value: <some_value>
            secrets:
              - name: <some_kubernetes_secret>  
9

            baseImageRegistryTLS: 
10

              insecure: false
              insecureSkipTLSVerify: false 
11

            dockerfileConfigMap:  
12

              name: <my_kmod_dockerfile>
          sign:
            certSecret:
              name: <cert_secret>  
13

            keySecret:
              name: <key_secret>  
14

            filesToSign:
              - /opt/lib/modules/${KERNEL_FULL_VERSION}/<my_kmod>.ko
          registryTLS: 
15

            insecure: false 
16

            insecureSkipTLSVerify: false
    serviceAccountName: <sa_module_loader>  
17

  devicePlugin:  
18

    container:
      image: some.registry/org/device-plugin:latest  
19

      env:
        - name: MY_DEVICE_PLUGIN_ENV_VAR
          value: SOME_VALUE
      volumeMounts:  
20

        - mountPath: /some/mountPath
          name: <device_plugin_volume>
    volumes:  
21

      - name: <device_plugin_volume>
        configMap:
          name: <some_configmap>
    serviceAccountName: <sa_device_plugin> 
22

  imageRepoSecret:  
23

    name: <secret_name>
  selector:
    node-role.kubernetes.io/worker: ""
Copy to Clipboard Toggle word wrap
1 1 1
필수 항목입니다.
2
선택 사항:
3
선택 사항: /firmware/* 를 노드의 /var/lib/firmware/ 로 복사합니다.
4
선택 사항:
5
하나 이상의 커널 항목이 필요합니다.
6
정규 표현식과 일치하는 커널을 실행하는 각 노드의 KMM은 ${KERNEL_FULL_VERSION} 을 사용하여 containerImage 에 지정된 이미지를 실행하는 DaemonSet 리소스를 커널 버전으로 대체합니다.
7
다른 커널의 경우 my-kmod ConfigMap의 Dockerfile을 사용하여 이미지를 빌드합니다.
8
선택 사항:
9
선택 사항: some-kubernetes-secret 의 값은 /run/secrets/some-kubernetes-secret 의 빌드 환경에서 가져올 수 있습니다.
10
선택 사항: 이 매개변수를 사용하지 마십시오. true 로 설정하면 빌드에서 일반 HTTP를 사용하여 Dockerfile FROM 명령에서 이미지를 가져올 수 있습니다.
11
선택 사항: 이 매개변수를 사용하지 마십시오. true 로 설정하면 빌드에서 일반 HTTP를 사용하여 Dockerfile FROM 명령에서 이미지를 가져올 때 모든 TLS 서버 인증서 검증을 건너뜁니다.
12
필수 항목입니다.
13
필수: 'cert' 키가 있는 공용 secureboot 키를 보유한 시크릿입니다.
14
필수: 키가 'key'인 개인 secureboot 키를 보유한 시크릿입니다.
15
선택 사항: 이 매개변수를 사용하지 마십시오. true 로 설정하면 KMM이 일반 HTTP를 사용하여 컨테이너 이미지가 이미 존재하는지 확인할 수 있습니다.
16
선택 사항: 이 매개변수를 사용하지 마십시오. true 로 설정하면 KMM은 컨테이너 이미지가 이미 존재하는지 확인할 때 모든 TLS 서버 인증서 검증을 건너뜁니다.
17
선택 사항:
18
선택 사항:
19
필수: 장치 플러그인 섹션이 있는 경우
20
선택 사항:
21
선택 사항:
22
선택 사항:
23
선택 사항: 모듈 로더 및 장치 플러그인 이미지를 가져오는 데 사용됩니다.
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat