4.9. 커널 부팅 매개변수를 설정하여 호스팅 클러스터의 고급 노드 튜닝

중요

호스트 컨트롤 플레인은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

커널 부팅 매개변수를 설정해야 하는 호스팅 컨트롤 플레인의 고급 튜닝을 위해 Node Tuning Operator를 사용할 수도 있습니다. 다음 예제에서는 대규모 페이지가 예약된 노드 풀을 생성하는 방법을 보여줍니다.

절차

  1. 크기가 2MB인 10개의 대규모 페이지를 생성하기 위한 Tuned 오브젝트 매니페스트가 포함된 ConfigMap 오브젝트를 생성합니다. tuned-hugepages.yaml 이라는 파일에 이 ConfigMap 매니페스트를 저장합니다.

        apiVersion: v1
        kind: ConfigMap
        metadata:
          name: tuned-hugepages
          namespace: clusters
        data:
          tuning: |
            apiVersion: tuned.openshift.io/v1
            kind: Tuned
            metadata:
              name: hugepages
              namespace: openshift-cluster-node-tuning-operator
            spec:
              profile:
              - data: |
                  [main]
                  summary=Boot time configuration for hugepages
                  include=openshift-node
                  [bootloader]
                  cmdline_openshift_node_hugepages=hugepagesz=2M hugepages=50
                name: openshift-node-hugepages
              recommend:
              - priority: 20
                profile: openshift-node-hugepages
    참고

    .spec.recommend.match 필드는 의도적으로 비어 있습니다. 이 경우 이 Tuned 오브젝트는 이 ConfigMap 오브젝트가 참조되는 노드 풀의 모든 노드에 적용됩니다. 동일한 하드웨어 구성을 가진 노드를 동일한 노드 풀로 그룹화합니다. 그렇지 않으면 TuneD 피연산자가 동일한 노드 풀을 공유하는 두 개 이상의 노드에 대해 충돌하는 커널 매개변수를 계산할 수 있습니다.

  2. 관리 클러스터에 ConfigMap 오브젝트를 생성합니다.

    $ oc --kubeconfig="$MGMT_KUBECONFIG" create -f tuned-hugepages.yaml
  3. NodePool 매니페스트 YAML 파일을 생성하고 NodePool 의 업그레이드 유형을 사용자 지정하고 spec.tuningConfig 섹션에서 생성한 ConfigMap 오브젝트를 참조합니다. NodePool 매니페스트를 생성하고 hypershift CLI를 사용하여 hugepages-nodepool.yaml 이라는 파일에 저장합니다.

        NODEPOOL_NAME=hugepages-example
        INSTANCE_TYPE=m5.2xlarge
        NODEPOOL_REPLICAS=2
    
        hypershift create nodepool aws \
          --cluster-name $CLUSTER_NAME \
          --name $NODEPOOL_NAME \
          --node-count $NODEPOOL_REPLICAS \
          --instance-type $INSTANCE_TYPE \
          --render > hugepages-nodepool.yaml
  4. hugepages-nodepool.yaml 파일에서 .spec.management.upgradeTypeInPlace.Place .spec.tuningConfig 로 설정하고 생성한 tuned-hugepages ConfigMap 오브젝트를 참조하도록 .spec.tuningConfig를 설정합니다.

        apiVersion: hypershift.openshift.io/v1alpha1
        kind: NodePool
        metadata:
          name: hugepages-nodepool
          namespace: clusters
          ...
        spec:
          management:
            ...
            upgradeType: InPlace
          ...
          tuningConfig:
          - name: tuned-hugepages
    참고

    MachineConfig 개체를 적용할 때 노드의 불필요한 재생성을 방지하려면 .spec.management.upgradeTypeInPlace 로 설정합니다. Replace 업그레이드 유형을 사용하는 경우 TuneD 피연산자가 계산된 새 커널 부팅 매개변수를 적용하면 노드가 완전히 삭제되고 새 노드가 교체될 수 있습니다.

  5. 관리 클러스터에 NodePool 을 생성합니다.

    $ oc --kubeconfig="$MGMT_KUBECONFIG" create -f hugepages-nodepool.yaml

검증

노드를 사용할 수 있게 되면 컨테이너화된 TuneD 데몬은 적용된 TuneD 프로필을 기반으로 필요한 커널 부팅 매개변수를 계산합니다. 노드가 준비되고 재부팅되면 생성된 MachineConfig 오브젝트를 적용한 후 TuneD 프로필이 적용되고 커널 부팅 매개변수가 설정되어 있는지 확인할 수 있습니다.

  1. 호스팅 클러스터의 Tuned 오브젝트를 나열합니다.

    $ oc --kubeconfig="$HC_KUBECONFIG" get tuned.tuned.openshift.io -n openshift-cluster-node-tuning-operator

    출력 예

    NAME                 AGE
    default              123m
    hugepages-8dfb1fed   1m23s
    rendered             123m

  2. 호스팅된 클러스터의 Profile 오브젝트를 나열합니다.

    $ oc --kubeconfig="$HC_KUBECONFIG" get profile.tuned.openshift.io -n openshift-cluster-node-tuning-operator

    출력 예

    NAME                           TUNED                      APPLIED   DEGRADED   AGE
    nodepool-1-worker-1            openshift-node             True      False      132m
    nodepool-1-worker-2            openshift-node             True      False      131m
    hugepages-nodepool-worker-1    openshift-node-hugepages   True      False      4m8s
    hugepages-nodepool-worker-2    openshift-node-hugepages   True      False      3m57s

    NodePool 의 두 작업자 노드에는 openshift-node-hugepages 프로필이 적용됩니다.

  3. 튜닝이 올바르게 적용되었는지 확인하려면 노드에서 디버그 쉘을 시작하고 /proc/cmdline 을 확인합니다.

    $ oc --kubeconfig="$HC_KUBECONFIG" debug node/nodepool-1-worker-1 -- chroot /host cat /proc/cmdline

    출력 예

    BOOT_IMAGE=(hd0,gpt3)/ostree/rhcos-... hugepagesz=2M hugepages=50

추가 리소스

호스팅된 컨트롤 플레인에 대한 자세한 내용은 호스팅 컨트롤 플레인 (기술 프리뷰) 을 참조하십시오.