쿠버네티스(Kubernetes) 개념과 이해 - 2
Intro
쿠버네티스(Kubernetes) 개념과 이해 - 1에서는 오브젝트에 대해 이해했다. 이번 포스팅에서도 document를 이해할 수 있을 정도의 키워드 습득을 목표로 학습하고자 한다.
컨트롤러
1에서 설명했던 4개의 오브젝트로 애플리케이션을 설정, 배포할 수 있다. 이를 좀 더 편하게 관리하기 위해 컨트롤러 개념을 사용한다.
컨트롤러는 기본 오브젝트들을 생성하고, 관리하는 역할을 해준다. 종류는 Replication Controller(RC), Replication Set, DaemonSet, Job, StatefulSet, Deployment 들이 있다.
Replication Controller
Replication Controller는 Pod를 관리해주는 역할을 한다. 지정된 수로 Pod를 기동하고 관리한다.
Replica의 수, Pod Selector, Pod Template로 구성된다.
- Replica
Replication Controller에 의해 관리된다. Pod 수를 유지하도록 한다. replica가 3이라면 3개의 pod만 띄우도록 한다. - Selector
Replication Controller가 관리한 Pod를 가지고 오는데 사용. - Pod Template
어떻게 Pod를 만들지에 대한 정보를 기재하는 곳
apiVersion: v1 # k8s API버전
kind: ReplicationController # 리소스 종류 정의
metadata: # 라벨이나 리소스 이름 등 각종 메타데이터
name: nginx # ngnix라는 이름의 Replication Controller
spec: # 리소스에 대한 상세 스펙
replicas:3 # 3개의 Pod가 항상 운영되도록 설정
selector:
app:ngnix # label이 "app:nginx"인 Pod들을 관리한다.
template: # 어떻게 Pod를 만들지에 대한 Template
metadata:
name:ngnix
labels:
app:nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 8090
ReplicaSet
ReplicaSet은 ReplicaController의 새로운 버전이라 생각하면 된다. RC는 Equality 기반의 Selector를 이용하지만, Replica Set은 Set 기반의 Selector를 이용한다.
쿠버네티스 배포에 대한 이해
Deployment를 이해하기 전, 쿠버네티스 배포를 이해하자.
블루/그린 배포
블루(old)버전의 시스템을 그린(new)버전으로 배포한 후, 트래픽을 블루에서 그린으로 한번에 돌리는 방식이다.
- 새로운 RC를 만든다.
- 새로운 RC에 있는 새로운 템플릿으로 Pod를 생성한다.
- Pod 생성이 끝나면 서비스를 새로운 Pod로 옮긴다.
- 배포 완료 후 문제가 없으면 예전 버전의 RC와 Pod를 지워준다.
롤링 업그레이드
Pod를 하나씩 업그레이드 해가는 방식이다.
- 새로운 RC를 만든 후, 기존 RC에서 replica 수를 하나 줄인다.
- 새로운 RC에 replica 수를 하나만 준다.
- 새로운 RC에 의해 생성된 Pod를 서비스에 포함시킨다.
- 기존 RC의 replica를 하나 더 줄이고, 새로운 RC의 replica를 하나 더 늘린다.
Deployment
Deployment는 ReplicaController와 ReplicaSet의 상위 추상화 개념이다. 실제 운영할 때는 Deployment를 사용한다.
위에서 설명한 배포 방식은 RC 단위의 컨트롤이 가능하지만, 여전히 작업이 필요하고 모니터링이 필요하다. 롤백 역시 수동 컨트롤이 필요하다.
Deployment는 Pod 배포를 위해 RC를 생성하고 관리한다. 특히, 롤백을 위한 기존 버전의 RC 관리도 포함되어 있다.
*