5.6. OpenStack에서 호스트된 컨트롤 플레인 관리


RHOSP(Red Hat OpenStack Platform) 에이전트 시스템에 호스팅된 컨트롤 플레인을 배포한 후 다음 작업을 완료하여 호스팅 클러스터를 관리할 수 있습니다.

5.6.1. 호스트된 클러스터에 액세스

oc CLI를 사용하여 리소스에서 직접 kubeconfig 시크릿을 추출하여 RHOSP(Red Hat OpenStack Platform)에서 호스팅된 클러스터에 액세스할 수 있습니다.

호스팅된 클러스터(호스트링) 네임스페이스에는 호스팅 된 클러스터 리소스 및 액세스 보안이 포함되어 있습니다. 호스팅된 컨트롤 플레인 네임스페이스는 호스팅된 컨트롤 플레인이 실행되는 위치입니다.

보안 이름 형식은 다음과 같습니다.

  • kubeconfig 시크릿: < hosted_cluster_namespace>-<name>-admin-kubeconfig. 예를 들어 cluster -hypershift-demo-admin-kubeconfig.
  • kubeadmin 암호 시크릿: < hosted_cluster_namespace>-<name>-kubeadmin-password. 예를 들어 cluster -hypershift-demo-kubeadmin-password.

kubeconfig 시크릿에는 Base64로 인코딩된 kubeconfig 필드가 포함되어 있습니다. kubeadmin 암호 시크릿도 Base64로 인코딩됩니다. 압축을 풀고 암호를 사용하여 호스팅된 클러스터의 API 서버 또는 콘솔에 로그인할 수 있습니다.

사전 요구 사항

  • oc CLI가 설치되어 있습니다.

프로세스

  1. 다음 명령을 입력하여 admin-kubeconfig 시크릿을 추출합니다.

    $ oc extract -n <hosted_cluster_namespace> \
      secret/<hosted_cluster_name>-admin-kubeconfig \
      --to=./hostedcluster-secrets --confirm
    Copy to Clipboard Toggle word wrap

    출력 예

    hostedcluster-secrets/kubeconfig
    Copy to Clipboard Toggle word wrap

  2. 다음 명령을 입력하여 액세스 권한을 확인하기 위해 호스팅 클러스터의 노드 목록을 확인합니다.

    $ oc --kubeconfig ./hostedcluster-secrets/kubeconfig get nodes
    Copy to Clipboard Toggle word wrap

5.6.2. 호스트 클러스터의 노드 자동 확장 활성화

RHOSP(Red Hat OpenStack Platform)의 호스팅 클러스터에 더 많은 용량이 필요하고 예비 에이전트를 사용할 수 있는 경우 자동 확장을 활성화하여 새 작업자 노드를 설치할 수 있습니다.

프로세스

  1. 자동 확장을 활성화하려면 다음 명령을 입력합니다.

    $ oc -n <hosted_cluster_namespace> patch nodepool <hosted_cluster_name> \
      --type=json \
      -p '[{"op": "remove", "path": "/spec/replicas"},{"op":"add", "path": "/spec/autoScaling", "value": { "max": 5, "min": 2 }}]'
    Copy to Clipboard Toggle word wrap
  2. 새 노드가 필요한 워크로드를 생성합니다.

    1. 다음 예제를 사용하여 워크로드 구성이 포함된 YAML 파일을 생성합니다.

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        labels:
          app: reversewords
        name: reversewords
        namespace: default
      spec:
        replicas: 40
        selector:
          matchLabels:
            app: reversewords
        template:
          metadata:
            labels:
              app: reversewords
          spec:
            containers:
            - image: quay.io/mavazque/reversewords:latest
              name: reversewords
              resources:
                requests:
                  memory: 2Gi
      Copy to Clipboard Toggle word wrap
    2. workload-config.yaml 이라는 이름으로 파일을 저장합니다.
    3. 다음 명령을 입력하여 YAML을 적용합니다.

      $ oc apply -f workload-config.yaml
      Copy to Clipboard Toggle word wrap
  3. 다음 명령을 입력하여 admin-kubeconfig 시크릿을 추출합니다.

    $ oc extract -n <hosted_cluster_namespace> \
      secret/<hosted_cluster_name>-admin-kubeconfig \
      --to=./hostedcluster-secrets --confirm
    Copy to Clipboard Toggle word wrap

    출력 예

    hostedcluster-secrets/kubeconfig
    Copy to Clipboard Toggle word wrap

  4. 다음 명령을 입력하여 새 노드가 Ready 상태에 있는지 확인할 수 있습니다.

    $ oc --kubeconfig ./hostedcluster-secrets get nodes
    Copy to Clipboard Toggle word wrap
  5. 노드를 제거하려면 다음 명령을 입력하여 워크로드를 삭제합니다.

    $ oc --kubeconfig ./hostedcluster-secrets -n <namespace> \
      delete deployment <deployment_name>
    Copy to Clipboard Toggle word wrap
  6. 추가 용량을 요구하지 않고 몇 분 정도 경과할 때까지 기다립니다. 다음 명령을 입력하여 노드가 제거되었는지 확인할 수 있습니다.

    $ oc --kubeconfig ./hostedcluster-secrets get nodes
    Copy to Clipboard Toggle word wrap

5.6.3. 가용성 영역에 대한 노드 풀 구성

여러 RHOSP(Red Hat OpenStack Platform) Nova 가용성 영역에 노드 풀을 배포하여 호스팅된 클러스터의 고가용성을 개선할 수 있습니다.

참고

가용성 영역은 내결함성 도메인에 반드시 해당하지 않으며 기본적으로 고가용성 이점을 제공하지 않습니다.

사전 요구 사항

  • 호스팅된 클러스터를 생성하셨습니다.
  • 관리 클러스터에 액세스할 수 있습니다.
  • hcpoc CLI가 설치됩니다.

프로세스

  1. 필요에 적합한 환경 변수를 설정합니다. 예를 들어 az1 가용성 영역에 두 개의 추가 시스템을 생성하려면 다음을 입력합니다.

    $ export NODEPOOL_NAME="${CLUSTER_NAME}-az1" \
      && export WORKER_COUNT="2" \
      && export FLAVOR="m1.xlarge" \
      && export AZ="az1"
    Copy to Clipboard Toggle word wrap
  2. 다음 명령을 입력하여 환경 변수를 사용하여 노드 풀을 생성합니다.

    $ hcp create nodepool openstack \
      --cluster-name <cluster_name> \
      --name $NODEPOOL_NAME \
      --replicas $WORKER_COUNT \
      --openstack-node-flavor $FLAVOR \
      --openstack-node-availability-zone $AZ
    Copy to Clipboard Toggle word wrap

    다음과 같습니다.

    <cluster_name>
    호스팅된 클러스터의 이름을 지정합니다.
  3. 다음 명령을 실행하여 클러스터 네임스페이스에 nodepool 리소스를 나열하여 노드 풀의 상태를 확인합니다.

    $ oc get nodepools --namespace clusters
    Copy to Clipboard Toggle word wrap

    출력 예

    NAME                      CLUSTER         DESIRED NODES   CURRENT NODES   AUTOSCALING   AUTOREPAIR   VERSION   UPDATINGVERSION   UPDATINGCONFIG   MESSAGE
    example                   example         5               5               False         False        4.17.0
    example-az1               example         2                               False         False                  True              True             Minimum availability requires 2 replicas, current 0 available
    Copy to Clipboard Toggle word wrap

  4. 다음 명령을 실행하여 호스팅 클러스터에서 시작될 때 노트를 확인합니다.

    $ oc --kubeconfig $CLUSTER_NAME-kubeconfig get nodes
    Copy to Clipboard Toggle word wrap

    출력 예

    NAME                      STATUS   ROLES    AGE     VERSION
    ...
    example-extra-az-zh9l5    Ready    worker   2m6s    v1.27.4+18eadca
    example-extra-az-zr8mj    Ready    worker   102s    v1.27.4+18eadca
    ...
    Copy to Clipboard Toggle word wrap

  5. 다음 명령을 실행하여 노드 풀이 생성되었는지 확인합니다.

    $ oc get nodepools --namespace clusters
    Copy to Clipboard Toggle word wrap

    출력 예

    NAME              CLUSTER         DESIRED   CURRENT   AVAILABLE   PROGRESSING   MESSAGE
    <node_pool_name>  <cluster_name>  2         2         2           False         All replicas are available
    Copy to Clipboard Toggle word wrap

5.6.4. 노드 풀에 대한 추가 포트 구성

SR-IOV 또는 여러 네트워크와 같은 고급 네트워킹 시나리오를 지원하도록 노드 풀에 대한 추가 포트를 구성할 수 있습니다.

5.6.4.1. 노드 풀의 추가 포트 사용 사례

노드 풀에 대한 추가 포트를 구성하는 일반적인 이유는 다음과 같습니다.

SR-IOV(Single Root I/O Virtualization)
물리적 네트워크 장치가 여러 VF(가상 기능)로 표시될 수 있습니다. 워크로드는 노드 풀에 추가 포트를 연결하여 SR-IOV 인터페이스를 사용하여 대기 시간이 짧은 고성능 네트워킹을 수행할 수 있습니다.
DPDK(데이터 플레인 개발 키트)
커널을 우회하여 사용자 공간에서 빠른 패킷 처리를 제공합니다. 추가 포트가 있는 노드 풀은 DPDK를 사용하여 네트워크 성능을 개선하는 워크로드에 대한 인터페이스를 노출할 수 있습니다.
NFS의 Manila RWX 볼륨
NFS를 통해 RWX( ReadWriteMany ) 볼륨을 지원하므로 여러 노드가 공유 스토리지에 액세스할 수 있습니다. 노드 풀에 포트를 더 연결하면 워크로드가 Manila에서 사용하는 NFS 네트워크에 연결할 수 있습니다.
Multus CNI
Pod가 여러 네트워크 인터페이스에 연결할 수 있습니다. 추가 포트가 있는 노드 풀은 듀얼 스택 연결 및 트래픽 분리를 포함하여 보조 네트워크 인터페이스가 필요한 사용 사례를 지원합니다.

5.6.4.2. 노드 풀의 추가 포트 옵션

--openstack-node-additional-port 플래그를 사용하여 OpenStack의 호스팅 클러스터의 노드에 추가 포트를 연결할 수 있습니다. 플래그에는 쉼표로 구분된 매개변수 목록이 사용됩니다. 매개변수를 여러 번 사용하여 여러 추가 포트를 노드에 연결할 수 있습니다.

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

Expand
매개변수설명필수 항목기본

network-id

노드에 연결할 네트워크의 ID입니다.

제공됨

해당 없음

vnic-type

포트에 사용할 VNIC 유형입니다. 지정하지 않으면 Neutron에서 기본 유형 normal 을 사용합니다.

없음

해당 없음

disable-port-security

포트에 대한 포트 보안을 비활성화할지 여부입니다. 지정하지 않으면 Neutron은 네트워크 수준에서 명시적으로 비활성화되지 않는 한 포트 보안을 활성화합니다.

없음

해당 없음

address-pairs

포트에 할당할 IP 주소 쌍 목록입니다. 형식은 ip_address=mac_address 입니다. 하이픈(-)으로 구분된 여러 쌍을 제공할 수 있습니다. mac_address 부분은 선택 사항입니다.

없음

해당 없음

5.6.4.3. 노드 풀에 대한 추가 포트 생성

RHOSP(Red Hat OpenStack Platform)에서 실행되는 호스팅된 클러스터에 대한 노드 풀에 대한 추가 포트를 구성할 수 있습니다.

사전 요구 사항

  • 호스팅된 클러스터를 생성하셨습니다.
  • 관리 클러스터에 액세스할 수 있습니다.
  • hcp CLI가 설치되어 있습니다.
  • RHOSP에서 추가 네트워크가 생성됩니다.
  • 호스트 클러스터에서 사용하는 프로젝트는 추가 네트워크에 액세스할 수 있어야 합니다.
  • "노드 풀의 추가 포트 옵션"에 나열된 옵션을 검토했습니다.

프로세스

  • hcp create nodepool openstack 명령을 --openstack-node-additional-port 옵션으로 실행하여 추가 포트가 연결된 호스팅 클러스터를 생성합니다. 예를 들면 다음과 같습니다.

    $ hcp create nodepool openstack \
      --cluster-name <cluster_name> \
      --name <nodepool_name> \
      --replicas <replica_count> \
      --openstack-node-flavor <flavor> \
      --openstack-node-additional-port "network-id=<sriov_net_id>,vnic-type=direct,disable-port-security=true" \
      --openstack-node-additional-port "network-id=<lb_net_id>,address-pairs:192.168.0.1-192.168.0.2"
    Copy to Clipboard Toggle word wrap

    다음과 같습니다.

    <cluster_name>
    호스팅된 클러스터의 이름을 지정합니다.
    <nodepool_name>
    노드 풀의 이름을 지정합니다.
    <replica_count>
    원하는 복제본 수를 지정합니다.
    <flavor>
    사용할 RHOSP 플레이버를 지정합니다.
    <sriov_net_id>
    SR-IOV 네트워크 ID를 지정합니다.
    <lb_net_id>
    로드 밸런서 네트워크 ID를 지정합니다.

5.6.5. 노드 풀에 대한 추가 포트 구성

클라우드 네이티브 네트워크 기능(CNF)과 같은 고성능 워크로드를 위해 RHOSP에서 호스팅된 클러스터 노드 성능을 조정할 수 있습니다. 성능 튜닝에는 RHOSP 리소스 구성, 성능 프로필 생성, tuned NodePool 리소스 배포, SR-IOV 장치 지원 활성화가 포함됩니다.

CNF는 클라우드 네이티브 환경에서 실행되도록 설계되었습니다. 라우팅, 방화벽, 로드 밸런싱과 같은 네트워크 서비스를 제공할 수 있습니다. 고성능 컴퓨팅 및 네트워킹 장치를 사용하여 CNF를 실행하도록 노드 풀을 구성할 수 있습니다.

5.6.5.1. 호스트 클러스터 노드의 성능 튜닝

성능 프로필을 생성하고 tuned NodePool 리소스를 배포하여 RHOSP(Red Hat OpenStack Platform) 호스팅 컨트롤 플레인에서 고성능 워크로드를 실행합니다.

사전 요구 사항

  • 전용 CPU, 메모리 및 호스트 집계 정보를 포함하여 워크로드를 실행하는 데 필요한 리소스가 있는 RHOSP 플레이버가 있습니다.
  • SR-IOV 또는 DPDK 가능 NIC에 연결된 RHOSP 네트워크가 있습니다. 이 네트워크는 호스팅된 클러스터에서 사용하는 프로젝트에서 사용할 수 있어야 합니다.

프로세스

  1. perfprofile.yaml 이라는 파일에서 요구 사항을 충족하는 성능 프로필을 생성합니다. 예를 들면 다음과 같습니다.

    구성 맵의 성능 프로필 예

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: perfprof-1
      namespace: clusters
    data:
      tuning: |
        apiVersion: v1
        kind: ConfigMap
        metadata:
          name: cnf-performanceprofile
          namespace: "${HYPERSHIFT_NAMESPACE}"
        data:
          tuning: |
            apiVersion: performance.openshift.io/v2
            kind: PerformanceProfile
            metadata:
              name: cnf-performanceprofile
            spec:
              additionalKernelArgs:
                - nmi_watchdog=0
                - audit=0
                - mce=off
                - processor.max_cstate=1
                - idle=poll
                - intel_idle.max_cstate=0
                - amd_iommu=on
              cpu:
                isolated: "${CPU_ISOLATED}"
                reserved: "${CPU_RESERVED}"
              hugepages:
                defaultHugepagesSize: "1G"
                pages:
                  - count: ${HUGEPAGES}
                    node: 0
                    size: 1G
              nodeSelector:
                node-role.kubernetes.io/worker: ''
              realTimeKernel:
                enabled: false
              globallyDisableIrqLoadBalancing: true
    Copy to Clipboard Toggle word wrap

    중요

    HyperShift Operator 네임스페이스, 분리된 CPU 및 예약된 CPU에 대해 환경 변수가 설정되지 않은 경우 성능 프로필을 적용하기 전에 해당 변수를 생성합니다.

  2. 다음 명령을 실행하여 성능 프로필 구성을 적용합니다.

    $ oc apply -f perfprof.yaml
    Copy to Clipboard Toggle word wrap
  3. 클러스터 이름에 대해 CLUSTER_NAME 환경 변수가 설정되어 있지 않은 경우 이를 정의합니다.
  4. 다음 명령을 실행하여 노드 풀 이름 환경 변수를 설정합니다.

    $ export NODEPOOL_NAME=$CLUSTER_NAME-cnf
    Copy to Clipboard Toggle word wrap
  5. 다음 명령을 실행하여 플레이버 환경 변수를 설정합니다.

    $ export FLAVOR="m1.xlarge.nfv"
    Copy to Clipboard Toggle word wrap
  6. 다음 명령을 실행하여 성능 프로필을 사용하는 노드 풀을 생성합니다.

    $ hcp create nodepool openstack \
      --cluster-name $CLUSTER_NAME \
      --name $NODEPOOL_NAME \
      --node-count 0 \
      --openstack-node-flavor $FLAVOR
    Copy to Clipboard Toggle word wrap
  7. 다음 명령을 실행하여 노드 풀을 패치하여 PerformanceProfile 리소스를 참조합니다.

    $ oc patch nodepool -n ${HYPERSHIFT_NAMESPACE} ${CLUSTER_NAME} \
      -p '{"spec":{"tuningConfig":[{"name":"cnf-performanceprofile"}]}}' --type=merge
    Copy to Clipboard Toggle word wrap
  8. 다음 명령을 실행하여 노드 풀을 확장합니다.

    $ oc scale nodepool/$CLUSTER_NAME --namespace ${HYPERSHIFT_NAMESPACE} --replicas=1
    Copy to Clipboard Toggle word wrap
  9. 노드가 준비될 때까지 기다립니다.

    1. 다음 명령을 실행하여 노드가 준비될 때까지 기다립니다.

      $ oc wait --for=condition=UpdatingConfig=True nodepool \
        -n ${HYPERSHIFT_NAMESPACE} ${CLUSTER_NAME} \
        --timeout=5m
      Copy to Clipboard Toggle word wrap
    2. 다음 명령을 실행하여 구성 업데이트가 완료될 때까지 기다립니다.

      $ oc wait --for=condition=UpdatingConfig=False nodepool \
        -n ${HYPERSHIFT_NAMESPACE} ${CLUSTER_NAME} \
        --timeout=30m
      Copy to Clipboard Toggle word wrap
    3. 다음 명령을 실행하여 모든 노드가 정상 상태가 될 때까지 기다립니다.

      $ oc wait --for=condition=AllNodesHealthy nodepool \
        -n ${HYPERSHIFT_NAMESPACE} ${CLUSTER_NAME} \
        --timeout=5m
      Copy to Clipboard Toggle word wrap
참고

노드에 SSH를 연결하거나 oc debug 명령을 사용하여 성능 구성을 확인할 수 있습니다.

5.6.5.2. 호스트 클러스터에서 SR-IOV Network Operator 활성화

SR-IOV Network Operator를 활성화하여 NodePool 리소스에서 배포한 노드에서 SR-IOV 가능 장치를 관리할 수 있습니다. Operator는 호스팅 클러스터에서 실행되며 레이블이 지정된 작업자 노드가 필요합니다.

프로세스

  1. 다음 명령을 실행하여 호스팅된 클러스터에 대한 kubeconfig 파일을 생성합니다.

    $ hcp create kubeconfig --name $CLUSTER_NAME > $CLUSTER_NAME-kubeconfig
    Copy to Clipboard Toggle word wrap
  2. 다음 명령을 실행하여 kubeconfig 리소스 환경 변수를 생성합니다.

    $ export KUBECONFIG=$CLUSTER_NAME-kubeconfig
    Copy to Clipboard Toggle word wrap
  3. 다음 명령을 실행하여 SR-IOV 기능을 표시하도록 각 작업자 노드에 레이블을 지정합니다.

    $ oc label node <worker_node_name> feature.node.kubernetes.io/network-sriov.capable=true
    Copy to Clipboard Toggle word wrap

    다음과 같습니다.

    <worker_node_name>
    호스팅된 클러스터의 작업자 노드의 이름을 지정합니다.
  4. " SR-IOV Network Operator 설치"의 지침에 따라 호스팅된 클러스터에 SR-IOV Network Operator를 설치합니다.
  5. 설치 후 독립 실행형 클러스터와 동일한 프로세스를 사용하여 호스팅된 클러스터에서 SR-IOV 워크로드를 구성합니다.
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat