학습 목표
- 컨테이너 오케스트레이션이 무엇인지 이해할 수 있다.
- 쿠버네티스의 간단한 작동 원리를 이해할 수 있다.
- 쿠버네티스 리소스 명세를 작성할 수 있다.
- 파드 명세를 작성할 수 있다.
- 디플로이먼트 명세를 작성할 수 있다.
- 서비스를 이용해 파드를 노출할 수 있다.
- kubectl 명령어를 사용하여 리소스의 생성, 삭제, 조회를 할 수 있다.
- kubectl 명령어를 사용하여 롤아웃 관련 작업을 진행할 수 있다.
- 롤링 배포 현황을 확인할 수 있다.
- 새로운 버전에 문제가 발생했을 때 롤백할 수 있다.
(이하 advanced)
- liveness probe를 이용하여 파드의 health check를 할 수 있다.
- 쿠버네티스가 Stateful한 애플리케이션을 다루는 방법을 이해할 수 있다.
- 쿠버네티스에서 인그레스를 이용한 HTTP 기반 라우팅을 적용할 수 있다.
- helm 패키지 매니저를 사용할 수 있다.
- 파드는 Stateless함
- 파드는 일시적이며, 언제나 삭제될 수 있음
- 따라서, 파드 그 자체는 Stateless
- 이러한 파드의 교체와 배치를 담당하는 것이 디플로이먼트
- 디플로이먼트는 레플리카셋을 통해 파드를 scale out하며, 이때 만들어지는 파드들은 상호 대체 가능함
- 파드가 사라져도 데이터를 남기고 싶다면?
- 파드 그 자체에 상태(데이터)를 남겨야만 하는 Stateful 애플리케이션으로는 MySQL, mongoDB, redis와 같은 데이터베이스가 있음
- 데이터베이스 애플리케이션이 담긴 파드가 사라질 때, 데이터가 함께 사라지도록 두어서는 안 됨
- 영속적인(Persistence) 데이터(프로그램의 실행이 종료되어도 사라지지 않는 데이터)를 저장하기 위해 볼륨(Volume)을 연결할 수 있음
- Stateful한 애플리케이션을 관리하려면?
- 파드 명세에 PV를 정의해서 직접 연결하는 것은 좋은 방법이 아님
- 이러한 의존도를 줄이기 위해, 퍼시스턴스 볼륨 클레임(Persistence Volume Claim)을 이용하여 PV와 연결
- PVC는 파드가 볼륨의 세부 사항을 몰라도 볼륨을 사용할 수 있게 도와줌
- PV는 실제로 데이터가 저장되는 공간
- PVC는 PV를 선택, 연결해 주는 요청 그 자체
- Stateful한 애플리케이션이 수평 확장한다면?
- 파드를 정의할 때 PVC를 통해 볼륨에 연결할 수 있음
- 파드를 디플로이먼트로 배포해도, PVC를 통해 연결되는 볼륨은 하나이기 때문에, 결국 같은 스토리지를 사용하는 것이 됨
- 파드마다 별도의 데이터를 저장할 수 있게 만들려면, 수평확장되는 파드에 서로 다른 PV가 연결되어야 함
- 파드가 PV를 동적으로 요청해서 그때그때 볼륨이 생성되게 하려면 스토리지 클래스(StorageClass) 리소스를 사용해야 함
- 사용자가 요청할 때, 자동으로 PV를 프로비저닝 할 수 있게 도움
- 스테이트풀셋
- 스테이트풀셋은 애플리케이션 구성(파드)을 복제하더라도, 스토리지 클래스를 이용해 파드가 필요로 하는 볼륨을 자동으로 프로비저닝하여 연결함
- 첫 번째 파드를 primary(master), 두 번째 파드를 secondary 복제본처럼 구성하는 것도 가능함
- 디플로이먼트와 스테이트풀셋 둘 다 동일한 컨테이너 스펙을 기반으로 둔 파드들을 관리한다는 점에는 같지만, 가장 결정적인 차이점은 파드의 순서와 고유성을 보장한다는 것
- 스테이트풀셋이 생성한 파드는 상호 대체할 수 없는 파드
- 스테이트풀셋을 사용할 때의 주의사항
- 파드에 지정된 스토리지는 관리자에 의해 퍼시스턴트 볼륨 프로비저너를 기반으로 하는 storage class를 요청해서 프로비전하거나 사전에 프로비전이 되어야 함
- 헤드리스 서비스가 필요함
'Code States > TIL' 카테고리의 다른 글
[0523] 컨테이너 오케스트레이션 - helm 패키지 매니저 (0) | 2023.05.23 |
---|---|
[0522] 컨테이너 오케스트레이션 - 쿠버네티스 네트워크 (0) | 2023.05.22 |
[0519] (페어) 컨테이너 오케스트레이션 - 새 버전이 망가졌어요 (0) | 2023.05.19 |
[0518] 컨테이너 오케스트레이션 - 쿠버네티스 워크로드 (0) | 2023.05.18 |
[0518] 컨테이너 오케스트레이션 - 쿠버네티스 주요 개념 (0) | 2023.05.18 |