
클러스터를 만들거나 관리하지 않고, 컨테이너 사양만 정의하면 바로 실행해주는 서버리스 컨테이너 서비스.
AWS로 치면 ECS Fargate에 가깝다. 노드(서버)라는 개념이 사용자에게 노출되지 않는다.
| NKS | NCS | |
|---|---|---|
| 추상화 단위 | 클러스터 → 노드 → 파드 | 템플릿 → 워크로드 → 작업 |
| 노드 관리 | 사용자가 사양·개수 결정 | 없음 (사용자가 신경 안 씀) |
| 학습 곡선 | 높음 (K8s 전체) | 낮음 (콘솔 폼 작성 수준) |
| 유연성 | 매우 높음 (생태계 전체 활용) | 제한적 |
| kubectl / Helm / ArgoCD | o | x |
| 적합 | MSA, 복잡한 배포 전략 | 단순 API, 배치, 짧은 GPU 작업 |
판단 기준: "이 워크로드에 쿠버네티스의 복잡성을 지불할 가치가 있나?"
API 서버 1~2개면 NCS가 훨씬 빠르다. 서비스가 10개 넘어가면 NKS.
템플릿 (Template) "어떤 컨테이너를 어떻게 만들지" — 설계도
│ 참조(Reference)
▼
워크로드 (Workload) "그 설계도로 몇 개를 어떻게 띄울지" — 실행 명세
│ 생성(Create)
▼
작업 (Task) × N 실제로 돌아가는 컨테이너 묶음 — 실체
컨테이너의 사양을 정의한다. 여기에 들어가는 것:
기본 정보
컨테이너 사양 (1개 이상)
템플릿을 만들어도 컨테이너는 생기지 않는다.
템플릿은 워크로드를 만들기 위한 틀일 뿐이다. 워크로드를 생성해야 컨테이너가 뜬다.
템플릿을 유지해두고 필요할 때만 워크로드를 생성해 컨테이너를 굴리는 사용법도 가능하다.
(→ 배치 작업, 이벤트성 워크로드에 유용)
템플릿을 참조해서 실행 방식을 정의한다.
워크로드를 생성하면 템플릿에 정의된 컨테이너들이 작업 하위에 만들어진다.
작업IP:컨테이너포트로 직접 접근 가능쿠버네티스 대응: 작업(Task) ≈ Pod.
템플릿의 컨테이너 여러 개가 하나의 작업 안에 함께 뜨는 것도 Pod와 같은 구조다.

Template
├─ Basic Info: Name, Description
├─ VPC to connect: Subnet
├─ Container 1: 이미지 URL, CPU/Mem, GPU 없음, 포트 80, 스토리지 없음
└─ Container 2: 이미지 URL, CPU/Mem, GPU 없음, 포트 443, 스토리지 Online NAS
컨테이너 사양 2개를 한 템플릿에 정의했다.
Workload
├─ Basic Info: Name, Description
├─ Number of Running Workloads: 2 ← 작업 2개
├─ Load Balancer: Use
└─ Floating IP: Use
┌──────────── Load Balancer ────────────┐
Floating IP ──┤ 포트 80 → 각 작업의 Container 1로 분배 │
+ 도메인 │ 포트 443 → 각 작업의 Container 2로 분배 │
└───────┬───────────────────┬────────────┘
│ │
┌────────▼────────┐ ┌────────▼────────┐
│ Task 1 │ │ Task 2 │
│ ┌────┐ ┌──────┐ │ │ ┌────┐ ┌──────┐ │
│ │C1 │ │ C2 │ │ │ │C1 │ │ C2 │ │
│ │:80 │ │:443 │ │ │ │:80 │ │:443 │ │
│ └────┘ └──┬───┘ │ │ └────┘ └──┬───┘ │
│ IP │ │ │ IP │ │
└───────────┼─────┘ └───────────┼─────┘
│ │
└────► Online NAS ◄─┘
(Volume 공유, 같은 Mount Point)
IP
──────────────────── VPC Subnet ────────────────────
읽어낼 포인트
ReadWriteMany 개념. 블록 스토리지로는 안 되는 구조지정한 VPC 서브넷에 인터넷 게이트웨이가 연결되어 있지 않으면 플로팅 IP와 도메인을 사용할 수 없다.
외부 노출이 목적인데 접속이 안 되면 이걸 제일 먼저 확인.
| NCS | Kubernetes | 설명 |
|---|---|---|
| 템플릿 | Pod Template (Deployment의 spec.template) | 컨테이너 사양 정의 |
| 워크로드 | Deployment / ReplicaSet | 몇 개를 어떻게 실행할지 |
| 워크로드 실행 수 | replicas | 복제 개수 |
| 작업 (Task) | Pod | 실행 단위, 자체 IP 보유 |
| 컨테이너 | Container | 동일 |
| 로드 밸런서 | Service (type: LoadBalancer) | 트래픽 분배 |
| 플로팅 IP + 도메인 | EXTERNAL-IP + DNS | 외부 노출 |
| Online NAS 마운트 | PVC (ReadWriteMany) | 공유 영속 볼륨 |
| VPC 서브넷 | 클러스터 네트워크 | 네트워크 격리 |
이 표가 학습에 유용한 이유: NCS를 먼저 만져보면 K8s의 추상 개념이 훨씬 잘 이해된다.
반대로 K8s를 알면 NCS 콘솔은 30분이면 익힌다.
목표: 같은 Spring Boot 앱을 NCS와 NKS 양쪽에 배포해 차이를 체감하기
my-api:1.0.0 이미지 push (03 문서 참고)/actuator/health 호출 확인kubectl scale deployment my-api --replicas=4kubectl rollout undo로 롤백이 비교를 직접 해보고 정리해두면, 나중에 "왜 K8s를 썼는가"를 설명할 근거가 생긴다.