태그: #Go
GPU·LLM·MLOps·쿠버네티스, 그리고 마음가짐에 관한 글 · 8 편
#Go 태그가 붙은 글은 8편이고, 가장 최근 글은 2026-10-16에 올라왔습니다.
함께 자주 붙은 태그: #KubeVirt 7 #KubeVirt 소스 코드 읽기 7 #쿠버네티스 4 #gRPC 2 #오픈소스 2
최근 90일 동안 많이 읽힌 글:
grpc-go 코드 지도: ClientConn 에서 http2Client 까지, Serve 에서 핸들러까지
grpc-go 의 클라이언트는 다섯 겹입니다. 채널(ClientConn)이 리졸버 포장과 밸런서 포장을 거느리고, 밸런서는 서브채널(addrConn)을 만들며, 호출마다 픽커가 READY 인 서브채널 하나를 골라 그 HTTP/2 전송(http2Client)에 스트림을 엽니다. 서버는 Serve → 연결마다 http2Server → 스트림마다 handleStream → 서비스 표에서 찾은 핸들
2026-10-16 · 16 분 읽기 #gRPC#grpc-go#코드 읽기#오픈소스#GoKubeVirt 소스 코드 읽기 7: 장치 패스스루 — GPU 가 도메인 XML 이 되기까지
GPU 한 장을 VM 에 통째로 넘기는 일은 KubeVirt 의 네 구성요소에 나뉘어 있습니다. KubeVirt CR 의 허용 목록, virt-handler 장치 관리자가 sysfs 를 훑어 vfio-pci 에 묶인 장치만 세는 일, 장치 플러그인이 kubelet 에 자원을 등록하고 Allocate 에서 /dev/vfio 와 PCI 주소 환경 변수를 넘기는 일, virt-controller
2026-10-16 · 15 분 읽기 #KubeVirt#GPU#VFIO#장치 플러그인#패스스루KubeVirt 소스 코드 읽기 6: CDI — DataVolume, importer, 크기 계산, 복제
VM 의 루트 디스크를 PVC 로 쓰려면 누군가 PVC 를 만들고 이미지를 채워야 합니다. 그 일을 하는 CDI(Containerized Data Importer)는 v1.66.0 에서 볼륨 채우미(populator)를 기본으로 씁니다. 목표 PVC 옆에 쌍둥이 PVC' 을 만들어 importer 파드로 채운 뒤 PV 를 목표 쪽으로 옮겨 붙이는 길, spec.storage 의 크기를 파일시
2026-10-16 · 18 분 읽기 #KubeVirt#CDI#DataVolume#PVC#스토리지KubeVirt 소스 코드 읽기 5: virt-launcher — 도메인 XML 과 QEMU
virt-launcher 는 VMI 를 libvirt 도메인 XML 로 번역해 QEMU 를 띄우고, 그 QEMU 가 살아 있는 동안 파드를 지키는 프로그램입니다. 파드 안 프로세스 트리(monitor → launcher → virtqemud·virtlogd, 그리고 QEMU), cmd 서버가 받은 SyncVMI 한 번이 하는 일곱 걸음, 설정기 29개를 차례로 거는 converter, 컨테이
2026-10-16 · 22 분 읽기 #KubeVirt#libvirt#QEMU#qcow2#네트워크KubeVirt 소스 코드 읽기 4: virt-handler — 노드에서 VMI 를 맞추기
virt-handler 는 노드마다 하나씩 도는 컨트롤러이고, 다른 컨트롤러와 달리 두 세계를 함께 봅니다. 클러스터의 VMI(바라는 것)와, 파드 안 libvirt 의 도메인(실제)입니다. 노드 라벨로 거른 VMI 인포머, 파드 안에서 보내오는 도메인 이벤트와 5분마다의 resync, sync() 가 고르는 세 갈래(끄기·지우기·맞추기), 파드 밖에서만 할 수 있는 준비(컨테이너 디스크 붙
2026-10-16 · 14 분 읽기 #KubeVirt#쿠버네티스#데몬셋#gRPC#컨트롤러KubeVirt 소스 코드 읽기 3: virt-controller — VM 과 VMI 의 reconcile
virt-controller 안에는 컨트롤러가 여럿 돌지만 VM 하나를 띄우는 길은 둘이 이어 달립니다. VM 컨트롤러가 실행 전략(runStrategy)을 보고 VMI 를 만들거나 지우고, VMI 컨트롤러가 template.go 로 virt-launcher 파드를 그려 만든 뒤 파드가 준비되면 노드 이름을 적어 virt-handler 에 넘깁니다. 작업 큐와 기대값(expectations)
2026-10-16 · 20 분 읽기 #KubeVirt#쿠버네티스#컨트롤러#reconcile#GoKubeVirt 소스 코드 읽기 2: API 와 CRD — 타입, 생성 코드, 웹훅
VirtualMachine 의 YAML 필드는 types.go 의 Go 구조체 하나에서 시작합니다. 그 구조체에서 deepcopy·OpenAPI·클라이언트·CRD 스키마가 생성되고, 사용자가 VM 을 apply 하면 kube-apiserver 안에서 virt-api 의 변형·검증 웹훅이 끼어들어 기본값을 채우고 거절하거나 경고를 붙입니다. spec.running 사용 중단 경고가 나오는 vm
2026-10-16 · 16 분 읽기 #KubeVirt#쿠버네티스#CRD#어드미션 웹훅#코드 생성KubeVirt 소스 코드 읽기 1: 저장소 지도 — 어디부터 읽을까
kubevirt/kubevirt 저장소는 Go 파일만 9천 개가 넘습니다. 그래도 길은 단순합니다. cmd/ 는 얇은 입구, pkg/virt- 다섯 폴더가 구성요소의 본체, staging/ 은 따로 배포되는 API 타입, tests/ 는 진짜 클러스터에서 도는 기능 시험입니다. v1.9.0 태그를 기준으로 폴더마다 무엇이 있고 그 코드가 클러스터의 어디서 도는지, 빌드와 시험을 어떻게 돌리는
2026-10-16 · 16 분 읽기 #KubeVirt#쿠버네티스#소스 코드#오픈소스#Go