파드 (Pods)
> 쿠버네티스의 배포 가능한 가장 작은 컴퓨팅 유닛. 파드는 그 자체로 하나의 논리적인 호스트
파드를 생성하기 위해 파드를 정의할 때 다음과 같은 형태의 YAML 파일을 사용
예시)
simple-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
파드 적용하기
kubectl apply -f simple-pod.yaml
디플로이먼트 (Deployment)
> 쿠버네티스에서의 Deployment는 파드의 교체/배치(placement)와 관련된 명세
파드의 진실
- 파드는 일시적이고, 언제나 삭제될 수 있음을 감안하고 만들기 때문에
> 직접 사용자가 개별 파드를 만들 일이 그리 많지 않음
- 사실 컨테이너를 수동으로 만들고 관리하는 것은, 그냥 도커만 단독으로 사용해도 충분히 할 수 있음
> 쿠버네티스의 핵심은 컨테이너를 오케스트레이션 하는 것
> 컨테이너를 오케스트레이션 하는 것은 즉 파드 장애 시 자동 복구하거나, 복제하거나 하는 등의 일을 자동으로 처리하는 데에 있음
> AWS로 따지면 ECS(Elastic Container Service)가 하는 일과 비슷
> 컨테이너의 로드 밸런싱과 오토 스케일링과 같은 일을 담당
- 결론적으로, 파드는 디플로이먼트, 스테이트풀셋, 데몬 셋을 이용해 관리하는 것이 바람직
> 해당 워크로드 리소스는 파드 템플릿을 항상 포함
deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
# 여기서부터 파드 템플릿이다
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
# 여기까지 파드 템플릿이다
> 디플로이먼트는 파드를 업데이트하기 위한 선언적 명세
디플로이먼트 리소스를 통해 다음을 할 수 있음
- (레플리카셋, 즉 복제본 구성을 이용하여) 파드를 원하는 개수만큼 실행시킬 수 있음
- (제어판 Control Plane을 이용하여) 파드를 업데이트할 수 있음
- 마찬가지로, 파드를 롤백하는 것도 가능
다양한 배포 전략
- 애플리케이션의 여러 복제본이 존재할 경우, 이 각각의 복제본을 새 버전으로 업데이트하는 방법
- 재생성 (Recreate): 이전 버전을 삭제하고 새 버전 생성
- 블루/그린 배포: 한 번에 이전 버전에서 새 버전으로 연결을 전환
- 롤링 배포: 이전 버전을 scale down 하고, 새 버전을 scale up 하는 방식으로 단계별로 교체, 롤아웃(rollout)이라고 부릅니다.
- 카나리 배포: 새 버전이 잘 작동한다고 판단되면, 이전 버전을 교체
> 쿠버네티스가 지원하는 배포 전략으로는 재생성(Recreate)과 롤링 배포(RollingUpdate) 방식을 선택할 수 있음
디플로이먼트 적용하기
kubectl apply -f <디플로이먼트_파일>
서비스
파드를 외부로 노출시키기
> 클러스터 안에 파드는 각각 고유의 IP를 가지고 있지만, 직접 우리가 내부망에 접속할 수 있는 것은 아님
- 서비스 리소스를 사용하면 파드에서 실행 중인 애플리케이션을 클러스터 외부에서 접근할 수 있다.
- 또한 서비스를 사용하여 클러스터 내부에서 사용할 수 있는 서비스만 게시할 수 있다. 쿠버네티스에서 서비스는 파드의 집합에 접근할 수 있는 정책을 정의하는 추상적 개념. 서비스 리소스가 정의된 YAML 파일에 selector라는 것을 이용해 서비스할 대상 타깃을 설정할 수 있음
> 서비스 리소스는 이러한 파드 집합에 접근할 수 있게 하며, 파드가 교체되거나, 어떤 특정 파드에 문제가 생긴 경우에도 사용 가능한 파드를 찾아 알아서 접속할 수 있게 도움
service.yaml
'DevOps BootCamp > 쿠버네티스' 카테고리의 다른 글
볼륨과 스테이트풀셋 (0) | 2023.05.22 |
---|---|
새 버전이 망가졌어요! 3.0에서 2.0으로 롤백하기 (1) | 2023.05.20 |
쿠버네티스 service 타입의 비교 (0) | 2023.05.18 |
쿠버네티스와 컨테이너 오케스트레이션 (0) | 2023.05.17 |
쿠버네티스 - 차트 시트 (0) | 2023.05.06 |