5.3. OpenShift Virtualization에서 호스팅된 제어 평면 관리
OpenShift Virtualization에 호스팅된 클러스터를 배포한 후 다음 절차를 완료하여 클러스터를 관리할 수 있습니다.
5.3.1. 호스팅된 클러스터에 액세스 링크 복사링크가 클립보드에 복사되었습니다!
호스팅된 클러스터에 액세스하려면 리소스에서 직접 kubeconfig 파일과 kubeadmin 자격 증명을 가져오거나 hcp 명령줄 인터페이스를 사용하여 kubeconfig 파일을 생성하면 됩니다.
사전 요구 사항
리소스에서 직접 kubeconfig 파일과 자격 증명을 가져와 호스팅된 클러스터에 액세스하려면 호스팅된 클러스터의 액세스 비밀을 알고 있어야 합니다. 호스팅 클러스터(호스팅) 네임스페이스에는 호스팅 클러스터 리소스와 액세스 비밀이 포함되어 있습니다. 호스팅된 제어 평면 네임스페이스는 호스팅된 제어 평면이 실행되는 곳입니다.
비밀 이름 형식은 다음과 같습니다.
-
kubeconfig비밀:<hosted_cluster_namespace>-<name>-admin-kubeconfig(클러스터-hypershift-demo-admin-kubeconfig) -
kubeadmin비밀번호:<hosted_cluster_namespace>-<name>-kubeadmin-password(클러스터-hypershift-demo-kubeadmin-password)
kubeconfig 비밀에는 Base64로 인코딩된 kubeconfig 필드가 포함되어 있으며, 이를 디코딩하여 다음 명령으로 파일에 저장하여 사용할 수 있습니다.
oc --kubeconfig <hosted_cluster_name>.kubeconfig get nodes
$ oc --kubeconfig <hosted_cluster_name>.kubeconfig get nodes
kubeadmin 비밀번호도 Base64로 인코딩되었습니다. 이를 디코딩하고 비밀번호를 사용하여 호스팅된 클러스터의 API 서버나 콘솔에 로그인할 수 있습니다.
프로세스
hcpCLI를 사용하여kubeconfig파일을 생성하여 호스팅된 클러스터에 액세스하려면 다음 단계를 따르세요.다음 명령을 입력하여
kubeconfig파일을 생성합니다.hcp create kubeconfig --namespace <hosted_cluster_namespace> \ --name <hosted_cluster_name> > <hosted_cluster_name>.kubeconfig
$ hcp create kubeconfig --namespace <hosted_cluster_namespace> \ --name <hosted_cluster_name> > <hosted_cluster_name>.kubeconfigCopy to Clipboard Copied! Toggle word wrap Toggle overflow kubeconfig파일을 저장한 후 다음 예제 명령을 입력하여 호스팅된 클러스터에 액세스할 수 있습니다.oc --kubeconfig <hosted_cluster_name>.kubeconfig get nodes
$ oc --kubeconfig <hosted_cluster_name>.kubeconfig get nodesCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3.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 }}]'$ 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 참고이 예에서 노드의 최소 개수는 2개이고, 최대 개수는 5개입니다. 추가할 수 있는 노드의 최대 수는 플랫폼에 따라 제한될 수 있습니다. 예를 들어, Agent 플랫폼을 사용하는 경우 최대 노드 수는 사용 가능한 Agent 수에 따라 제한됩니다.
새로운 노드가 필요한 작업 부하를 만듭니다.
다음 예를 사용하여 워크로드 구성을 포함하는 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.yamlCopy 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 --confirmCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
hostedcluster-secrets/kubeconfig
hostedcluster-secrets/kubeconfigCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 입력하여 새 노드가
준비상태인지 확인할 수 있습니다.oc --kubeconfig ./hostedcluster-secrets get nodes
$ oc --kubeconfig ./hostedcluster-secrets get nodesCopy 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 추가 용량이 필요하지 않을 때까지 몇 분간 기다리세요. Agent 플랫폼에서는 Agent가 폐기되고 재사용될 수 있습니다. 다음 명령을 입력하면 노드가 제거되었는지 확인할 수 있습니다.
oc --kubeconfig ./hostedcluster-secrets get nodes
$ oc --kubeconfig ./hostedcluster-secrets get nodesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 참고IBM Z® 에이전트의 경우 PR/SM(Processor Resource/Systems Manager) 모드에서 OSA 네트워크 장치를 사용하는 경우 자동 크기 조정이 지원되지 않습니다. 축소 프로세스 중에 새 에이전트가 합류하므로 기존 에이전트를 수동으로 삭제하고 노드 풀을 확장해야 합니다.
5.3.3. OpenShift Virtualization에서 호스팅된 제어 평면에 대한 스토리지 구성 링크 복사링크가 클립보드에 복사되었습니다!
고급 스토리지 구성을 제공하지 않으면 KubeVirt 가상 머신(VM) 이미지, KubeVirt 컨테이너 스토리지 인터페이스(CSI) 매핑 및 etcd 볼륨에 기본 스토리지 클래스가 사용됩니다.
다음 표는 호스팅 클러스터에서 영구 저장소를 지원하기 위해 인프라가 제공해야 하는 기능을 나열합니다.
| 인프라 CSI 제공업체 | 호스팅 클러스터 CSI 공급자 | 호스팅 클러스터 기능 |
|---|---|---|
|
모든 RWX |
|
|
|
모든 RWX | Red Hat OpenShift Data Foundation |
Red Hat OpenShift Data Foundation 기능 세트. 외부 모드는 차지하는 공간이 더 작고 독립형 Red Hat Ceph Storage를 사용합니다. 내부 모드는 차지하는 공간이 더 크지만 독립적이고 RWX |
OpenShift Virtualization은 호스팅된 클러스터의 스토리지를 처리하며, 특히 블록 스토리지에 대한 요구 사항이 제한적인 고객에게 도움이 됩니다.
5.3.3.1. KubeVirt CSI 스토리지 클래스 매핑 링크 복사링크가 클립보드에 복사되었습니다!
KubeVirt CSI는 ReadWriteMany (RWX) 액세스가 가능한 인프라 스토리지 클래스 매핑을 지원합니다. 클러스터를 생성하는 동안 인프라 스토리지 클래스를 호스팅된 스토리지 클래스에 매핑할 수 있습니다.
프로세스
인프라 스토리지 클래스를 호스팅된 스토리지 클래스에 매핑하려면 다음 명령을 실행하여
--infra-storage-class-mapping인수를 사용합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 호스팅된 클러스터의 이름을 지정합니다(예:
). - 2
- 작업자 수를 지정합니다(예:
2). - 3
- 예를 들어
/user/name/pullsecret 과같이 풀 시크릿의 경로를 지정합니다. - 4
- 예를 들어
8Gi와 같이 메모리 값을 지정합니다. - 5
- 예를 들어 CPU에
2와 같은값을 지정합니다. - 6
<infrastructure_storage_class>를인프라 스토리지 클래스 이름으로,<hosted_storage_class>를호스팅된 클러스터 스토리지 클래스 이름으로 바꿉니다.hcp create cluster명령 내에서--infra-storage-class-mapping인수를 여러 번 사용할 수 있습니다.
호스팅 클러스터를 생성한 후에는 호스팅 클러스터 내에서 인프라 스토리지 클래스가 표시됩니다. 해당 스토리지 클래스 중 하나를 사용하는 호스팅된 클러스터 내에서 영구 볼륨 클레임(PVC)을 생성하면 KubeVirt CSI는 클러스터 생성 중에 구성한 인프라 스토리지 클래스 매핑을 사용하여 해당 볼륨을 프로비저닝합니다.
KubeVirt CSI는 RWX 액세스가 가능한 인프라 스토리지 클래스만 매핑을 지원합니다.
다음 표는 볼륨 및 액세스 모드 기능이 KubeVirt CSI 스토리지 클래스에 어떻게 매핑되는지 보여줍니다.
| 인프라 CSI 기능 | 호스팅 클러스터 CSI 기능 | VM 라이브 마이그레이션 지원 | 참고 |
|---|---|---|---|
|
RWX: |
| 지원됨 |
|
|
RWO |
RWO | 지원되지 않음 | 라이브 마이그레이션 지원이 부족하면 KubeVirt VM을 호스팅하는 기본 인프라 클러스터를 업데이트하는 기능에 영향을 미칩니다. |
|
RWO |
RWO | 지원되지 않음 |
라이브 마이그레이션 지원이 부족하면 KubeVirt VM을 호스팅하는 기본 인프라 클러스터를 업데이트하는 기능에 영향을 미칩니다. 인프라 |
5.3.3.2. 단일 KubeVirt CSI 볼륨 스냅샷 클래스 매핑 링크 복사링크가 클립보드에 복사되었습니다!
KubeVirt CSI를 사용하면 인프라 볼륨 스냅샷 클래스를 호스팅된 클러스터에 노출할 수 있습니다.
프로세스
호스팅된 클러스터에 볼륨 스냅샷 클래스를 매핑하려면 호스팅된 클러스터를 생성할 때
--infra-volumesnapshot-class-mapping인수를 사용합니다. 다음 명령을 실행합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 호스팅된 클러스터의 이름을 지정합니다(예:
). - 2
- 작업자 수를 지정합니다(예:
2). - 3
- 예를 들어
/user/name/pullsecret 과같이 풀 시크릿의 경로를 지정합니다. - 4
- 예를 들어
8Gi와 같이 메모리 값을 지정합니다. - 5
- 예를 들어 CPU에
2와 같은값을 지정합니다. - 6
<infrastructure_storage_class>를인프라 클러스터에 있는 스토리지 클래스로 바꿉니다.<hosted_storage_class>를호스팅 클러스터에 있는 스토리지 클래스로 바꾸세요.- 7
<infrastructure_volume_snapshot_class>를인프라 클러스터에 있는 볼륨 스냅샷 클래스로 바꿉니다.<hosted_volume_snapshot_class>를호스팅된 클러스터에 있는 볼륨 스냅샷 클래스로 바꿉니다.
참고--infra-storage-class-mapping및--infra-volumesnapshot-class-mapping인수를 사용하지 않으면 기본 스토리지 클래스와 볼륨 스냅샷 클래스를 사용하여 호스팅된 클러스터가 생성됩니다. 따라서 인프라 클러스터에서 기본 저장소 클래스와 볼륨 스냅샷 클래스를 설정해야 합니다.
5.3.3.3. 여러 KubeVirt CSI 볼륨 스냅샷 클래스 매핑 링크 복사링크가 클립보드에 복사되었습니다!
특정 그룹에 할당하여 여러 볼륨 스냅샷 클래스를 호스팅된 클러스터에 매핑할 수 있습니다. 인프라 스토리지 클래스와 볼륨 스냅샷 클래스는 동일한 그룹에 속하는 경우에만 서로 호환됩니다.
프로세스
호스팅된 클러스터에 여러 볼륨 스냅샷 클래스를 매핑하려면 호스팅된 클러스터를 생성할 때
그룹옵션을 사용합니다. 다음 명령을 실행합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 호스팅된 클러스터의 이름을 지정합니다(예:
). - 2
- 작업자 수를 지정합니다(예:
2). - 3
- 예를 들어
/user/name/pullsecret 과같이 풀 시크릿의 경로를 지정합니다. - 4
- 예를 들어
8Gi와 같이 메모리 값을 지정합니다. - 5
- 예를 들어 CPU에
2와 같은값을 지정합니다. - 6
<infrastructure_storage_class>를인프라 클러스터에 있는 스토리지 클래스로 바꿉니다.<hosted_storage_class>를호스팅 클러스터에 있는 스토리지 클래스로 바꾸세요.<그룹_이름>을그룹 이름으로 바꾸세요. 예를 들어,infra-storage-class-mygroup/hosted-storage-class-mygroup,group=mygroup및infra-storage-class-mymap/hosted-storage-class-mymap,group=mymap입니다.- 7
<infrastructure_volume_snapshot_class>를인프라 클러스터에 있는 볼륨 스냅샷 클래스로 바꿉니다.<hosted_volume_snapshot_class>를호스팅된 클러스터에 있는 볼륨 스냅샷 클래스로 바꿉니다. 예를 들어,infra-vol-snap-mygroup/hosted-vol-snap-mygroup,group=mygroup및infra-vol-snap-mymap/hosted-vol-snap-mymap,group=mymap입니다.
5.3.3.4. KubeVirt VM 루트 볼륨 구성 링크 복사링크가 클립보드에 복사되었습니다!
클러스터 생성 시 --root-volume-storage-class 인수를 사용하여 KubeVirt VM 루트 볼륨을 호스팅하는 데 사용되는 스토리지 클래스를 구성할 수 있습니다.
프로세스
KubeVirt VM에 대한 사용자 지정 스토리지 클래스와 볼륨 크기를 설정하려면 다음 명령을 실행하세요.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 결과적으로 PVC에 호스팅된 VM으로 생성된 호스팅 클러스터를 얻게 됩니다.
5.3.3.5. KubeVirt VM 이미지 캐싱 활성화 링크 복사링크가 클립보드에 복사되었습니다!
KubeVirt VM 이미지 캐싱을 사용하면 클러스터 시작 시간과 스토리지 사용량을 모두 최적화할 수 있습니다. KubeVirt VM 이미지 캐싱은 스마트 복제와 ReadWriteMany 액세스 모드가 가능한 스토리지 클래스 사용을 지원합니다. 스마트 클로닝에 대한 자세한 내용은 스마트 클로닝을 사용하여 데이터 볼륨 복제를 참조하세요.
이미지 캐싱은 다음과 같이 작동합니다.
- VM 이미지는 호스팅된 클러스터와 연결된 PVC로 가져옵니다.
- 클러스터에 작업자 노드로 추가된 모든 KubeVirt VM에 대해 해당 PVC의 고유한 복제본이 생성됩니다.
이미지 캐싱은 단 하나의 이미지 가져오기만 요구하므로 VM 시작 시간을 줄여줍니다. 스토리지 클래스가 복사-쓰기 복제를 지원하는 경우 전체 클러스터 스토리지 사용량을 더욱 줄일 수 있습니다.
프로세스
클러스터를 생성하는 동안 이미지 캐싱을 활성화하려면 다음 명령을 실행하여
--root-volume-cache-strategy=PVC인수를 사용합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3.3.6. KubeVirt CSI 스토리지 보안 및 격리 링크 복사링크가 클립보드에 복사되었습니다!
KubeVirt 컨테이너 스토리지 인터페이스(CSI)는 기본 인프라 클러스터의 스토리지 기능을 호스팅된 클러스터로 확장합니다. CSI 드라이버는 다음과 같은 보안 제약 조건을 사용하여 인프라 스토리지 클래스와 호스팅 클러스터에 대한 안전하고 격리된 액세스를 보장합니다.
- 호스팅된 클러스터의 저장소는 다른 호스팅된 클러스터와 격리됩니다.
- 호스팅된 클러스터의 워커 노드는 인프라 클러스터에 대한 직접적인 API 액세스 권한이 없습니다. 호스팅된 클러스터는 제어된 KubeVirt CSI 인터페이스를 통해서만 인프라 클러스터에 스토리지를 프로비저닝할 수 있습니다.
- 호스팅된 클러스터는 KubeVirt CSI 클러스터 컨트롤러에 액세스할 수 없습니다. 결과적으로 호스팅된 클러스터는 호스팅된 클러스터와 연결되지 않은 인프라 클러스터의 임의의 스토리지 볼륨에 액세스할 수 없습니다. KubeVirt CSI 클러스터 컨트롤러는 호스팅된 제어 평면 네임스페이스의 포드에서 실행됩니다.
- KubeVirt CSI 클러스터 컨트롤러의 역할 기반 액세스 제어(RBAC)는 영구 볼륨 클레임(PVC) 액세스를 호스팅된 제어 평면 네임스페이스로만 제한합니다. 따라서 KubeVirt CSI 구성 요소는 다른 네임스페이스의 저장소에 액세스할 수 없습니다.
5.3.3.7. etcd 스토리지 구성 링크 복사링크가 클립보드에 복사되었습니다!
클러스터 생성 시 --etcd-storage-class 인수를 사용하여 etcd 데이터를 호스팅하는 데 사용되는 스토리지 클래스를 구성할 수 있습니다.
프로세스
etcd에 대한 스토리지 클래스를 구성하려면 다음 명령을 실행하세요.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3.4. hcp CLI를 사용하여 NVIDIA GPU 장치 연결 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift Virtualization에서 호스팅된 클러스터의 hcp 명령줄 인터페이스(CLI)를 사용하여 하나 이상의 NVIDIA 그래픽 처리 장치(GPU) 장치를 노드 풀에 연결할 수 있습니다.
NVIDIA GPU 장치를 노드 풀에 연결하는 것은 기술 미리 보기 기능에 불과합니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
사전 요구 사항
- GPU 장치가 있는 노드에서 NVIDIA GPU 장치를 리소스로 노출했습니다. 자세한 내용은 OpenShift 가상화를 지원하는 NVIDIA GPU Operator를 참조하세요.
- 노드 풀에 할당하기 위해 NVIDIA GPU 장치를 노드의 확장 리소스 로 노출했습니다.
프로세스
다음 명령을 실행하여 클러스터 생성 중에 GPU 장치를 노드 풀에 연결할 수 있습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 호스팅된 클러스터의 이름을 지정합니다(예:
). - 2
- 예를 들어
3과같이 작업자 수를 지정합니다. - 3
- 예를 들어
/user/name/pullsecret 과같이 풀 시크릿의 경로를 지정합니다. - 4
- 예를 들어
16Gi와 같이 메모리 값을 지정합니다. - 5
- 예를 들어 CPU에
2와 같은값을 지정합니다. - 6
- GPU 장치 이름과 개수를 지정합니다(예:
--host-device-name="nvidia-a100,count:2").--host-device-name인수는 인프라 노드의 GPU 장치 이름과 노드 풀의 각 가상 머신(VM)에 연결하려는 GPU 장치 수를 나타내는 선택적 개수를 사용합니다. 기본 개수는1입니다. 예를 들어, 2개의 GPU 장치를 3개의 노드 풀 복제본에 연결하면 노드 풀에 있는 3개의 VM이 모두 2개의 GPU 장치에 연결됩니다.
작은 정보--host-device-name인수를 여러 번 사용하여 다양한 유형의 여러 장치를 연결할 수 있습니다.
5.3.5. NodePool 리소스를 사용하여 NVIDIA GPU 장치 연결 링크 복사링크가 클립보드에 복사되었습니다!
NodePool 리소스에서 nodepool.spec.platform.kubevirt.hostDevices 필드를 구성하여 하나 이상의 NVIDIA 그래픽 처리 장치(GPU) 장치를 노드 풀에 연결할 수 있습니다.
NVIDIA GPU 장치를 노드 풀에 연결하는 것은 기술 미리 보기 기능에 불과합니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
프로세스
하나 이상의 GPU 장치를 노드 풀에 연결합니다.
단일 GPU 장치를 연결하려면 다음 예제 구성을 사용하여
NodePool리소스를 구성하세요.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 호스팅된 클러스터의 이름을 지정합니다(예:
). - 2
- 호스팅된 클러스터 네임스페이스의 이름을 지정합니다(예:
clusters ). - 3
- 예를 들어 CPU에
2와 같은값을 지정합니다. - 4
- 예를 들어
16Gi와 같이 메모리 값을 지정합니다. - 5
hostDevices필드는 노드 풀에 연결할 수 있는 다양한 유형의 GPU 장치 목록을 정의합니다.- 6
- 노드 풀의 각 가상 머신(VM)에 연결할 GPU 장치 수를 지정합니다. 예를 들어, 2개의 GPU 장치를 3개의 노드 풀 복제본에 연결하면 노드 풀에 있는 3개의 VM이 모두 2개의 GPU 장치에 연결됩니다. 기본 개수는
1입니다. - 7
- GPU 장치 이름을 지정합니다(예:
nvidia-a100 ). - 8
- 예를 들어
3과같이 작업자 수를 지정합니다.
여러 GPU 장치를 연결하려면 다음 예제 구성을 사용하여
NodePool리소스를 구성하세요.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3.6. KubeVirt 가상 머신 퇴출 링크 복사링크가 클립보드에 복사되었습니다!
GPU 패스스루를 사용하는 경우와 같이 KubeVirt 가상 머신(VM)을 라이브 마이그레이션할 수 없는 경우, 호스팅된 클러스터의 NodePool 리소스와 동시에 VM을 제거해야 합니다. 그렇지 않으면 컴퓨팅 노드가 작업 부하에서 벗어나지 못하고 종료될 수 있습니다. OpenShift Virtualization Operator를 업그레이드하는 경우에도 이런 일이 발생할 수 있습니다. 동기화된 재시작을 달성하려면 하이퍼컨버지 드 리소스에서 evictionStrategy 매개변수를 설정하여 워크로드에서 비워진 VM만 재부팅되도록 할 수 있습니다.
프로세스
하이퍼컨버지드 리소스와evictionStrategy매개변수에 허용되는 값에 대해 자세히 알아보려면 다음 명령을 입력하세요.oc explain hyperconverged.spec.evictionStrategy
$ oc explain hyperconverged.spec.evictionStrategyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 입력하여
하이퍼컨버지드 리소스에 패치를 적용합니다.oc -n openshift-cnv patch hyperconverged kubevirt-hyperconverged \ --type=merge \ -p '{"spec": {"evictionStrategy": "External"}}'$ oc -n openshift-cnv patch hyperconverged kubevirt-hyperconverged \ --type=merge \ -p '{"spec": {"evictionStrategy": "External"}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 입력하여 워크로드 업데이트 전략과 워크로드 업데이트 방법을 패치합니다.
oc -n openshift-cnv patch hyperconverged kubevirt-hyperconverged \ --type=merge \ -p '{"spec": {"workloadUpdateStrategy": {"workloadUpdateMethods": ["LiveMigrate","Evict"]}}}'$ oc -n openshift-cnv patch hyperconverged kubevirt-hyperconverged \ --type=merge \ -p '{"spec": {"workloadUpdateStrategy": {"workloadUpdateMethods": ["LiveMigrate","Evict"]}}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 패치를 적용하면 가능한 경우 VM을 라이브 마이그레이션하고, 라이브 마이그레이션할 수 없는 VM만 제거하도록 지정할 수 있습니다.
검증
다음 명령을 입력하여 패치 명령이 제대로 적용되었는지 확인하세요.
oc -n openshift-cnv get hyperconverged kubevirt-hyperconverged -ojsonpath='{.spec.evictionStrategy}'$ oc -n openshift-cnv get hyperconverged kubevirt-hyperconverged -ojsonpath='{.spec.evictionStrategy}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
External
ExternalCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3.7. topologySpreadConstraint를 사용하여 노드 풀 VM 확산 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 노드 풀에서 생성된 KubeVirt 가상 머신(VM)은 VM을 실행할 수 있는 용량이 있는 모든 사용 가능한 노드에 예약됩니다. 기본적으로 topologySpreadConstraint 제약 조건은 여러 노드에서 VM을 예약하도록 설정됩니다.
일부 시나리오에서는 노드 풀 VM이 동일한 노드에서 실행될 수 있으며, 이로 인해 가용성 문제가 발생할 수 있습니다. 단일 노드에 VM이 분산되는 것을 방지하려면 descheduler를 사용하여 topologySpreadConstraint 제약 조건을 지속적으로 준수하여 VM을 여러 노드에 분산합니다.
사전 요구 사항
- Kube Descheduler Operator를 설치했습니다. 자세한 내용은 "디스케줄러 설치"를 참조하세요.
프로세스
다음 명령을 입력하여
KubeDescheduler사용자 지정 리소스(CR)를 열고KubeDeschedulerCR을 수정하여SoftTopologyAndDuplicates및DevKubeVirtRelieveAndMigrate프로필을 사용하여topologySpreadConstraint제약 조건 설정을 유지합니다.KubeDeschedulerCR이라는 이름의클러스터는openshift-kube-descheduler-operator네임스페이스에서 실행됩니다.oc edit kubedescheduler cluster -n openshift-kube-descheduler-operator
$ oc edit kubedescheduler cluster -n openshift-kube-descheduler-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow KubeDescheduler구성 예시Copy to Clipboard Copied! Toggle word wrap Toggle overflow