Quiz: sandbox workloads and resource names
한국어 원문으로 표시합니다.
노드에 nvidia.com/gpu.workload.config=vm-passthrough 를 붙였는데 아무것도 달라지지 않는다. 가장 먼저 확인할 것은?
- ClusterPolicy 의 sandboxWorkloads.enabled 가 켜져 있는지 — 꺼져 있으면 이 라벨은 아예 읽히지 않는다
- 노드에 vfio-pci 커널 모듈이 이미 적재돼 있는지 — 없으면 오퍼레이터가 라벨을 무시한다
- 라벨을 nvidia.com/gpu.deploy.vfio-manager 로 바꿔야 한다 — workload.config 는 읽기 전용 표시다
- 노드가 cordon 되어 있는지 — 오퍼랜드 교체는 스케줄 가능한 노드에서만 일어난다
패스스루로 준비된 노드가 광고하는 자원 이름은?
- nvidia.com/gpu — 자원 이름은 워크로드 종류와 무관하게 같고 개수만 달라진다
- nvidia.com/GA102GL_A10 처럼 PCI 장치 모델에서 온 이름
- nvidia.com/vfio — vfio-pci 에 바인드된 장치는 드라이버 이름으로 광고된다
- nvidia.com/NVIDIA_A10-12Q 처럼 vGPU 프로파일에서 온 이름
nvidia.com/gpu: 1 을 요구하는 파드가 패스스루 노드에는 자리가 남아 있는데도 Pending 인 이유는?
- 패스스루 노드에는 컨테이너 런타임 핸들러가 없어 kubelet 이 파드 생성을 거부하기 때문이다
- 샌드박스 장치 플러그인이 광고한 자원은 VM 전용으로 예약되어 파드에는 배정되지 않기 때문이다
- 스케줄러에게 그 노드는 요구된 자원 이름을 갖지 않은 노드이기 때문이다
- 패스스루 노드에는 자동으로 NoSchedule 테인트가 걸려 톨러레이션이 필요하기 때문이다
GPU Operator 가 KubeVirt VM 에 대해 하지 않는 일은?
- vfio-pci 를 적재해 패스스루 노드의 GPU 에 바인드하는 일
- vGPU 장치를 노드에 만들어 kubelet 에 광고하는 일
- 노드 라벨을 보고 어떤 오퍼랜드를 올릴지 정하는 일
- VM 게스트 OS 안에 NVIDIA 드라이버를 설치하는 일
장치가 노드 status 에 광고되고 있는데도 VM 에 GPU 를 붙일 수 없다. 빠뜨렸을 가능성이 가장 큰 단계는?
- 노드에 nvidia.com/gpu.deploy.dcgm-exporter 라벨을 붙여 지표 수집을 켜는 단계
- KubeVirt 커스텀 리소스의 permittedHostDevices 에 그 자원을 허용 목록으로 올리는 단계
- 컨테이너 툴킷을 그 노드에 함께 올려 런타임 핸들러를 등록하는 단계
- 노드의 containerd 설정에 vfio 런타임을 기본 런타임으로 지정하는 단계
A10 카드 두 장이 꽂힌 vGPU 노드에 nvidia.com/vgpu.config=A10-4Q 라벨을 붙였을 때 일어나는 일은?
- 카드마다 4개씩 총 8개의 장치가 생기고 자원 이름은 nvidia.com/gpu 로 유지된다
- 프로파일만 바뀌고 장치 수는 그대로여서 광고량은 변하지 않는다
- 라벨이 적용되려면 노드를 재부팅해야 하고 그 전까지는 기본 설정이 남는다
- 자원 이름이 프로파일에 맞게 바뀌고 카드마다 여섯 개씩 총 12개가 광고된다