4.17. KMM 허브 앤 스포크


허브 앤 스포크 시나리오에서는 많은 스포크 클러스터가 중앙의 강력한 허브 클러스터에 연결됩니다. 커널 모듈 관리(KMM)는 허브 앤 스포크 환경에서 작동하기 위해 Red Hat Advanced Cluster Management(RHACM)에 의존합니다.

KMM은 KMM 기능을 분리하여 허브 앤 스포크 환경과 호환됩니다. ManagedClusterModule 사용자 정의 리소스 정의(CRD)는 기존 모듈 CRD를 래핑하고 선택한 Spoke 클러스터로 확장하기 위해 제공됩니다. 또한 허브 클러스터에서 이미지와 서명 모듈을 구축하는 새로운 독립형 컨트롤러인 KMM-Hub도 제공됩니다.

허브 앤 스포크 설정에서 스포크는 허브 클러스터에서 중앙 관리되는 집중적이고 리소스가 제한된 클러스터입니다. 스포크는 리소스를 많이 사용하는 기능이 비활성화된 KMM의 단일 클러스터 버전을 실행합니다. KMM을 이러한 환경에 적용하려면 스포크에서 실행되는 작업 부하를 최소한으로 줄이고, 허브에서 비용이 많이 드는 작업을 처리해야 합니다.

커널 모듈 이미지를 빌드하고 .ko 파일에 서명하는 작업은 허브에서 실행해야 합니다. 모듈 로더와 장치 플러그인 DaemonSets 의 스케줄링은 스포크에서만 발생할 수 있습니다.

4.17.1. KMM-Hub

KMM 프로젝트는 허브 클러스터 전용 KMM 에디션인 KMM-Hub를 제공합니다. KMM-Hub는 스포크에서 실행되는 모든 커널 버전을 모니터링하고 클러스터에서 커널 모듈을 받아야 하는 노드를 결정합니다.

KMM-Hub는 이미지 빌드, kmod 서명과 같은 모든 컴퓨팅 집약적 작업을 실행하고, RHACM을 통해 스포크로 전송될 수 있도록 축소된 모듈을 준비합니다.

참고

KMM-Hub를 사용하여 허브 클러스터에 커널 모듈을 로드할 수 없습니다. 커널 모듈을 로드하려면 KMM 일반 버전을 설치하세요.

4.17.2. KMM-Hub 설치

다음 방법 중 하나를 사용하여 KMM-Hub를 설치할 수 있습니다.

  • OLM(Operator Lifecycle Manager)을 사용하여
  • KMM 리소스 생성

4.17.2.1. Operator Lifecycle Manager를 사용하여 KMM-Hub 설치

OpenShift 콘솔의 운영자 섹션을 사용하여 KMM-Hub를 설치합니다.

4.17.2.2. KMM 리소스를 생성하여 KMM-Hub 설치

프로세스

  • KMM-Hub를 프로그래밍 방식으로 설치하려면 다음 리소스를 사용하여 Namespace , OperatorGroupSubscription 리소스를 만들 수 있습니다.
---
apiVersion: v1
kind: Namespace
metadata:
  name: openshift-kmm-hub
---
apiVersion: operators.coreos.com/v1
kind: OperatorGroup
metadata:
  name: kernel-module-management-hub
  namespace: openshift-kmm-hub
---
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
  name: kernel-module-management-hub
  namespace: openshift-kmm-hub
spec:
  channel: stable
  installPlanApproval: Automatic
  name: kernel-module-management-hub
  source: redhat-operators
  sourceNamespace: openshift-marketplace

4.17.3. ManagedClusterModule CRD 사용

ManagedClusterModule 사용자 정의 리소스 정의(CRD)를 사용하여 스포크 클러스터에서 커널 모듈 배포를 구성합니다. 이 CRD는 클러스터 범위이며 모듈 사양을 래핑하고 다음과 같은 추가 필드를 추가합니다.

apiVersion: hub.kmm.sigs.x-k8s.io/v1beta1
kind: ManagedClusterModule
metadata:
  name: <my-mcm>
  # No namespace, because this resource is cluster-scoped.
spec:
  moduleSpec: 
1

    selector: 
2

      node-wants-my-mcm: 'true'

  spokeNamespace: <some-namespace> 
3


  selector: 
4

    wants-my-mcm: 'true'
1
moduleSpec : Module 리소스와 유사한 moduleLoaderdevicePlugin 섹션을 포함합니다.
2
ManagedCluster 내에서 노드를 선택합니다.
3
모듈 이 생성되어야 하는 네임스페이스를 지정합니다.
4
ManagedCluster 객체를 선택합니다.

.spec.moduleSpec 에 빌드 또는 서명 지침이 있는 경우 해당 Pod는 운영자 네임스페이스의 허브 클러스터에서 실행됩니다.

.spec.selector matches가 하나 이상의 ManagedCluster 리소스와 일치하는 경우 KMM-Hub는 해당 네임스페이스에 ManifestWork 리소스를 생성합니다. ManifestWork 에는 축소된 모듈 리소스가 포함되어 있으며, 커널 매핑은 보존되지만 모든 빌드서명 하위 섹션은 제거됩니다. 태그로 끝나는 이미지 이름을 포함하는 containerImage 필드는 해당 다이제스트에 대응하는 이미지로 대체됩니다.

4.17.4. 스포크에서 KMM 실행

스포크에 KMM(커널 모듈 관리)을 설치한 후에는 더 이상 작업이 필요하지 않습니다. 허브에서 ManagedClusterModule 객체를 생성하여 스포크 클러스터에 커널 모듈을 배포합니다.

프로세스

RHACM 정책 객체를 통해 스포크 클러스터에 KMM을 설치할 수 있습니다. 정책은 OperatorHub에서 KMM을 설치하고 경량 스포크 모드로 실행하는 것 외에도, RHACM 에이전트에서 모듈 리소스를 관리하는 데 필요한 추가 RBAC를 구성합니다.

  • 다음 RHACM 정책을 사용하여 스포크 클러스터에 KMM을 설치하세요.

    ---
    apiVersion: policy.open-cluster-management.io/v1
    kind: Policy
    metadata:
      name: install-kmm
    spec:
      remediationAction: enforce
      disabled: false
      policy-templates:
        - objectDefinition:
            apiVersion: policy.open-cluster-management.io/v1
            kind: ConfigurationPolicy
            metadata:
              name: install-kmm
            spec:
              severity: high
              object-templates:
              - complianceType: mustonlyhave
                objectDefinition:
                  apiVersion: v1
                  kind: Namespace
                  metadata:
                    name: openshift-kmm
              - complianceType: mustonlyhave
                objectDefinition:
                  apiVersion: operators.coreos.com/v1
                  kind: OperatorGroup
                  metadata:
                    name: kmm
                    namespace: openshift-kmm
                  spec:
                    upgradeStrategy: Default
              - complianceType: mustonlyhave
                objectDefinition:
                  apiVersion: operators.coreos.com/v1alpha1
                  kind: Subscription
                  metadata:
                    name: kernel-module-management
                    namespace: openshift-kmm
                  spec:
                    channel: stable
                    config:
                      env:
                        - name: KMM_MANAGED 
    1
    
                          value: "1"
                    installPlanApproval: Automatic
                    name: kernel-module-management
                    source: redhat-operators
                    sourceNamespace: openshift-marketplace
              - complianceType: mustonlyhave
                objectDefinition:
                  apiVersion: rbac.authorization.k8s.io/v1
                  kind: ClusterRole
                  metadata:
                    name: kmm-module-manager
                  rules:
                    - apiGroups: [kmm.sigs.x-k8s.io]
                      resources: [modules]
                      verbs: [create, delete, get, list, patch, update, watch]
              - complianceType: mustonlyhave
                objectDefinition:
                  apiVersion: rbac.authorization.k8s.io/v1
                  kind: ClusterRoleBinding
                  metadata:
                    name: klusterlet-kmm
                  subjects:
                  - kind: ServiceAccount
                    name: klusterlet-work-sa
                    namespace: open-cluster-management-agent
                  roleRef:
                    kind: ClusterRole
                    name: kmm-module-manager
                    apiGroup: rbac.authorization.k8s.io
    ---
    apiVersion: apps.open-cluster-management.io/v1
    kind: PlacementRule
    metadata:
      name: all-managed-clusters
    spec:
      clusterSelector: 
    2
    
        matchExpressions: []
    ---
    apiVersion: policy.open-cluster-management.io/v1
    kind: PlacementBinding
    metadata:
      name: install-kmm
    placementRef:
      apiGroup: apps.open-cluster-management.io
      kind: PlacementRule
      name: all-managed-clusters
    subjects:
      - apiGroup: policy.open-cluster-management.io
        kind: Policy
        name: install-kmm
    1
    스포크 클러스터에서 KMM을 실행할 때 이 환경 변수가 필요합니다.
    2
    spec.clusterSelector 필드는 특정 클러스터만 대상으로 사용자 정의할 수 있습니다.
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2026 Red Hat
맨 위로 이동