학습 내용

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

컴포넌트역할
kubeletAPI 서버 지시에 따라 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 YAML
apiVersion: v1
kind: Namespace
metadata:
  name: dev

4-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.25

apiVersion 주요 값

리소스apiVersion
Pod, Service, Namespacev1
Deployment, ReplicaSet, DaemonSetapps/v1
CronJobbatch/v1
Ingressnetworking.k8s.io/v1
NetworkPolicynetworking.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 확인

참고 링크