5.6. OpenStack에서 호스팅된 제어 평면 관리
Red Hat OpenStack Platform(RHOSP) 에이전트 머신에 호스팅된 제어 플레인을 배포한 후 다음 작업을 완료하여 호스팅된 클러스터를 관리할 수 있습니다.
5.6.1. 호스팅된 클러스터에 액세스 링크 복사링크가 클립보드에 복사되었습니다!
oc
CLI를 사용하여 리소스에서 직접 kubeconfig 비밀을 추출하여 Red Hat OpenStack Platform(RHOSP)에서 호스팅되는 클러스터에 액세스할 수 있습니다.
호스팅 클러스터(호스팅) 네임스페이스에는 호스팅 클러스터 리소스와 액세스 비밀이 포함되어 있습니다. 호스팅된 제어 평면 네임스페이스는 호스팅된 제어 평면이 실행되는 곳입니다.
비밀 이름 형식은 다음과 같습니다.
-
kubeconfig
비밀:<hosted_cluster_namespace>-<name>-admin-kubeconfig
. 예를 들어,clusters-hypershift-demo-admin-kubeconfig
. -
kubeadmin
비밀번호:<hosted_cluster_namespace>-<name>-kubeadmin-password
. 예를 들어,clusters-hypershift-demo-kubeadmin-password
.
kubeconfig
비밀에는 Base64로 인코딩된 kubeconfig
필드가 포함되어 있습니다. kubeadmin
비밀번호도 Base64로 인코딩되어 있습니다. 이를 추출한 후 비밀번호를 사용하여 호스팅된 클러스터의 API 서버나 콘솔에 로그인할 수 있습니다.
사전 요구 사항
-
oc
CLI가 설치되었습니다.
프로세스
다음 명령을 입력하여
admin-kubeconfig
비밀번호를 추출합니다.oc extract -n <hosted_cluster_namespace> \ secret/<hosted_cluster_name>-admin-kubeconfig \ --to=./hostedcluster-secrets --confirm
$ oc extract -n <hosted_cluster_namespace> \ secret/<hosted_cluster_name>-admin-kubeconfig \ --to=./hostedcluster-secrets --confirm
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
hostedcluster-secrets/kubeconfig
hostedcluster-secrets/kubeconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 입력하여 호스팅된 클러스터의 노드 목록을 보고 액세스를 확인하세요.
oc --kubeconfig ./hostedcluster-secrets/kubeconfig get nodes
$ oc --kubeconfig ./hostedcluster-secrets/kubeconfig get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.6.2. 호스팅된 클러스터에 대한 노드 자동 크기 조정 활성화 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenStack Platform(RHOSP)에서 호스팅되는 클러스터에 더 많은 용량이 필요하고 예비 에이전트를 사용할 수 있는 경우 자동 크기 조정을 활성화하여 새로운 워커 노드를 설치할 수 있습니다.
프로세스
자동 크기 조정을 활성화하려면 다음 명령을 입력하세요.
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 }}]'
$ 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 Copied! Toggle word wrap Toggle overflow 새로운 노드가 필요한 작업 부하를 만듭니다.
다음 예를 사용하여 워크로드 구성을 포함하는 YAML 파일을 만듭니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
workload-config.yaml
이라는 이름으로 파일을 저장합니다. 다음 명령을 입력하여 YAML을 적용합니다.
oc apply -f workload-config.yaml
$ oc apply -f workload-config.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
다음 명령을 입력하여
admin-kubeconfig
비밀번호를 추출합니다.oc extract -n <hosted_cluster_namespace> \ secret/<hosted_cluster_name>-admin-kubeconfig \ --to=./hostedcluster-secrets --confirm
$ oc extract -n <hosted_cluster_namespace> \ secret/<hosted_cluster_name>-admin-kubeconfig \ --to=./hostedcluster-secrets --confirm
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
hostedcluster-secrets/kubeconfig
hostedcluster-secrets/kubeconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 입력하여 새 노드가
준비
상태인지 확인할 수 있습니다.oc --kubeconfig ./hostedcluster-secrets get nodes
$ oc --kubeconfig ./hostedcluster-secrets get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 노드를 제거하려면 다음 명령을 입력하여 작업 부하를 삭제하세요.
oc --kubeconfig ./hostedcluster-secrets -n <namespace> \ delete deployment <deployment_name>
$ oc --kubeconfig ./hostedcluster-secrets -n <namespace> \ delete deployment <deployment_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 추가 용량이 필요하지 않을 때까지 몇 분간 기다리세요. 다음 명령을 입력하면 노드가 제거되었는지 확인할 수 있습니다.
oc --kubeconfig ./hostedcluster-secrets get nodes
$ oc --kubeconfig ./hostedcluster-secrets get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.6.3. 가용성 영역에 대한 노드 풀 구성 링크 복사링크가 클립보드에 복사되었습니다!
여러 Red Hat OpenStack Platform(RHOSP) Nova 가용성 영역에 노드 풀을 분산하여 호스팅 클러스터의 고가용성을 개선할 수 있습니다.
가용성 영역은 반드시 장애 도메인과 일치하지 않으며 본질적으로 높은 가용성 이점을 제공하지 않습니다.
사전 요구 사항
- 호스팅된 클러스터를 생성했습니다.
- 관리 클러스터에 액세스할 수 있습니다.
-
hcp
및oc
CLI가 설치되었습니다.
프로세스
사용자의 필요에 맞는 환경 변수를 설정하세요. 예를 들어,
az1
가용성 영역에 두 대의 추가 머신을 생성하려면 다음을 입력할 수 있습니다.export NODEPOOL_NAME="${CLUSTER_NAME}-az1" \ && export WORKER_COUNT="2" \ && export FLAVOR="m1.xlarge" \ && export AZ="az1"
$ export NODEPOOL_NAME="${CLUSTER_NAME}-az1" \ && export WORKER_COUNT="2" \ && export FLAVOR="m1.xlarge" \ && export AZ="az1"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 입력하여 환경 변수를 사용하여 노드 풀을 만듭니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음과 같습니다.
<cluster_name>
- 호스팅된 클러스터의 이름을 지정합니다.
다음 명령을 실행하여 클러스터 네임스페이스의
노드 풀
리소스를 나열하여 노드 풀의 상태를 확인하세요.oc get nodepools --namespace clusters
$ oc get nodepools --namespace clusters
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
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
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 Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 호스팅된 클러스터에서 시작되는 메모를 확인하세요.
oc --kubeconfig $CLUSTER_NAME-kubeconfig get nodes
$ oc --kubeconfig $CLUSTER_NAME-kubeconfig get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
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 ...
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 Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 노드 풀이 생성되었는지 확인하세요.
oc get nodepools --namespace clusters
$ oc get nodepools --namespace clusters
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME CLUSTER DESIRED CURRENT AVAILABLE PROGRESSING MESSAGE <node_pool_name> <cluster_name> 2 2 2 False All replicas are available
NAME CLUSTER DESIRED CURRENT AVAILABLE PROGRESSING MESSAGE <node_pool_name> <cluster_name> 2 2 2 False All replicas are available
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.6.4. 노드 풀에 대한 추가 포트 구성 링크 복사링크가 클립보드에 복사되었습니다!
SR-IOV나 여러 네트워크와 같은 고급 네트워킹 시나리오를 지원하기 위해 노드 풀에 대한 추가 포트를 구성할 수 있습니다.
5.6.4.1. 노드 풀에 대한 추가 포트 사용 사례 링크 복사링크가 클립보드에 복사되었습니다!
노드 풀에 추가 포트를 구성하는 일반적인 이유는 다음과 같습니다.
- SR-IOV(단일 루트 I/O 가상화)
- 물리적 네트워크 장치가 여러 개의 가상 기능(VF)으로 나타나도록 합니다. 노드 풀에 추가 포트를 연결하면 워크로드에서 SR-IOV 인터페이스를 사용하여 지연 시간이 짧고 성능이 뛰어난 네트워킹을 구현할 수 있습니다.
- DPDK(데이터 플레인 개발 키트)
- 커널을 우회하여 사용자 공간에서 빠른 패킷 처리를 제공합니다. 추가 포트가 있는 노드 풀은 DPDK를 사용하여 네트워크 성능을 개선하는 워크로드에 대한 인터페이스를 노출할 수 있습니다.
- NFS의 마닐라 RWX 볼륨
-
NFS를 통한
ReadWriteMany
(RWX) 볼륨을 지원하여 여러 노드가 공유 스토리지에 액세스할 수 있습니다. 노드 풀에 추가 포트를 연결하면 마닐라에서 사용하는 NFS 네트워크에 워크로드가 도달할 수 있습니다. - 멀투스 CNI
- 여러 네트워크 인터페이스에 포드를 연결할 수 있습니다. 추가 포트가 있는 노드 풀은 듀얼 스택 연결 및 트래픽 분리를 포함하여 보조 네트워크 인터페이스가 필요한 사용 사례를 지원합니다.
5.6.4.2. 노드 풀에 대한 추가 포트 옵션 링크 복사링크가 클립보드에 복사되었습니다!
--openstack-node-additional-port
플래그를 사용하면 OpenStack에서 호스팅된 클러스터의 노드에 추가 포트를 연결할 수 있습니다. 플래그는 쉼표로 구분된 매개변수 목록을 사용합니다. 매개변수를 여러 번 사용하여 여러 개의 추가 포트를 노드에 연결할 수 있습니다.
매개변수는 다음과 같습니다.
매개변수 | 설명 | 필수 항목 | 기본 |
---|---|---|---|
| 노드에 연결할 네트워크의 ID입니다. | 제공됨 | 해당 없음 |
|
포트에 사용할 VNIC 유형입니다. 지정하지 않으면 Neutron은 기본 유형 | 없음 | 해당 없음 |
| 포트에 대한 포트 보안을 비활성화할지 여부입니다. 지정하지 않으면 Neutron은 네트워크 수준에서 명시적으로 비활성화하지 않는 한 포트 보안을 활성화합니다. | 없음 | 해당 없음 |
|
포트에 할당할 IP 주소 쌍 목록입니다. 형식은 | 없음 | 해당 없음 |
5.6.4.3. 노드 풀에 대한 추가 포트 생성 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenStack Platform(RHOSP)에서 실행되는 호스팅 클러스터의 노드 풀에 대한 추가 포트를 구성할 수 있습니다.
사전 요구 사항
- 호스팅된 클러스터를 생성했습니다.
- 관리 클러스터에 액세스할 수 있습니다.
-
hcp
CLI가 설치되었습니다. - RHOSP에서 추가 네트워크가 생성됩니다.
- 호스팅된 클러스터에서 사용되는 프로젝트는 추가 네트워크에 액세스할 수 있어야 합니다.
- "노드 풀에 대한 추가 포트 옵션"에 나열된 옵션을 검토했습니다.
프로세스
--openstack-node-additional-port
옵션과 함께hcp create nodepool openstack
명령을 실행하여 추가 포트가 연결된 호스팅 클러스터를 만듭니다. 예를 들면 다음과 같습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음과 같습니다.
<cluster_name>
- 호스팅된 클러스터의 이름을 지정합니다.
<nodepool_name>
- 노드 풀의 이름을 지정합니다.
<replica_count>
- 원하는 복제본 수를 지정합니다.
<flavor>
- 사용할 RHOSP 플레이버를 지정합니다.
<sriov_net_id>
- SR-IOV 네트워크 ID를 지정합니다.
<lb_net_id>
- 로드 밸런서 네트워크 ID를 지정합니다.
5.6.5. 노드 풀에 대한 추가 포트 구성 링크 복사링크가 클립보드에 복사되었습니다!
클라우드 기반 네트워크 기능(CNF)과 같은 고성능 워크로드를 위해 RHOSP에서 호스팅된 클러스터 노드 성능을 조정할 수 있습니다. 성능 튜닝에는 RHOSP 리소스 구성, 성능 프로필 생성, 튜닝된 NodePool
리소스 배포, SR-IOV 장치 지원 활성화가 포함됩니다.
CNF는 클라우드 기반 환경에서 실행되도록 설계되었습니다. 라우팅, 방화벽, 부하 분산 등의 네트워크 서비스를 제공할 수 있습니다. 고성능 컴퓨팅 및 네트워킹 장치를 사용하여 CNF를 실행하도록 노드 풀을 구성할 수 있습니다.
5.6.5.1. 호스팅된 클러스터 노드의 성능 조정 링크 복사링크가 클립보드에 복사되었습니다!
성능 프로필을 만들고 조정된 NodePool
리소스를 배포하여 Red Hat OpenStack Platform(RHOSP) 호스팅 제어 평면에서 고성능 워크로드를 실행합니다.
사전 요구 사항
- 전용 CPU, 메모리, 호스트 집계 정보 등 워크로드를 실행하는 데 필요한 리소스를 갖춘 RHOSP 플레이버가 있습니다.
- SR-IOV 또는 DPDK 지원 NIC에 연결된 RHOSP 네트워크가 있습니다. 네트워크는 호스팅된 클러스터에서 사용하는 프로젝트에서 사용할 수 있어야 합니다.
프로세스
perfprofile.yaml
이라는 파일에 요구 사항을 충족하는 성능 프로필을 만듭니다. 예를 들면 다음과 같습니다.구성 맵의 성능 프로필 예시
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 중요HyperShift Operator 네임스페이스, 격리되고 예약된 CPU, 대규모 페이지 수에 대한 환경 변수가 아직 설정되지 않은 경우 성능 프로필을 적용하기 전에 이를 만듭니다.
다음 명령을 실행하여 성능 프로필 구성을 적용합니다.
oc apply -f perfprof.yaml
$ oc apply -f perfprof.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
클러스터 이름에 대한
CLUSTER_NAME
환경 변수가 아직 설정되어 있지 않으면 해당 변수를 정의합니다. 다음 명령을 실행하여 노드 풀 이름 환경 변수를 설정합니다.
export NODEPOOL_NAME=$CLUSTER_NAME-cnf
$ export NODEPOOL_NAME=$CLUSTER_NAME-cnf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 플레이버 환경 변수를 설정합니다.
export FLAVOR="m1.xlarge.nfv"
$ export FLAVOR="m1.xlarge.nfv"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 성능 프로필을 사용하는 노드 풀을 만듭니다.
hcp create nodepool openstack \ --cluster-name $CLUSTER_NAME \ --name $NODEPOOL_NAME \ --node-count 0 \ --openstack-node-flavor $FLAVOR
$ hcp create nodepool openstack \ --cluster-name $CLUSTER_NAME \ --name $NODEPOOL_NAME \ --node-count 0 \ --openstack-node-flavor $FLAVOR
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
PerformanceProfile
리소스를 참조하도록 노드 풀에 패치를 적용합니다.oc patch nodepool -n ${HYPERSHIFT_NAMESPACE} ${CLUSTER_NAME} \ -p '{"spec":{"tuningConfig":[{"name":"cnf-performanceprofile"}]}}' --type=merge
$ oc patch nodepool -n ${HYPERSHIFT_NAMESPACE} ${CLUSTER_NAME} \ -p '{"spec":{"tuningConfig":[{"name":"cnf-performanceprofile"}]}}' --type=merge
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 노드 풀을 확장합니다.
oc scale nodepool/$CLUSTER_NAME --namespace ${HYPERSHIFT_NAMESPACE} --replicas=1
$ oc scale nodepool/$CLUSTER_NAME --namespace ${HYPERSHIFT_NAMESPACE} --replicas=1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 노드가 준비될 때까지 기다리세요.
다음 명령을 실행하여 노드가 준비될 때까지 기다리세요.
oc wait --for=condition=UpdatingConfig=True nodepool \ -n ${HYPERSHIFT_NAMESPACE} ${CLUSTER_NAME} \ --timeout=5m
$ oc wait --for=condition=UpdatingConfig=True nodepool \ -n ${HYPERSHIFT_NAMESPACE} ${CLUSTER_NAME} \ --timeout=5m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 구성 업데이트가 완료될 때까지 기다리세요.
oc wait --for=condition=UpdatingConfig=False nodepool \ -n ${HYPERSHIFT_NAMESPACE} ${CLUSTER_NAME} \ --timeout=30m
$ oc wait --for=condition=UpdatingConfig=False nodepool \ -n ${HYPERSHIFT_NAMESPACE} ${CLUSTER_NAME} \ --timeout=30m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 모든 노드가 정상화될 때까지 기다리세요.
oc wait --for=condition=AllNodesHealthy nodepool \ -n ${HYPERSHIFT_NAMESPACE} ${CLUSTER_NAME} \ --timeout=5m
$ oc wait --for=condition=AllNodesHealthy nodepool \ -n ${HYPERSHIFT_NAMESPACE} ${CLUSTER_NAME} \ --timeout=5m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
노드에 SSH 연결을 만들거나 oc debug
명령을 사용하여 성능 구성을 확인할 수 있습니다.
5.6.5.2. 호스팅된 클러스터에서 SR-IOV 네트워크 운영자 활성화 링크 복사링크가 클립보드에 복사되었습니다!
SR-IOV 네트워크 운영자가 NodePool
리소스에 의해 배포된 노드에서 SR-IOV 지원 장치를 관리하도록 설정할 수 있습니다. 운영자는 호스팅된 클러스터에서 실행되며 레이블이 지정된 작업자 노드가 필요합니다.
프로세스
다음 명령을 실행하여 호스팅된 클러스터에 대한
kubeconfig
파일을 생성합니다.hcp create kubeconfig --name $CLUSTER_NAME > $CLUSTER_NAME-kubeconfig
$ hcp create kubeconfig --name $CLUSTER_NAME > $CLUSTER_NAME-kubeconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
kubeconfig
리소스 환경 변수를 만듭니다.export KUBECONFIG=$CLUSTER_NAME-kubeconfig
$ export KUBECONFIG=$CLUSTER_NAME-kubeconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 SR-IOV 기능을 나타내도록 각 작업자 노드에 레이블을 지정합니다.
oc label node <worker_node_name> feature.node.kubernetes.io/network-sriov.capable=true
$ oc label node <worker_node_name> feature.node.kubernetes.io/network-sriov.capable=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음과 같습니다.
<worker_node_name>
- 호스팅된 클러스터의 워커 노드 이름을 지정합니다.
- "SR-IOV 네트워크 운영자 설치"의 지침에 따라 호스팅된 클러스터에 SR-IOV 네트워크 운영자를 설치합니다.
- 설치 후 독립 실행형 클러스터와 동일한 프로세스를 사용하여 호스팅된 클러스터에서 SR-IOV 워크로드를 구성합니다.