왜 쿠버네티스인가?
과거 서버 관리 방식
- 자원이 통합되어 있지 않고, 필요에 따라 증설/회수 하는 비용 발생
- 낭비되는 자원 발생
- 무중단 업데이트를 위해 서버 가용성이 떨어지는 상황 발생
- 수동 스케일링 수행 (스케일아웃, 스케일업, 스케일인, 스케일다운)
쿠버네티스를 사용한 서버 관리 방식
- 자원 풀링 (낭비 자원 최소화)
- 오토 스케일링
- 오토 힐링 (컨테이너 죽으면 자동으로 새로운 컨테이너 실행)
- 무중단 업데이트 시 서버 가용성 유지 (새로운 버전의 컨테이너를 실행해 갈아끼우는 방식)
VM과 컨테이너의 차이

VM : 하이퍼바이저를 통해 Guest OS를 가상화해 동작
- 따라서 게스트 OS 간 격리로 인해 보안성이 높음
- 하나의 큰 모놀리식 서비스를 배포해야 돼서 자원 낭비
컨테이너 : 컨테이너 엔진을 통해 리눅스 기술인 cgroups, namespace 를 활용해 컨테이너 간 격리 환경 위에서 동작
- 호스트 OS와 자원을 공유해 보안성이 비교적 취약
- OS에 종속적 예) Linux OS에서 윈도우 컨테이너 사용 불가
- 모듈별로 쪼개서 컨테이너로 배포해서 자원 확보 가능
리눅스 서버, 도커, 쿠버네티스 비교

- 리눅스 서버 : 백엔드 서버를 직접 띄워서 서비스 제공
- 도커 : 도커 파일로 백엔드 서버의 도커 이미지를 만들고, 이를 실행한 뒤 컨테이너와 호스트 OS의 포트를 매핑해 서비스 제공
- 쿠버네티스 : 도커로 빌드된 이미지를 도커 허브로부터 받아와 Pod이라는 배포 단위의 컨테이너를 지정해 배포, 배포한 후 Service 객체를 활용해 외부 사용자가 접속할 수 있도록 포트를 Pod에 매핑해 서비스 제공
Kubernetes Overview

- 하나의 Kubernetes Cluster는 Master, Node들로 구분된다.
- Kubernetes Cluster 안에서는 Namespace로 환경을 분리할 수 있다.
- Service 를 사용해 Pod 들을 매핑해 외부 접근을 허용할 수 있다.
- Pod 안에는 여러 개의 Container 가 포함될 수 있다.
- Pod 데이터 영속성을 위해 Volume 을 사용한다.
- ResourceQuota 를 사용해 자원(메모리, 디스크 크기 등)에 제약(용량 제한)을 걸 수 있다.
- ConfigMap 을 사용해 Pod 에 환경 변수를 관리할 수 있다.
- Controller 를 통해 Pod 들을 관리할 수 있다. Controller의 종류로는 ReplicaSet, Deployment, DaemonSet, CronJob 등으로 다양하다.
- ReplicaSet은 Pod 상태를 감지해 죽은 Pod 를 다시 실행시키거나 개수를 조절한다.
- Deployment 는 업데이트를 지원하고, 실패 시 롤백 시켜준다.
- DaemonSet 은 하나의 Node에 하나의 Pod 만 실행되도록 유지해 준다.
- CronJob 은 여러 개의 Job 들을 반복적으로 수행하기 위해 스케줄링할 때 사용한다.
Reference : https://inf.run/yW34
'Tech > [Container] Kubernetes' 카테고리의 다른 글
쿠버네티스 기본 오브젝트 - Volume (0) | 2025.04.14 |
---|---|
쿠버네티스 기본 오브젝트 - Service (0) | 2025.04.14 |
쿠버네티스 기본 오브젝트 - Pod (0) | 2025.04.12 |
M4 Pro에서 UTM 설치부터 바닐라 k8s 클러스터(v1.32.1) 구축까지 (0) | 2025.03.28 |