이 저장소는 다음 세 가지 환경에서 실습할 수 있도록 구성되어 있습니다.
| 환경 | 폴더 / 방법 | 권장 사양 |
|---|---|---|
| VirtualBox (로컬 VM) | virtualbox/ |
RAM 8GB+, 4코어+ |
| VMware (로컬 VM) | vmware/ |
RAM 8GB+, 4코어+ |
| GitHub Codespaces (클라우드) | 이 저장소 → Code → Codespaces | 4 CPU / 16GB (자동 구성) |
[설치 단계 요약]
① OS 에 맞는 패키지 다운로드 (Windows .exe / macOS .dmg / Linux .deb/.rpm)
↓
② 설치 마법사 실행 (관리자/sudo 권한 필요)
↓
③ Extension Pack 설치 (USB 3.0, RDP 지원용)
→ 같은 페이지의 "VirtualBox Extension Pack" 다운로드 후 설치
↓
④ 설치 확인: VBoxManage --version
→ VirtualBox 상세 K8s 설정: virtualbox/README.md
공식 다운로드 (Broadcom 계정 필요)
- Workstation Pro (Windows/Linux): https://support.broadcom.com/group/ecx/productdownloads?subfamily=VMware+Workstation+Pro
- Fusion Pro (macOS): https://support.broadcom.com/group/ecx/productdownloads?subfamily=VMware+Fusion
참고: VMware Workstation Pro / Fusion Pro 는 2024년부터 개인 사용자에게 무료 제공됩니다.
[설치 단계 요약]
① Broadcom 계정 생성 또는 로그인 (https://profile.broadcom.com/web/registration)
↓
② 제품 페이지에서 최신 버전 설치 파일 다운로드
↓
③ Windows: .exe 실행 → 설치 마법사 진행 (Enhanced Keyboard Driver 포함 권장)
macOS: .dmg 열기 → Applications 이동 → 시스템 보안 승인
Linux: chmod +x *.bundle && sudo ./VMware-Workstation-Full-*.bundle
↓
④ 첫 실행 시 "Use for free" (개인 무료 라이선스) 선택
↓
⑤ 설치 확인: vmrun list
→ VMware 상세 K8s 설정: vmware/README.md
이 저장소는 GitHub Codespaces 에서 4 CPU / 16 GB 머신으로
Kubernetes Control Plane 단일 노드를 자동 구성합니다.
[Codespaces 시작 방법]
① GitHub 저장소 페이지 → "Code" 버튼 클릭
↓
② "Codespaces" 탭 → "..." 메뉴 → "New with options..."
↓
③ Machine type: "4-core" (4 CPU / 16 GB RAM) 선택
↓
④ "Create codespace" 클릭
↓
⑤ 컨테이너 빌드 완료 후 자동으로 k8s 단일 노드 클러스터 생성
↓
⑥ 아래 명령어로 클러스터 확인
# Codespaces 터미널에서 실행
kubectl config current-context # kind-lecture
kubectl get nodes # control-plane Ready
kubectl get ns lecture # lecture 네임스페이스| 항목 | 값 |
|---|---|
| 머신 타입 | 4 CPU / 16 GB RAM |
| Kubernetes 배포 방식 | kind (Docker-in-Docker) |
| 클러스터 구성 | Control Plane 단일 노드 |
| 설치 도구 | kubectl, helm, kind |
| 기본 네임스페이스 | lecture |
- 통합 강의 폴더:
lecture01~lecture15 - 각 강의는 해당 폴더의
README.md를 기준으로 진행 - 이론/실습 자료와 이미지가 lecture 폴더별로 함께 정리됨
lecture01: 환경 구축과 Docker 이미지 준비lecture02: Kubernetes Architecturelecture03: Pods with kubectllecture04: ReplicaSets with kubectllecture05: Deployments with kubectllecture06: Services with kubectllecture07: YAML Basics와 Manifestlecture08: Pods with YAML와 Probe 안정성lecture09: ReplicaSets with YAMLlecture10: Deployments with YAMLlecture11: Services with YAMLlecture12: Dashboard와 Observabilitylecture13: Auto Scaling (HPA)lecture14: Network, Ingress, Troubleshootinglecture15: Reference and Review
- Kubernetes는 고대 그리스어
kubernētēs(조타수/항해사)에서 유래 k8s는K와s사이 8글자를 줄인 표기
- 하드웨어 가상화 기반으로 OS 단위 격리
- 장점: 격리/호환성 높음
- 단점: 자원 오버헤드 큼
- OS 커널 공유 + 프로세스 단위 격리
- 장점: 가볍고 빠른 배포
- 단점: 커널 공유로 보안/격리 설계 중요
- 컨테이너 이미지 빌드/배포/실행 도구 생태계
- Dockerfile, 레지스트리, 실행/네트워크/볼륨 관리 제공
- 컨테이너 이미지/런타임 표준
- 목적: 도구/런타임 간 호환성 확보
- 컨테이너 오케스트레이션 플랫폼
- 배포/스케일링/복구/롤링업데이트/서비스 라우팅 자동화
| 구분 | VM | Container | Docker | OCI | Kubernetes |
|---|---|---|---|---|---|
| 성격 | 하드웨어 가상화 | OS 수준 격리 | 컨테이너 도구 생태계 | 컨테이너 표준 | 오케스트레이션 플랫폼 |
| 격리 | 높음(OS 단위) | 중간(프로세스 단위) | 컨테이너 격리 기반 | 표준 자체는 실행 주체 아님 | Pod/Namespace 기반 |
| 자원 효율 | 낮음 | 높음 | 높음 | N/A | 높음 |
| 주요 목적 | 레거시/강격리 | 경량 앱 실행 | 빌드/배포 편의 | 호환성 | 대규모 운영 자동화 |
- kubelet은 각 노드의 에이전트로서 Pod를 실제 실행/유지
- API Server와 통신해 노드/Pod 상태 보고
- Liveness/Readiness/Startup probe 결과 반영
- metrics-server가 kubelet로부터 리소스 지표 수집
# kubeadm 계열 클러스터
sudo systemctl status kubelet
sudo journalctl -u kubelet -n 200 --no-pager
# k3s 계열 클러스터
sudo systemctl status k3s
sudo systemctl status k3s-agent- 배포(Deployment)
- 스케일링(HPA)
- 자동 복구(Self-Healing)
- 네트워킹(Service/Ingress)
- 구성 관리(ConfigMap/Secret)
- 롤링 업데이트 및 롤백
| CSP | 관리형 Kubernetes | 이미지 레지스트리 | 서버리스/관리형 컨테이너 |
|---|---|---|---|
| AWS | EKS | ECR | Fargate |
| GCP | GKE | Artifact Registry | Cloud Run |
| Azure | AKS | ACR | ACI |
| Oracle Cloud | OKE | OCIR | Virtual Nodes |
- GitHub에서 이 저장소를 Codespaces로 엽니다 (4 CPU / 16 GB 머신 선택).
- 컨테이너 생성 후
postCreateCommand가 실행되어kubectl,helm,kind를 설치합니다. - kind Control Plane 단일 노드 클러스터(
kind-lecture)가 없으면 자동 생성됩니다. - 클러스터 확인:
kubectl config current-context
kubectl get nodes
kubectl get ns lecturelecture01부터lecture15순서로 진행합니다.- 각 lecture의
README.md에서 목표/순서를 먼저 확인합니다. - 실습 중 막히면 해당 lecture의 트러블슈팅 섹션부터 확인합니다.
- 최종 복습은
lecture15의 치트시트/용어집/샌드박스로 마무리합니다.