5.3. OpenShift Virtualization에서 호스트된 컨트롤 플레인 관리
OpenShift Virtualization에 호스팅된 클러스터를 배포한 후 다음 절차를 완료하여 클러스터를 관리할 수 있습니다.
5.3.1. 호스트된 클러스터에 액세스 링크 복사링크가 클립보드에 복사되었습니다!
리소스에서 직접 kubeconfig
파일 및 kubeadmin
자격 증명을 가져오거나 hcp
명령줄 인터페이스를 사용하여 kubeconfig
파일을 생성하여 호스팅된 클러스터에 액세스할 수 있습니다.
사전 요구 사항
리소스에서 직접 kubeconfig
파일 및 인증 정보를 가져와 호스팅된 클러스터에 액세스하려면 호스팅 클러스터의 액세스 시크릿을 숙지해야 합니다. 호스팅된 클러스터(호스트링) 네임스페이스에는 호스팅 된 클러스터 리소스 및 액세스 보안이 포함되어 있습니다. 호스팅된 컨트롤 플레인 네임스페이스는 호스팅된 컨트롤 플레인이 실행되는 위치입니다.
보안 이름 형식은 다음과 같습니다.
-
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
필드가 포함되어 있으며 다음 명령과 함께 사용할 파일에 디코딩하고 저장할 수 있습니다.
oc --kubeconfig <hosted_cluster_name>.kubeconfig get nodes
$ oc --kubeconfig <hosted_cluster_name>.kubeconfig get nodes
kubeadmin
암호 시크릿도 Base64로 인코딩됩니다. 이를 디코딩하고 암호를 사용하여 호스팅된 클러스터의 API 서버 또는 콘솔에 로그인할 수 있습니다.
프로세스
hcp
CLI를 사용하여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>.kubeconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kubeconfig
파일을 저장한 후 다음 예제 명령을 입력하여 호스팅된 클러스터에 액세스할 수 있습니다.oc --kubeconfig <hosted_cluster_name>.kubeconfig get nodes
$ oc --kubeconfig <hosted_cluster_name>.kubeconfig get nodes
Copy 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입니다. 추가할 수 있는 최대 노드 수는 플랫폼에 바인딩될 수 있습니다. 예를 들어 에이전트 플랫폼을 사용하는 경우 사용 가능한 에이전트 수에 따라 최대 노드 수가 바인딩됩니다.
새 노드가 필요한 워크로드를 생성합니다.
다음 예제를 사용하여 워크로드 구성이 포함된 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 참고IBM Z® 에이전트의 경우 Processor Resource/Systems Manager (PR/SM) 모드에서 OSA 네트워크 장치를 사용하는 경우 자동 확장이 지원되지 않습니다. 축소 프로세스 중 새 에이전트가 결합되므로 기존 에이전트를 수동으로 삭제하고 노드 풀을 확장해야 합니다.
5.3.3. OpenShift Virtualization에서 호스팅된 컨트롤 플레인을 위한 스토리지 구성 링크 복사링크가 클립보드에 복사되었습니다!
고급 스토리지 구성을 제공하지 않으면 KubeVirt VM(가상 머신) 이미지, KubeVirt CSI(Container Storage Interface) 매핑 및 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는 RWX( ReadWriteMany
) 액세스를 수행할 수 있는 인프라 스토리지 클래스 매핑을 지원합니다. 클러스터 생성 중에 인프라 스토리지 클래스를 호스팅된 스토리지 클래스에 매핑할 수 있습니다.
프로세스
인프라 스토리지 클래스를 호스팅된 스토리지 클래스에 매핑하려면 다음 명령을 실행하여
--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
- &
lt;infrastructure_storage_class
>를 인프라 클러스터에 있는 스토리지 클래스로 바꿉니다. <hosted_storage_class&
gt;를 호스트된 클러스터에 있는 스토리지 클래스로 바꿉니다. - 7
- &
lt;infrastructure_volume_snapshot_class
>를 인프라 클러스터에 있는 볼륨 스냅샷 클래스로 바꿉니다. <hosted_volume_snapshot_class
>를 호스팅된 클러스터에 있는 볼륨 스냅샷 클래스로 바꿉니다.
참고--infra-storage-class-mapping
및--infra-volumesnapshot-class-mapping
인수를 사용하지 않는 경우 호스트된 클러스터는 기본 스토리지 클래스 및 볼륨 스냅샷 클래스를 사용하여 생성됩니다. 따라서 인프라 클러스터에서 기본 스토리지 클래스와 볼륨 스냅샷 클래스를 설정해야 합니다.
5.3.3.3. 여러 KubeVirt CSI 볼륨 스냅샷 클래스 매핑 링크 복사링크가 클립보드에 복사되었습니다!
특정 그룹에 할당하여 호스트된 클러스터에 여러 볼륨 스냅샷 클래스를 매핑할 수 있습니다. 인프라 스토리지 클래스와 볼륨 스냅샷 클래스는 동일한 그룹에 속하는 경우에만 서로 호환됩니다.
프로세스
여러 볼륨 스냅샷 클래스를 호스팅된 클러스터에 매핑하려면 호스트 클러스터를 생성할 때
group
옵션을 사용합니다. 다음 명령을 실행합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 호스팅된 클러스터의 이름을 지정합니다(
예
: ). - 2
- 작업자 수를 지정합니다(예:
2
). - 3
- 풀 시크릿의 경로를 지정합니다(예:
/user/name/pullsecret
). - 4
- 메모리 값을 지정합니다(예:
8Gi
). - 5
- CPU 값을 지정합니다(예:
2
). - 6
- &
lt;infrastructure_storage_class
>를 인프라 클러스터에 있는 스토리지 클래스로 바꿉니다. <hosted_storage_class&
gt;를 호스트된 클러스터에 있는 스토리지 클래스로 바꿉니다. 그룹 이름으로 바꿉니다. 예를 들어
infra-storage-class-mygroup/hosted-storage-class-mygroup,group=mygroup
및infra-storage-class-mymap/hosted-storage-class-mymap,group=mymap
. - 7
- &
lt;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로 가져옵니다.
- 해당 PVC의 고유한 복제본은 클러스터에 작업자 노드로 추가되는 모든 KubeVirt VM에 대해 생성됩니다.
이미지 캐싱은 단일 이미지 가져오기만 요구하여 VM 시작 시간을 줄입니다. 스토리지 클래스가 COW(Copy-On-Write) 복제를 지원하는 경우 전체 클러스터 스토리지 사용량을 추가로 줄일 수 있습니다.
프로세스
이미지 캐싱을 활성화하려면 클러스터 생성 중에 다음 명령을 실행하여
--root-volume-cache-strategy=PVC
인수를 사용합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3.3.6. kubevirt CSI 스토리지 보안 및 격리 링크 복사링크가 클립보드에 복사되었습니다!
kubevirt CSI(Container Storage Interface)는 기본 인프라 클러스터의 스토리지 기능을 호스팅된 클러스터로 확장합니다. CSI 드라이버는 다음 보안 제약 조건을 사용하여 인프라 스토리지 클래스 및 호스팅 클러스터에 대한 안전하고 격리된 액세스를 보장합니다.
- 호스트 클러스터의 스토리지는 다른 호스팅 클러스터와 격리됩니다.
- 호스트 클러스터의 작업자 노드에는 인프라 클러스터에 대한 직접 API 액세스 권한이 없습니다. 호스트 클러스터는 제어된 KubeVirt CSI 인터페이스를 통해서만 인프라 클러스터에 스토리지를 프로비저닝할 수 있습니다.
- 호스트된 클러스터는 KubeVirt CSI 클러스터 컨트롤러에 액세스할 수 없습니다. 결과적으로 호스팅된 클러스터는 호스팅된 클러스터와 연결되지 않은 인프라 클러스터의 임의의 스토리지 볼륨에 액세스할 수 없습니다. KubeVirt CSI 클러스터 컨트롤러는 호스팅된 컨트롤 플레인 네임스페이스의 Pod에서 실행됩니다.
- 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 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
사전 요구 사항
- NVIDIA GPU 장치를 GPU 장치가 있는 노드의 리소스로 노출했습니다. 자세한 내용은 NVIDIA GPU Operator with OpenShift Virtualization 에서 참조하십시오.
- 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개의 노드 풀 복제본에 연결하면 노드 풀의 모든 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
- 호스팅된 클러스터 네임스페이스의 이름을 지정합니다(예:
클러스터
). - 3
- CPU 값을 지정합니다(예:
2
). - 4
- 메모리 값을 지정합니다(예:
16Gi
). - 5
hostDevices
필드는 노드 풀에 연결할 수 있는 다양한 유형의 GPU 장치 목록을 정의합니다.- 6
- 노드 풀의 각 VM(가상 머신)에 연결할 GPU 장치 수를 지정합니다. 예를 들어 2개의 GPU 장치를 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(VM)을 실시간 마이그레이션할 수 없는 경우 호스트된 클러스터의 NodePool
리소스와 동시에 VM을 제거해야 합니다. 그렇지 않으면 워크로드에서 컴퓨팅 노드를 드레이닝하지 않고 종료할 수 있습니다. 이는 OpenShift Virtualization Operator를 업그레이드하는 경우에도 발생할 수 있습니다. 동기화된 재시작을 수행하려면 하이퍼컨버지드
리소스에서 evictionStrategy
매개변수를 설정하여 워크로드에서 드레이닝된 VM만 재부팅되도록 할 수 있습니다.
프로세스
하이퍼컨버지드
리소스 및evictionStrategy
매개변수에 허용되는 값에 대한 자세한 내용을 보려면 다음 명령을 입력합니다.oc explain hyperconverged.spec.evictionStrategy
$ oc explain hyperconverged.spec.evictionStrategy
Copy 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
External
Copy 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(사용자 정의 리소스)을 열고KubeDescheduler
CR을 수정하여SoftTopologyAndDuplicates
및KubeVirtRelieveAndMigrate
프로필을 사용하여topologySpreadConstraint
제약 조건 설정을 유지합니다.cluster
라는KubeDescheduler
CR은openshift-kube-descheduler-operator
네임스페이스에서 실행됩니다.oc edit kubedescheduler cluster -n openshift-kube-descheduler-operator
$ oc edit kubedescheduler cluster -n openshift-kube-descheduler-operator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow KubeDescheduler
구성의 예Copy to Clipboard Copied! Toggle word wrap Toggle overflow