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가 설치되어 있습니다.
프로세스
다음 명령을 입력하여
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. 호스트 클러스터의 노드 자동 확장 활성화 링크 복사링크가 클립보드에 복사되었습니다!
RHOSP(Red Hat OpenStack Platform)의 호스팅 클러스터에 더 많은 용량이 필요하고 예비 에이전트를 사용할 수 있는 경우 자동 확장을 활성화하여 새 작업자 노드를 설치할 수 있습니다.
프로세스
자동 확장을 활성화하려면 다음 명령을 입력합니다.
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 다음 명령을 입력하여 새 노드가
Ready
상태에 있는지 확인할 수 있습니다.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. 가용성 영역에 대한 노드 풀 구성 링크 복사링크가 클립보드에 복사되었습니다!
여러 RHOSP(Red Hat OpenStack Platform) 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>
- 호스팅된 클러스터의 이름을 지정합니다.
다음 명령을 실행하여 클러스터 네임스페이스에
nodepool
리소스를 나열하여 노드 풀의 상태를 확인합니다.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(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의 호스팅 클러스터의 노드에 추가 포트를 연결할 수 있습니다. 플래그에는 쉼표로 구분된 매개변수 목록이 사용됩니다. 매개변수를 여러 번 사용하여 여러 추가 포트를 노드에 연결할 수 있습니다.
매개변수는 다음과 같습니다.
매개변수 | 설명 | 필수 항목 | 기본 |
---|---|---|---|
| 노드에 연결할 네트워크의 ID입니다. | 제공됨 | 해당 없음 |
|
포트에 사용할 VNIC 유형입니다. 지정하지 않으면 Neutron에서 기본 유형 | 없음 | 해당 없음 |
| 포트에 대한 포트 보안을 비활성화할지 여부입니다. 지정하지 않으면 Neutron은 네트워크 수준에서 명시적으로 비활성화되지 않는 한 포트 보안을 활성화합니다. | 없음 | 해당 없음 |
|
포트에 할당할 IP 주소 쌍 목록입니다. 형식은 | 없음 | 해당 없음 |
5.6.4.3. 노드 풀에 대한 추가 포트 생성 링크 복사링크가 클립보드에 복사되었습니다!
RHOSP(Red Hat OpenStack Platform)에서 실행되는 호스팅된 클러스터에 대한 노드 풀에 대한 추가 포트를 구성할 수 있습니다.
사전 요구 사항
- 호스팅된 클러스터를 생성하셨습니다.
- 관리 클러스터에 액세스할 수 있습니다.
-
hcp
CLI가 설치되어 있습니다. - RHOSP에서 추가 네트워크가 생성됩니다.
- 호스트 클러스터에서 사용하는 프로젝트는 추가 네트워크에 액세스할 수 있어야 합니다.
- "노드 풀의 추가 포트 옵션"에 나열된 옵션을 검토했습니다.
프로세스
hcp create nodepool openstack
명령을--openstack-node-additional-port
옵션으로 실행하여 추가 포트가 연결된 호스팅 클러스터를 생성합니다. 예를 들면 다음과 같습니다.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 리소스 구성, 성능 프로필 생성, tuned NodePool
리소스 배포, SR-IOV 장치 지원 활성화가 포함됩니다.
CNF는 클라우드 네이티브 환경에서 실행되도록 설계되었습니다. 라우팅, 방화벽, 로드 밸런싱과 같은 네트워크 서비스를 제공할 수 있습니다. 고성능 컴퓨팅 및 네트워킹 장치를 사용하여 CNF를 실행하도록 노드 풀을 구성할 수 있습니다.
5.6.5.1. 호스트 클러스터 노드의 성능 튜닝 링크 복사링크가 클립보드에 복사되었습니다!
성능 프로필을 생성하고 tuned NodePool
리소스를 배포하여 RHOSP(Red Hat OpenStack Platform) 호스팅 컨트롤 플레인에서 고성능 워크로드를 실행합니다.
사전 요구 사항
- 전용 CPU, 메모리 및 호스트 집계 정보를 포함하여 워크로드를 실행하는 데 필요한 리소스가 있는 RHOSP 플레이버가 있습니다.
- SR-IOV 또는 DPDK 가능 NIC에 연결된 RHOSP 네트워크가 있습니다. 이 네트워크는 호스팅된 클러스터에서 사용하는 프로젝트에서 사용할 수 있어야 합니다.
프로세스
perfprofile.yaml
이라는 파일에서 요구 사항을 충족하는 성능 프로필을 생성합니다. 예를 들면 다음과 같습니다.구성 맵의 성능 프로필 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 중요HyperShift Operator 네임스페이스, 분리된 CPU 및 예약된 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 Network Operator 활성화 링크 복사링크가 클립보드에 복사되었습니다!
SR-IOV Network Operator를 활성화하여 NodePool
리소스에서 배포한 노드에서 SR-IOV 가능 장치를 관리할 수 있습니다. Operator는 호스팅 클러스터에서 실행되며 레이블이 지정된 작업자 노드가 필요합니다.
프로세스
다음 명령을 실행하여 호스팅된 클러스터에 대한
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 Network Operator 설치"의 지침에 따라 호스팅된 클러스터에 SR-IOV Network Operator를 설치합니다.
- 설치 후 독립 실행형 클러스터와 동일한 프로세스를 사용하여 호스팅된 클러스터에서 SR-IOV 워크로드를 구성합니다.