IBM Cloud 1기 활동 - 강의번역 프로젝트.
원본 강의
cognitiveclass.ai/courses/kubernetes-course
강의의 한글자막 제공을 위해 srt 파일로 번역하는 프로젝트를 진행 중입니다.
문맥이 어색하거나 내용이 잘못되었다고 느껴지시면 댓글로 남겨주세요.
이전 강의에서는 ReplicaSet을 사용해서 애플리케이션을 정해진 pod 개수만큼 확장하는 방법을 다뤘습니다. 이번 강의에서는 고정된 개수로 pod을 맞추는 대신, 자동확장에 초점을 맞춰 보겠습니다.
ReplicaSet은 애플리케이션 확장을 지원하는 좋은 방법이지만, 항상 10개의 인스턴스가 작동하고 있을 필요는 없습니다. 필요할 때만 애플리케이션이 확장되는 것이 더 좋겠죠. Horizontal Pod Autoscaler (HPA) 는 트래픽량에 맞춰서 pod 개수를 증가시키는 기능을 제공합니다. HPA에 목표 상태값을 입력하면 됩니다. (예컨대 CPU나 메모리 사용량 같은 값입니다.) 마스터 노드는 주기적으로 pod의 수치를 확인하고, 목표 상태값에 맞출 수 있도록 확장할 대상의 replicas 필드값을 수정합니다. 예컨대 ReplicaSet이나 Deployment의 replicas 항목을 변경하는 거죠.
이전까지와 마찬가지로, 현재 pod 상태를 확인하는 것에서부터 시작해봅시다. 이 시나리오에서, 현재 pod 개수는 1개입니다. Deployment를 생성했기 때문에, ReplicaSet이 자동으로 생성되었습니다.
"autoscale" 명령어에 특정 속성값을 추가해서 자동확장 기능을 사용해 봅시다. min은 pod의 최소 개수, max는 pod의 최대 개수를 정의합니다. cpu-percent는 새 pod을 생성하기 위한 트리거입니다. 여기서는 "클러스터의 cpu 사용량이 전체의 10%를 넘어가면, 새로운 Pod를 생성해라"는 의미의 명령이 됩니다. 예시에서는 아주 작은 숫자를 사용했는데, 애플리케이션이 cpu 집약적인 작업을 별로 하지 않기 때문입니다.
시스템 백단에서는 Deployment가 애플리케이션의 확장 및 축소작업을 하기 위해 ReplicaSet을 활용합니다. 이전에 배운 것과 똑같습니다. ReplicaSet의 replicas 항목을 보면, '자동확장'된 복제본의 개수는 자동확장 기능을 관리하기 위해 백그라운드에서 생성된 것입니다.
자동확장 기능을 활성화하는 다른 방법으로는, HorizontalPodAutoscaler라는 객체를 애플리케이션이 직접 생성하도록 yaml 파일에 정의하는 것입니다. autoscale 명령어와 마찬가지로 pod의 최소값 / 최댓값을 설정할 수 있습니다. cpu-percentage에 대응되는 항목은 "targetCPUUtilizationPercentage"입니다. 이 명세서는 이전에 본 것과 똑같은 autoscaler를 생성합니다. 물론 이런 방법도 있지만, autoscale 명령어를 사용하는 편이 더 간단합니다.
정리하자면, 이번 강의에서는 Kubernetes의 자동확장 기능을 사용해 수요 변동에 맞게 애플리케이션을 확장하고 축소하는 방법을 다루었습니다. CLI의 'autoscale' 명령어로 Deployment에 추가할 수 있고, 아니면 deployment 명세서에 "HorizontalPodAutoScaler" 라는 객체를 특정하는 식으로 생성할 수 있습니다. 이제 확장하는 방법을 배웠으므로, 업데이트를 반영하거나 실행중인 애플리케이션을 수정하는 방법을 알아야겠지요. 다음 강의에서는 Kubernetes를 활용해서 애플리케이션을 업데이트하는 'Rolling update' 기능을 알아보겠습니다.
'학습일지 > 클라우드' 카테고리의 다른 글
[IBM Cloud 강의번역 프로젝트] - ch3-4. ConfigMaps and Secrets (0) | 2020.09.11 |
---|---|
[IBM Cloud 강의번역 프로젝트] - ch3-3. Rolling Update (0) | 2020.09.10 |
[IBM Cloud 강의번역 프로젝트] - ch3-1. ReplicaSet (0) | 2020.09.08 |
[IBM Cloud 강의번역 프로젝트] - ch2-4. Basic Kubernetes Objects (0) | 2020.09.07 |
[IBM Cloud 강의번역 프로젝트] - ch2-3. Introduction to Kubernetes Objects (1) | 2020.09.05 |