태그: #kubernetes
GPU·LLM·MLOps·쿠버네티스, 그리고 마음가짐에 관한 글 · 260 편
홈랩 쿠버네티스 3노드에서 7노드로 — 컨트롤 플레인 확장, etcd 쿼럼, 그리고 "조인만 하면 HA"라는 착각
워커 2대와 컨트롤 플레인 2대를 추가해 홈랩을 7노드로 확장했습니다. kubeadm의 certificate-key가 왜 2시간짜리인지, etcd 멤버 3개가 실제로 어떻게 등록되는지를 실측으로 기록했습니다. 그리고 가장 중요한 발견 — etcd 쿼럼을 갖췄다고 HA가 되는 게 아니었습니다. 엔드포인트가 물리 IP에 고정된 클러스터에서 첫 노드가 죽으면 무슨 일이 벌어지는지, 인증서 재발급
2026-08-28 · 15 분 읽기 #kubernetes#kubeadm#etcd#high-availability#homelabGPU Operator 설치 중 만난 "no runtime for nvidia is configured" — 컨테이너 런타임과 Helm 업그레이드가 실제로 하는 일
5노드 홈랩에 NVIDIA GPU Operator를 올리다 파드가 전부 Init에서 멈췄습니다. 원인은 컨테이너 런타임에 nvidia 핸들러가 없다는 것이었고, 호스트에 nvidia-ctk 바이너리가 있다고 방심한 제 판단 착오였습니다. 왜 쿠버네티스에서 container toolkit이 필수인지, Helm upgrade가 내부적으로 무엇을 바꾸는지, 그리고 Operator가 containe
2026-08-27 · 20 분 읽기 #kubernetes#gpu#nvidia#containerd#helmSynology NAS를 쿠버네티스 동적 PVC 백엔드로 — csi-driver-nfs로 5노드 홈랩에 RWX 스토리지 붙이기
홈랩 쿠버네티스에 Synology NAS를 붙여 PVC를 자동 생성되게 만들었습니다. 포트 스캔으로 NAS 정체를 알아내는 것부터, 첫 마운트 시도가 실패한 진짜 이유, csi-driver-nfs 설치와 StorageClass 두 벌 구성, 그리고 서로 다른 물리 노드가 같은 볼륨에 동시에 읽고 쓰는 RWX 검증까지 실제 출력으로 기록했습니다.
2026-08-26 · 18 분 읽기 #kubernetes#storage#nfs#csi#synology세 줄짜리 설정 파일이 GPU 4장을 일주일 동안 죽였다 — containerd 드롭인 병합의 진실
노드가 GPU를 광고하지 않았습니다. 설정 파일에는 nvidia 런타임이 멀쩡히 적혀 있는데 containerd config dump에는 없었습니다. 범인은 일주일 전에 넣은 세 줄짜리 레지스트리 설정이었고, 이유는 containerd의 imports 병합이 필드 단위가 아니라 플러그인 단위 통째 교체이기 때문이었습니다. 두 번 잘못 진단한 과정과, 결국 답을 준 실험을 그대로 옮깁니다.
2026-08-26 · 20 분 읽기 #kubernetes#containerd#gpu#nvidia#troubleshootingkube-proxy 없는 쿠버네티스 — 3노드 홈랩을 kubeadm 1.34 + Cilium eBPF로 재구축하고 실측으로 증명하기
DHCP가 IP를 바꾸는 바람에 죽어버린 홈랩 클러스터를 kubeadm 1.34와 Cilium 1.20으로 처음부터 다시 세웠습니다. kube-proxy를 아예 설치하지 않고 eBPF로 대체했고, 그것이 실제로 동작한다는 것을 iptables 체인 개수와 eBPF 맵 덤프로 확인했습니다. HTTP 메서드 단위 L7 정책, 사이드카 없는 Hubble 관측, WireGuard 투명 암호화까지 실
2026-08-25 · 15 분 읽기 #kubernetes#cilium#ebpf#kubeadm#networking집에 있는 서버로 실습형 학습 플랫폼 만들기 — 특권 없는 파드 안에 쿠버네티스를 넣는 방법
수강생이 버튼을 누르면 전용 컨테이너가 뜨고, 브라우저 터미널에서 진짜 리눅스 셸을 만지고, 단계마다 서버가 실제 상태를 검사해 채점하는 학습 플랫폼을 집에 있는 7노드 쿠버네티스 클러스터 위에 올린 기록입니다. 가장 어려운 문제는 기능이 아니라 격리였습니다. 실습이므로 수강생에게 root 를 줘야 하는데, 그 root 가 집 네트워크로 나가면 안 됩니다. Cilium 네트워크 정책을 실습별
2026-08-20 · 28 분 읽기 #kubernetes#cilium#security#homelab#kwokLabHub — 브라우저에서 진짜 서버를 만지며 배우는 실습 플랫폼을 열었습니다
읽어서는 늘지 않는 것들이 있습니다. 서버에 붙어 명령을 치고, 틀리고, 왜 틀렸는지 확인하는 과정을 대신할 방법이 없습니다. LabHub 은 그 과정을 브라우저 안에 넣은 학습 플랫폼입니다. 실습 시작을 누르면 전용 리눅스 컨테이너가 즉시 뜨고, 브라우저 터미널로 붙어 과제를 풀고, 단계마다 서버가 실제 상태를 검사해 통과 여부를 알려 줍니다. 러닝패스 12개에 코스 73개, 실습 261개
2026-08-20 · 14 분 읽기 #labhub#kubernetes#devops#education#hands-onLangfuse 자체 호스팅 — 배포 경로, 시크릿, 그리고 첫 기동에서 걸리는 것들
Langfuse를 직접 운영하려면 컨테이너 두 개와 저장소 네 개를 동시에 세워야 합니다. 이 글은 공식 문서를 기준으로 docker compose 경로와 헬름 차트 경로를 각각 정리하고, 반드시 직접 만들어 넣어야 하는 시크릿이 무엇인지, Postgres와 ClickHouse의 연결 문자열이 왜 두 개씩 필요한지, 오브젝트 스토리지 설정에서 MinIO가 요구하는 옵션이 무엇인지를 짚습니다.
2026-08-14 · 17 분 읽기 #observability#langfuse#self-hosting#docker-compose#kubernetes컨테이너 인프라의 세대교체 — 자리를 내준 11개 프로젝트가 남긴 것
한때 컨테이너 인프라의 기본 구성이었다가 지금은 다른 것으로 대체된 프로젝트 11개를 공식 공지와 저장소 보관 상태만 근거로 정리합니다. rkt, dockershim, Classic Swarm, Docker Machine, Compose V1, Heapster, Apache Mesos, PodSecurityPolicy, CoreOS Container Linux, ingress-nginx, 그
2026-08-12 · 19 분 읽기 #open-source#kubernetes#container#docker#infrastructure지금 주목받는 오픈소스 (3) 인프라와 데이터베이스
데이터베이스와 인프라 영역은 라이선스 변경과 포크가 판을 다시 짠 분야입니다. 분석 엔진, 임베디드 데이터베이스, 포스트그레스 확장, 쿠버네티스 오퍼레이터, IaC까지 실제로 자리를 잡은 오픈소스 11개를 스타 순위가 아니라 해결하는 문제별로 묶어 소개합니다. 무엇을 대체하는지, 어느 정도 성숙했는지, 언제 쓰면 안 되는지를 함께 적었습니다. 저장소 경로와 라이선스, 스타 수, 최근 푸시는
2026-08-12 · 9 분 읽기 #open-source#database#infrastructure#postgresql#kubernetesvLLM 메트릭 — 무엇을 대시보드에 올리고 무엇으로 알람을 걸까
vLLM이 노출하는 시계열은 GPU 메트릭이 답하지 못하는 질문에 답합니다. 지금 몇 개가 실행 중이고 몇 개가 대기 중인지, KV 캐시가 얼마나 찼는지, 첫 토큰까지 얼마나 걸리는지 같은 것들입니다. 이 글은 vLLM 공식 문서와 저장소의 메트릭 로거 소스를 직접 읽고 스케줄러 상태 게이지, 캐시 계열 카운터, 지연 히스토그램의 정확한 이름과 의미를 정리하고, 카운터 이름의 접미사 차이처럼
2026-08-12 · 13 분 읽기 #gpu#kubernetes#vllm#prometheus#observabilityMIG와 time-slicing — GPU 한 장을 여럿이 쓰는 두 가지 방법
GPU 한 장에 여러 워크로드를 올리는 방법은 크게 두 가지입니다. 시간을 나누는 time-slicing과 하드웨어를 나누는 MIG인데, 이름이 비슷해 보이는 것과 달리 격리 수준이 전혀 다릅니다. 이 글은 NVIDIA GPU Operator 공식 문서를 기준으로 두 방식의 설정 파일 구조와 노드 라벨, 광고되는 리소스 이름, 지원 하드웨어 조건을 정리하고, time-slicing 복제본 사
2026-08-12 · 12 분 읽기 #gpu#kubernetes#mig#time-slicing#nvidiaDCGM Exporter — GPU 이용률은 당신이 생각하는 그것이 아니다
DCGM Exporter는 GPU 텔레메트리를 프로메테우스 형식으로 노출하는 표준 경로지만, 가장 많이 대시보드에 올라가는 GPU 이용률 계열 메트릭은 사람들이 기대하는 것을 재지 않습니다. 이 글은 dcgm-exporter 저장소의 기본 카운터 CSV와 DCGM 공식 문서, NVML API 문서를 직접 읽고 기본으로 켜져 있는 메트릭 목록, 이용률 메트릭이 실제로 무엇을 뜻하는지, 함께 봐
2026-08-12 · 17 분 읽기 #gpu#kubernetes#dcgm#prometheus#observabilityGPU 서빙 SLO와 알람 설계 — 무엇을 약속하고 무엇을 깨울 것인가
GPU 추론 서비스에 SLO를 걸려면 먼저 어떤 지표가 사용자 경험을 대변하는지 정해야 합니다. 첫 토큰 지연과 처리량은 서로를 잡아먹는 관계라 하나만 보고 목표를 세우면 반드시 다른 쪽이 무너집니다. 이 글은 vLLM과 DCGM Exporter가 실제로 노출하는 시계열만 써서 SLI를 정의하는 방법, 히스토그램 버킷 경계를 임계값으로 삼아야 하는 이유, 포화 신호를 읽는 순서, 증상 기반
2026-08-12 · 13 분 읽기 #gpu#kubernetes#slo#alerting#prometheusGPU 장애 진단 플레이북 — 계층을 정해 놓고 내려간다
쿠버네티스에서 GPU 문제를 진단할 때 가장 큰 낭비는 순서 없이 아무 데나 찔러 보는 것입니다. 파드가 스케줄되지 않는 것, 파드는 떴는데 GPU가 안 보이는 것, 드라이버와 툴킷 버전이 어긋난 것, 메모리가 부족한 것, 노드에서 GPU가 사라지는 것은 서로 다른 계층의 문제라 확인 순서가 다릅니다. 이 글은 NVIDIA GPU Operator 공식 트러블슈팅 문서와 dcgm-exporte
2026-08-12 · 14 분 읽기 #gpu#kubernetes#troubleshooting#nvidia#gpu-operator디바이스 플러그인과 GPU 스케줄링 — nvidia.com/gpu는 어디서 오는가
쿠버네티스는 GPU를 모릅니다. 노드가 GPU를 자원으로 광고하게 만드는 것은 kubelet에 등록된 디바이스 플러그인이고, 그 결과로 생기는 이름이 확장 리소스 nvidia.com/gpu입니다. 이 글은 디바이스 플러그인이 구현해야 하는 gRPC 인터페이스와 등록 소켓 경로, 확장 리소스에서 requests와 limits가 반드시 같아야 하는 이유, GPU를 CPU처럼 밀리코어로 쪼갤 수
2026-08-12 · 11 분 읽기 #gpu#kubernetes#device-plugin#scheduling#nvidiaNVIDIA GPU Operator 소개 — 원래 손으로 깔아야 했던 여섯 조각
쿠버네티스에서 GPU를 쓰려면 드라이버, NVIDIA Container Toolkit, 디바이스 플러그인, DCGM, GPU Feature Discovery, Node Feature Discovery를 노드마다 손으로 맞춰야 했습니다. NVIDIA GPU Operator는 이 조각들을 하나의 오퍼레이터로 묶고 ClusterPolicy 하나로 상태를 관리합니다. 각 컴포넌트가 정확히 무엇을 하
2026-08-12 · 11 분 읽기 #gpu#kubernetes#gpu-operator#nvidia#dcgmk0s 폐쇄망 설치와 k0sctl 자동화 — 이미지 번들 제작부터 다중 노드 업그레이드까지
인터넷 경로가 없는 폐쇄망에서 k0s 클러스터를 세우고 운영하는 절차를 명령어 단위로 정리합니다. k0s airgap list-images와 bundle-artifacts로 이미지 번들을 만드는 세 가지 방법, 자체 워크로드 이미지를 같은 번들에 합치는 요령, k0s가 번들을 자동 임포트하는 디렉터리 규칙, 그리고 defaultpullpolicy를 Never로 못 박아 외부 pull 시도를
2026-07-31 · 24 분 읽기 #kubernetes#k0s#k0sctl#air-gap#on-premise온프렘 경량 쿠버네티스 선택 기준 — k3s, k0s, RKE2를 데이터스토어와 규제로 가른다
기능 목록을 나열하는 대신 실제로 선택을 결정짓는 축만 놓고 k3s, k0s, RKE2를 비교합니다. 첫 번째 축은 데이터스토어입니다. SQLite로 시작하면 서버 노드를 늘릴 수 없고, 임베디드 etcd는 홀수 노드를 요구하며, 외부 데이터스토어는 운영 대상이 하나 늘어납니다. 두 번째는 무엇을 기본 번들에 넣는가와 그것을 걷어낼 때의 비용, 세 번째는 단일 바이너리와 스태틱 파드 배치의
2026-07-31 · 28 분 읽기 #kubernetes#k3s#k0s#rke2#on-premise폐쇄망 이미지 반입 파이프라인 설계 — skopeo, Harbor, 그리고 썩지 않는 재반입 런북
폐쇄망 쿠버네티스에서 아무도 제대로 쓰지 않는 문제, 즉 컨테이너 이미지를 반복적으로 안전하게 들여오는 파이프라인을 설계합니다. 반입 목록을 코드로 관리하는 방법부터 skopeo sync로 외부 레지스트리를 디렉터리와 OCI 레이아웃으로 떠내는 명령, oras로 임의 아티팩트를 나르는 방법, Harbor를 내부 배포 레지스트리로 두는 이중 레지스트리 패턴까지 다룹니다. Harbor 프록시 캐
2026-07-31 · 28 분 읽기 #kubernetes#air-gap#harbor#skopeo#supply-chain