학습 내용
4-1. Kubernetes 동작원리
컨테이너 실행 흐름
개발자 → docker build & push (Docker Hub)
→ kubectl 명령 → kube-apiserver
→ kube-scheduler (최적 노드 선택)
→ kubelet (해당 노드)
→ containerd → 컨테이너 실행
컴포넌트 구성
Control Plane (Master)
| 컴포넌트 | 역할 |
|---|---|
| kube-apiserver | 모든 요청의 진입점, REST API |
| etcd | 클러스터 상태 저장소 (key-value) |
| kube-scheduler | 최적 노드에 Pod 배치 결정 |
| kube-controller-manager | 상태 감시 및 보정 (Node, Replication 등) |
Worker Node
| 컴포넌트 | 역할 |
|---|---|
| kubelet | API 서버 지시에 따라 Pod 실행/관리 |
| kube-proxy | 네트워크 규칙 설정 (iptables) |
| Container Runtime | 컨테이너 실행 (containerd) |
Addon
- CoreDNS — 클러스터 내부 DNS
- CNI 플러그인 — Pod 네트워크 구성
- Dashboard — 웹 UI
4-2. Namespace
논리적 클러스터 분리 단위. 팀/프로젝트별로 리소스를 격리할 때 사용
기본 Namespace
| 이름 | 용도 |
|---|---|
| default | 기본 작업 공간 |
| kube-system | 쿠버네티스 컴포넌트 |
| kube-public | 공개 읽기 가능 리소스 |
| kube-node-lease | 노드 하트비트 |
# Namespace 조회
kubectl get namespace
kubectl get ns
# 특정 Namespace에서 작업
kubectl get pods -n kube-system
kubectl get all -n kube-system
# Namespace 생성
kubectl create namespace dev
kubectl create ns prod
# 기본 Namespace 변경
kubectl config set-context --current --namespace=dev
# Namespace YAMLapiVersion: v1
kind: Namespace
metadata:
name: dev4-3. YAML 템플릿과 API
Kubernetes 리소스 기본 구조
apiVersion: v1 # API 버전 (kubectl api-resources 로 확인)
kind: Pod # 리소스 종류
metadata: # 리소스 식별 정보
name: my-pod
namespace: default
labels:
app: my-app
spec: # 원하는 상태 정의
containers:
- name: nginx
image: nginx:1.25apiVersion 주요 값
| 리소스 | apiVersion |
|---|---|
| Pod, Service, Namespace | v1 |
| Deployment, ReplicaSet, DaemonSet | apps/v1 |
| CronJob | batch/v1 |
| Ingress | networking.k8s.io/v1 |
| NetworkPolicy | networking.k8s.io/v1 |
# 사용 가능한 API 리소스 및 버전 확인
kubectl api-resources
kubectl api-versions
# 특정 리소스 필드 확인
kubectl explain pod
kubectl explain pod.spec.containers실습
# Namespace 생성 및 Pod 배포
kubectl create ns dev
kubectl run nginx --image=nginx -n dev
kubectl get pods -n dev
# 다른 Namespace 서비스 접근 (DNS)
# 같은 NS: http://서비스명
# 다른 NS: http://서비스명.네임스페이스.svc.cluster.local
# YAML로 멀티 리소스 생성
kubectl apply -f namespace.yaml
kubectl apply -f pod.yaml
# 리소스 조회
kubectl get all -n dev
kubectl delete ns dev # Namespace 삭제 시 내부 리소스 모두 삭제체크리스트
- Control Plane / Worker Node 컴포넌트 각 역할 설명
- 컨테이너 실행 전체 흐름 (kubectl → apiserver → scheduler → kubelet)
- Namespace 생성 및
-n옵션 활용 - YAML 4가지 기본 필드 (apiVersion, kind, metadata, spec)
-
kubectl api-resources로 apiVersion 확인