4.16. Day 1 커널 모듈 로드


커널 모듈 관리(KMM)는 일반적으로 Day 2 Operator입니다. 커널 모듈은 RHCOS(Linux) 서버의 초기화를 완료한 후에만 로드됩니다. 그러나 일부 시나리오에서는 커널 모듈을 이전 단계에서 로드해야 합니다. Day 1 기능을 사용하면 Linux systemd 초기화 단계에서 MCO(Machine Config Operator)를 사용하여 커널 모듈을 로드할 수 있습니다.

추가 리소스

4.16.1. Day 1 지원 사용 사례

Day 1 기능은 제한된 수의 사용 사례를 지원합니다. 주요 사용 사례는 NetworkManager 서비스 초기화 전에 OOT(out-of-tree) 커널 모듈을 로드하도록 허용하는 것입니다. initramfs 단계에서 커널 모듈 로드를 지원하지 않습니다.

Day 1 기능에 필요한 조건은 다음과 같습니다.

  • 커널 모듈이 커널에 로드되지 않습니다.
  • in-tree 커널 모듈은 커널에 로드되지만 OOT 커널 모듈로 언로드하고 교체할 수 있습니다. 즉 in-tree 모듈은 다른 커널 모듈에서 참조되지 않습니다.
  • Day 1 기능이 작동하려면 노드에 작동하는 작동 중인 네트워크 인터페이스, 즉 해당 인터페이스의 in-tree 커널 드라이버가 있어야 합니다. OOT 커널 모듈은 기능 네트워크 드라이버를 대체할 네트워크 드라이버일 수 있습니다.

4.16.2. OOT 커널 모듈 로드 흐름

OOT(out-of-tree) 커널 모듈을 로드하면 MCO(Machine Config Operator)가 사용됩니다. 흐름 시퀀스는 다음과 같습니다.

프로세스

  1. 기존 실행 중인 클러스터에 MachineConfig 리소스를 적용합니다. 업데이트해야 하는 필수 노드를 식별하려면 적절한 MachineConfigPool 리소스를 생성해야 합니다.
  2. MCO는 노드별로 재부팅 노드를 적용합니다. 재부팅된 노드에서 두 개의 새 systemd 서비스 pull service 및 load 서비스가 배포됩니다.
  3. load 서비스는 NetworkConfiguration 서비스 전에 실행되도록 구성되어 있습니다. 서비스는 사전 정의된 커널 모듈 이미지를 가져온 다음 해당 이미지를 사용하여 in-tree 모듈을 언로드하고 OOT 커널 모듈을 로드하려고 합니다.
  4. pull 서비스는 NetworkManager 서비스 후에 실행되도록 구성되어 있습니다. 이 서비스는 사전 구성된 커널 모듈 이미지가 노드의 파일 시스템에 있는지 확인합니다. 이 경우 서비스가 정상적으로 존재하며 서버는 부팅 프로세스를 계속합니다. 그렇지 않으면 이미지를 노드로 가져와서 나중에 노드를 재부팅합니다.

4.16.3. 커널 모듈 이미지

Day 1 기능은 Day 2 KMM 빌드에서 활용하는 동일한 DTK 기반 이미지를 사용합니다. 트리 외부 커널 모듈은 /opt/lib/modules/${kernelVersion} 에 있어야 합니다.

추가 리소스

4.16.4. in-tree 모듈 교체

Day 1 기능은 항상 in-tree 커널 모듈을 OOT 버전으로 대체하려고 합니다. in-tree 커널 모듈이 로드되지 않으면 흐름에 영향을 미치지 않습니다. 서비스는 OOT 커널 모듈을 진행하여 로드합니다.

4.16.5. MCO yaml 생성

KMM은 Day 1 기능에 대한 MCO YAML 매니페스트를 생성하는 API를 제공합니다.

ProduceMachineConfig(machineConfigName, machineConfigPoolRef, kernelModuleImage, kernelModuleName string) (string, error)

반환된 출력은 적용할 MCO YAML 매니페스트의 문자열 표현입니다. 이 YAML을 적용하는 것은 고객에게 달려 있습니다.

매개변수는 다음과 같습니다.

machineConfigName
MCO YAML 매니페스트 이름입니다. 이 매개변수는 MCO YAML 매니페스트 메타데이터의 name 매개변수로 설정됩니다.
machineConfigPoolRef
대상 노드를 식별하는 데 사용되는 MachineConfigPool 이름입니다.
kernelModuleImage
OOT 커널 모듈이 포함된 컨테이너 이미지의 이름입니다.
kernelModuleName
OOT 커널 모듈의 이름입니다. 이 매개변수는 in-tree 커널 모듈을 언로드하고(커널에 로드된 경우) OOT 커널 모듈을 로드하는 데 사용됩니다.

API는 KMM 소스 코드의 pkg/mcproducer 패키지에 있습니다. KMM Operator는 Day 1 기능을 사용하기 위해 실행할 필요가 없습니다. pkg/mcproducer 패키지를 operator/utility 코드로 가져와서 API를 호출한 다음 생성된 MCO YAML을 클러스터에 적용해야 합니다.

4.16.6. MachineConfigPool

MachineConfigPool 은 적용된 MCO의 영향을 받는 노드 컬렉션을 식별합니다.

kind: MachineConfigPool
metadata:
  name: sfc
spec:
  machineConfigSelector: 1
    matchExpressions:
      - {key: machineconfiguration.openshift.io/role, operator: In, values: [worker, sfc]}
  nodeSelector: 2
    matchLabels:
      node-role.kubernetes.io/sfc: ""
  paused: false
  maxUnavailable: 1
1
MachineConfig의 레이블과 일치합니다.
2
노드의 레이블과 일치합니다.

OCP 클러스터에는 사전 정의된 MachineConfigPool 이 있습니다.

  • worker: 클러스터의 모든 작업자 노드 지정
  • master: 클러스터의 모든 마스터 노드를 대상으로 지정

마스터 MachineConfigPool을 대상으로 하도록 다음 MachineConfig를 정의합니다.

metadata:
  labels:
    machineconfiguration.opensfhit.io/role: master

작업자 MachineConfigPool을 대상으로 하도록 다음 MachineConfig를 정의합니다.

metadata:
  labels:
    machineconfiguration.opensfhit.io/role: worker

추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.