Compose host ≈ Kubernetes Node
Compose replica ≈ Kubernetes Pod replica
Compose container ≈ Kubernetes Pod 내부 Container
단, Compose에서는 하나의 service replica가 보통 컨테이너 하나지만, Kubernetes에서는 Pod 하나 안에 컨테이너가 여러 개 들어갈 수 있다.
Docker Compose
Kubernetes
Compose project
Namespace
Compose service
Deployment/StatefulSet + Service
이미지와 컨테이너 실행 정의
Deployment
Pod template
컨테이너 개수
replicas
재시작 및 교체
ReplicaSet
내부 DNS 이름
Service
내부 고정 가상 IP
Pod 선택 및 부하분산
Service selector
호스트 외부 포트 노출
NodePort, LoadBalancer, Ingress
영구 볼륨
PVC, PV
설정과 시크릿
ConfigMap, Secret
Container
Pod 또는 Pod 내부 Container
Compose service DNS
Kubernetes Service DNS
postgres:5432
postgres:5432
redis:6379
redis:6379
airflow3-postgres-1
보통 직접 사용하지 않음
postgres-7b8489fd64-dkl8p
보통 직접 사용하지 않음
Deployment / StatefulSet / DaemonSet
컨테이너 접근
Docker Compose
Kubernetes
Compose Service 이름으로 접근
Kubernetes Service 이름으로 접근
Container 이름으로도 접근 가능한 경우가 있음
일반적으로 Pod 이름이 아니라 Service 이름으로 접근
project 네트워크 안에서 이름 해석
Namespace와 클러스터 DNS를 기준으로 이름 해석
Container 가 비교적 직접적인 네트워크 대상
Service가 Pod 집합을 추상화
# 컨테이너명
airflow3-airflow-dag-processor-1
airflow3 # compose project 이름
airflow3-airflow-dag-processor # service 이름
airflow3-airflow-dag-processor-1 # replica 번호
# DNS 명
# 기본 클러스터 도메인 `cluster.local` 라고 가정한다
# k3s 에서는 접근해야할 대상이 FQDN 으로 주어진다
# docker compose 에서는 compose service 별로 FQDN 개념이 없다, 단일 레이블 alias 로 접근함
postgres.airflow3.svc.cluster.local
postgres.airflow3.svc.cluster.local # 전체 FQDN
postgres.airflow3.svc # 특정 namespace 의 service 엔드포인트, service 레코드 영역
postgres.airflow3 # namespace
postgres # service