# M2 노트북에서 실습 시작vagrant up --provider=virtualbox# 4대 VM 구동: CP(2GB) + Worker(2GB × 3) = 8GB# → 시스템 전체 메모리 부족!# → VM 끊김, 느려짐, 불안정
증상:
Kubernetes Pod들이 무작위로 재시작
kubectl 명령어 응답 지연
VM 전체가 멈추는 현상 반복
🤔 해결 시도: M1 맥미니로 이주 (16GB RAM)
아이디어: M2 노트북(8GB?) → M1 맥미니(16GB)로 옮기면 해결!
# M1 맥미니에서 동일한 VirtualBox 실행 시도cd /Users/irix/epix/_Lecture_prom_learning.kit-main/ch2/2.4vagrant up --provider=virtualbox# ❌ 실패!# Error: VirtualBox on ARM64 compatibility issues
# 방법 1: 백슬래시 이스케이프--set nodeExporter.tolerations\[0\].key="node-role.kubernetes.io/master"# 방법 2: 작은따옴표로 감싸기 (추천)--set 'nodeExporter.tolerations[0].key=node-role.kubernetes.io/master'# 방법 3: values.yaml 파일 사용cat > values.yaml << 'YAML'nodeExporter: tolerations: - key: node-role.kubernetes.io/master effect: NoSchedule operator: ExistsYAMLhelm install prometheus edu/prometheus -f values.yaml
Zsh vs Bash
Zsh: [] → 글로빙 패턴 (에러 발생)
Bash: [] → 일반 문자 (정상 동작)
해결: 항상 따옴표 사용하기!
🔴 Issue #4: kubectl 접근 불가 (kubeconfig 미설정) ⭐
💥 문제 상황
kubectl get po,svc -n monitoring# The connection to the server localhost:8080 was refused# E1203 23:49:24.398515 memcache.go:265 "Unhandled Error"# err="couldn't get current server API group list:# Get \"http://localhost:8080/api?timeout=32s\":# dial tcp [::1]:8080: connect: connection refused"
🔍 진단 과정
# 1. kubeconfig 파일 확인 시도cat ~/.kube/config# cat: /Users/irix/.kube/config: No such file or directory# 2. 디렉토리 존재 확인ls -la ~/.kube# ls: /Users/irix/.kube: No such file or directory
근본 원인: ~/.kube 디렉토리 자체가 존재하지 않음!
✅ 완벽한 해결 과정
# Step 1: .kube 디렉토리 생성mkdir -p ~/.kube# Step 2: Control Plane에서 admin.conf 가져오기vagrant ssh cp-k8s-1.30.3 -c "sudo cat /etc/kubernetes/admin.conf" > ~/.kube/config# Step 3: 파일 권한 설정 (보안)chmod 600 ~/.kube/config# Step 4: 접속 테스트kubectl cluster-infokubectl get nodeskubectl get po,svc -n monitoring
하드웨어 문제 해결 시 고려사항:
┌─────────────────────────────────────────┐
│ 1. 메모리는 항상 여유있게 (최소 2배) │
│ 2. ARM64는 아직 x86_64만큼 성숙 안 됨 │
│ 3. 하이퍼바이저 호환성은 칩셋마다 다름 │
│ 4. 헤드리스는 필수가 아니면 포기 고려 │
└─────────────────────────────────────────┘
ARM64 가상화의 현실:
M1 (2020): VirtualBox 불안정, VMware 안정
M2 (2022): VirtualBox 개선중, VMware 안정
M3 (2023): VirtualBox 안정화 시작
결론: 무료로 안정적인 헤드리스 환경은 아직 없음!
1️⃣ Vagrant VM 관리 전략
핵심 원칙:
🔄 vagrant reload: 설정 변경 시
🔄 vagrant halt → vagrant up: 일반적인 재시작
💥 vagrant destroy -f → vagrant up: 상태 불일치 발생 시 (가장 확실)
# 1. kubeconfig 파일 존재 확인ls -la ~/.kube/config# 2. 내용 확인kubectl config view# 3. 현재 컨텍스트 확인kubectl config current-context# 4. 클러스터 연결 테스트kubectl cluster-info# 5. API 서버 접근 테스트kubectl get nodes
# 전체 리소스 확인kubectl get all -n monitoring# Prometheus Server 로그kubectl logs -n monitoring deployment/prometheus-server -c prometheus-server# Node Exporter 로그 (특정 노드)kubectl logs -n monitoring daemonset/prometheus-node-exporter# 서비스 엔드포인트 확인kubectl get endpoints -n monitoring# Prometheus ConfigMap 확인kubectl get cm -n monitoring prometheus-server -o yaml
네트워크 디버깅
# LoadBalancer IP 확인kubectl get svc -n monitoring prometheus-server# MetalLB 상태 확인kubectl get ipaddresspool -n metallb-systemkubectl logs -n metallb-system deployment/controller# 직접 curl 테스트curl http://192.168.1.11/api/v1/status/config# 포트 포워딩으로 로컬 접속kubectl port-forward -n monitoring svc/prometheus-server 9090:80# 접속: http://localhost:9090
VM 상태 확인
# Vagrant 전체 상태vagrant status# 특정 VM SSH 접속vagrant ssh cp-k8s-1.30.3# VM 내부에서 클러스터 상태 확인vagrant ssh cp-k8s-1.30.3 -c "kubectl get nodes"# 네트워크 확인vagrant ssh cp-k8s-1.30.3 -c "ip addr show"