LabHub
배우기 러닝패스 코스

GPU Operator and Time-Slicing

What Is Real and What Is Imitation

LabHub 에서 이어서 보기

한국어 원문으로 표시합니다.

한 줄 요약

이 실습 파드에는 진짜 GPU 도, 진짜 containerd 도, GPU Operator 도 없다. 대신 TOML 파서와 진짜 쿠버네티스 컨트롤 플레인이 있고, 이번 사고에서 사람을 잡은 것들은 거의 전부 그 둘로 재현된다.

Concept map: 파서면 된다 · 셸이면 된다 · 스케줄러가 진짜여야 한다 · 산수면 된다

왜 가짜 환경에서 이걸 하나

GPU 사고에서 실제로 배워야 하는 것을 하나씩 세어 보면 이렇다.

이 목록에 nvidia-smi 는 없다. GPU 장치를 실제로 만져야만 배울 수 있는 것은 드라이버 빌드와 실제 커널 실행 성능인데, 그 둘은 이번 사고의 원인이 아니었다. 원인은 전부 설정과 오브젝트에 있었다.

무엇이 진짜로 검증되고 무엇이 흉내인가

실습에서 하는 것 이 환경에서의 지위
containerd 설정을 TOML 로 쓰고 파싱 실물. 진짜 파서가 읽는다
주 설정과 드롭인의 테이블 충돌 판정 실물. 계산이 그대로 맞다
점검 스크립트 동작 검증 실물. 가짜 containerd 를 세워 두 번 실제로 돌린다
RuntimeClass 등록 실물. 진짜 API 서버가 저장한다
GPU 자원 광고와 스케줄링 실물. 진짜 스케줄러가 판정한다
데몬셋 롤링 업데이트 정지 실물. 진짜 컨트롤러가 멈춘다
노드에 GPU 가 실제로 꽂혀 있는 것 흉내. 노드 status 에 숫자만 적는다
컨테이너 안에서 GPU 를 쓰는 것 없음. 컨테이너가 실행되지 않는다
containerd 를 재시작해 핸들러가 등록되는 것 없음. 개념과 점검 스크립트로만 다룬다

특히 마지막 줄을 분명히 해 두자. SIGHUP 으로는 안 되고 재시작해야 한다는 사실은 이 파드에서 실증할 수 없다. 그래서 실습은 그 대신 "재시작 여부와 무관하게 진실을 알려 주는 점검 스크립트" 를 만들게 한다. 현장에서 그 지식이 손으로 나오는 자리가 바로 그 스크립트다.

현장에서 그대로 쓰이는 것

실습에서 만드는 산출물 중 셋은 그대로 회사에 가져갈 수 있다.

진짜 GPU 노드에서 달라지는 것

이 실습이 흉내로 남겨 둔 부분에서 현장이 어떻게 다른지 알아 두면, 나중에 실물 앞에 섰을 때 당황하지 않는다.

드라이버와 커널은 함께 움직인다. GPU 드라이버는 커널 모듈이라 커널 버전이 바뀌면 다시 빌드되어야 한다. 그래서 노드가 자동으로 커널을 갱신하는 설정이면, 재부팅 뒤에 GPU 가 사라진 채로 노드가 Ready 로 올라온다. 파드는 스케줄되고 컨테이너는 뜨는데 장치만 없는 상태라, 증상이 "GPU 를 못 찾는다" 는 애플리케이션 오류로만 나타난다. 노드 라벨에 드라이버 버전을 붙이고 그것이 사라지면 스케줄을 막는 것이 표준적인 방어다.

자원 광고는 여러 층을 거친다. 장치 플러그인이 kubelet 에 등록하고, kubelet 이 노드 status 에 올리고, 스케줄러가 그것을 본다. 어느 층에서 끊겨도 결과는 똑같이 "파드가 Pending" 이다. 그래서 조사는 위에서 아래로 내려간다. 노드 status 에 자원이 있는가 → 없으면 kubelet 로그 → 장치 플러그인 파드 상태 → 그 파드가 소켓 디렉터리를 제대로 마운트했는가. 이 순서를 정해 두지 않으면 매번 다른 곳부터 뒤지게 된다.

GPU 는 나눠 쓰는 방식이 여러 가지다. 타임슬라이싱은 순번을 돌려 쓰는 것이라 메모리가 격리되지 않아, 한 파드가 메모리를 다 쓰면 나머지가 함께 죽는다. MIG 는 하드웨어에서 아예 나누므로 격리는 확실하지만 나눌 수 있는 조합이 정해져 있고 바꿀 때 노드를 비워야 한다. 격리가 필요하면 MIG, 활용률이 목적이면 타임슬라이싱 이라는 것이 실무의 기준선이고, 이 선택을 사용자에게 설명할 수 있어야 한다.

정리하면, 이 실습에서 손에 익히는 것은 판정하는 순서와 근거를 남기는 방식입니다. 그 둘은 GPU 가 진짜인지 흉내인지와 무관하게 그대로 쓰이고, 실물 앞에서 새로 배워야 하는 것은 위의 세 문단 정도로 좁혀집니다.

다음 실습에서 할 것

여덟 단계로 사고를 처음부터 다시 밟는다. 앞의 네 단계는 노드의 설정 파일을 다루고, 뒤의 네 단계는 클러스터 오브젝트를 다룬다. 마지막 두 단계는 앞에서 만든 것을 모아 계산과 보고로 끝낸다.