2.7. 애플리케이션 스케일링
HPA(horizontal Pod Autoscaler)를 사용하여 Pod를 수동으로 또는 자동으로 스케일링합니다. 클러스터 노드를 확장할 수도 있습니다.
사전 요구 사항
- 활성 ROSA 클러스터
- 배포된 OSToy 애플리케이션
2.7.1. 수동 Pod 스케일링 링크 복사링크가 클립보드에 복사되었습니다!
다음 방법 중 하나를 사용하여 애플리케이션 Pod를 수동으로 스케일링할 수 있습니다.
- ReplicaSet 또는 배포 정의 변경
- 명령줄 사용
- 웹 콘솔 사용
이 워크샵은 마이크로 서비스에 하나의 Pod만 사용하여 시작됩니다. 배포 정의에서 1
개의 복제본을 정의하면 Kubernetes Replication Controller에서 하나의 Pod를 활성 상태로 유지합니다. 그런 다음 부하를 기반으로 Horizontal Pod Autoscaler(HPA)를 사용하여 Pod 자동 스케일링을 정의하고 필요한 경우 더 많은 Pod를 확장하는 방법을 알아봅니다.
프로세스
- OSToy 앱의 탐색 메뉴에서 네트워킹 탭을 클릭합니다.
"Intra-cluster communication" 섹션에서 무작위로 색상을 변경하는 상자를 찾습니다. 박스 내에는 마이크로 서비스의 포드 이름이 표시됩니다. 마이크로 서비스 pod가 하나뿐이므로 이 예제에는 하나의 박스만 있습니다.
다음 명령을 실행하여 마이크로 서비스에 대해 실행 중인 포드가 하나뿐인지 확인합니다.
oc get pods
$ oc get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME READY STATUS RESTARTS AGE ostoy-frontend-679cb85695-5cn7x 1/1 Running 0 1h ostoy-microservice-86b4c6f559-p594d 1/1 Running 0 1h
NAME READY STATUS RESTARTS AGE ostoy-frontend-679cb85695-5cn7x 1/1 Running 0 1h ostoy-microservice-86b4c6f559-p594d 1/1 Running 0 1h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ostoy-microservice-deployment.yaml 을 다운로드하여 로컬 머신에 저장합니다.
다음 예제를 사용하여 배포 정의를 1개 대신 3개의 Pod로 변경합니다.
spec: selector: matchLabels: app: ostoy-microservice replicas: 3
spec: selector: matchLabels: app: ostoy-microservice replicas: 3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 복제본 변경 사항을 적용합니다.
oc apply -f ostoy-microservice-deployment.yaml
$ oc apply -f ostoy-microservice-deployment.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고워크로드 > Deployments > ostoy-microservice > YAML 탭으로 이동하여 OpenShift 웹 콘솔에서
ostoy-microservice-
deployment.yaml 파일을 편집할 수도 있습니다.다음 명령을 실행하여 Pod 3개가 있는지 확인합니다.
oc get pods
$ oc get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력에서는 이제 마이크로 서비스에 대한 포드가 하나만 아니라 3개의 포드가 있음을 보여줍니다.
출력 예
NAME READY STATUS RESTARTS AGE ostoy-frontend-5fbcc7d9-rzlgz 1/1 Running 0 26m ostoy-microservice-6666dcf455-2lcv4 1/1 Running 0 81s ostoy-microservice-6666dcf455-5z56w 1/1 Running 0 81s ostoy-microservice-6666dcf455-tqzmn 1/1 Running 0 26m
NAME READY STATUS RESTARTS AGE ostoy-frontend-5fbcc7d9-rzlgz 1/1 Running 0 26m ostoy-microservice-6666dcf455-2lcv4 1/1 Running 0 81s ostoy-microservice-6666dcf455-5z56w 1/1 Running 0 81s ostoy-microservice-6666dcf455-tqzmn 1/1 Running 0 26m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow CLI(명령줄 인터페이스)를 사용하거나 웹 UI(사용자 인터페이스)를 사용하여 애플리케이션을 확장합니다.
CLI에서 다음 명령을 실행하여 Pod 수를
3
에서2
로 줄입니다.oc scale deployment ostoy-microservice --replicas=2
$ oc scale deployment ostoy-microservice --replicas=2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - OpenShift 웹 콘솔 UI의 탐색 메뉴에서 워크로드 > 배포 > ostoy-microservice 를 클릭합니다.
- 중간에서 "3 Pod" 라벨이 있는 파란색 원을 찾습니다.
원 옆에 있는 화살표를 선택하면 Pod 수가 스케일링됩니다.
2
의 아래쪽 화살표를 선택합니다.
검증
CLI, 웹 UI 또는 OSToy 애플리케이션을 사용하여 Pod 수를 확인합니다.
CLI에서 다음 명령을 실행하여 마이크로 서비스에 두 개의 포드를 사용하고 있는지 확인합니다.
oc get pods
$ oc get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME READY STATUS RESTARTS AGE ostoy-frontend-5fbcc7d9-rzlgz 1/1 Running 0 75m ostoy-microservice-6666dcf455-2lcv4 1/1 Running 0 50m ostoy-microservice-6666dcf455-tqzmn 1/1 Running 0 75m
NAME READY STATUS RESTARTS AGE ostoy-frontend-5fbcc7d9-rzlgz 1/1 Running 0 75m ostoy-microservice-6666dcf455-2lcv4 1/1 Running 0 50m ostoy-microservice-6666dcf455-tqzmn 1/1 Running 0 75m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 웹 UI에서 워크로드 > 배포 > ostoy-microservice 를 선택합니다.
OSToy 애플리케이션의 탐색 메뉴에서 네트워킹을 선택하여 두 개의 포드가 있는지 확인할 수도 있습니다. 두 Pod에는 두 개의 색상이 지정된 박스가 있어야 합니다.
2.7.2. Pod 자동 스케일링 링크 복사링크가 클립보드에 복사되었습니다!
AWS의 Red Hat OpenShift Service는 Horizontal Pod Autoscaler (HPA)를 제공합니다. HPA는 필요한 경우 메트릭을 사용하여 Pod 수를 늘리거나 줄입니다.
프로세스
웹 UI의 탐색 메뉴에서 Pod 자동 스케일링을 선택합니다.
다음 명령을 실행하여 HPA를 생성합니다.
oc autoscale deployment/ostoy-microservice --cpu-percent=80 --min=1 --max=10
$ oc autoscale deployment/ostoy-microservice --cpu-percent=80 --min=1 --max=10
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은 ostoy-microservice 배포에서 제어하는 Pod의 복제본 1~10개 사이를 유지 관리하는 HPA를 생성합니다. 배포 중에 HPA는 모든 Pod에서 평균 CPU 사용을 80% 및 40밀리코어로 유지하기 위해 복제본 수를 늘리고 줄입니다.
Pod 자동 확장 > Horizontal Pod 자동 확장 페이지에서 로드 증가를 선택합니다.
중요부하를 늘리면 CPU 집약적 계산이 생성되므로 페이지가 응답하지 않을 수 있습니다. 이는 예상된 응답입니다. 로드를 한 번만 늘리십시오. 프로세스에 대한 자세한 내용은 마이크로 서비스의 GitHub 리포지토리 를 참조하십시오.
몇 분 후에 새 Pod가 색상이 지정된 박스로 표시되는 페이지에 표시됩니다.
참고이 페이지는 지연이 발생할 수 있습니다.
검증
다음 방법 중 하나를 사용하여 Pod 수를 확인합니다.
OSToy 애플리케이션의 웹 UI에서 원격 pod 상자를 참조하십시오.
Pod가 하나뿐이므로 워크로드를 늘리면 Pod 증가가 트리거됩니다.
CLI에서 다음 명령을 실행합니다.
oc get pods --field-selector=status.phase=Running | grep microservice
oc get pods --field-selector=status.phase=Running | grep microservice
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
ostoy-microservice-79894f6945-cdmbd 1/1 Running 0 3m14s ostoy-microservice-79894f6945-mgwk7 1/1 Running 0 4h24m ostoy-microservice-79894f6945-q925d 1/1 Running 0 3m14s
ostoy-microservice-79894f6945-cdmbd 1/1 Running 0 3m14s ostoy-microservice-79894f6945-mgwk7 1/1 Running 0 4h24m ostoy-microservice-79894f6945-q925d 1/1 Running 0 3m14s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift Cluster Manager에서 자동 스케일링을 확인할 수도 있습니다.
- OpenShift 웹 콘솔 탐색 메뉴에서 모니터링 > 대시보드를 클릭합니다.
대시보드에서 Kubernetes / Compute Resources / Namespace (Pods) 및 네임스페이스 ostoy 를 선택합니다.
CPU 및 메모리 전반에 걸쳐 리소스 사용량이 표시되는 그래프가 표시됩니다. 상단 그래프는 Pod당 최근 CPU 사용량이 표시되고 더 낮은 그래프는 메모리 사용량을 나타냅니다. 다음은 그래프의 호출을 나열합니다.
- 부하 증가(A).
- 두 개의 새 Pod(B 및 C)가 생성되었습니다.
- 각 그래프의 간격은 CPU 소비를 나타내며 더 많은 로드를 처리하는 Pod를 나타냅니다.
로드가 감소하고 Pod가 삭제되었습니다.
2.7.3. 노드 자동 스케일링 링크 복사링크가 클립보드에 복사되었습니다!
AWS의 Red Hat OpenShift Service를 사용하면 노드 자동 스케일링을 사용할 수 있습니다. 이 시나리오에서는 클러스터가 처리할 수 없는 대규모 워크로드가 있는 작업으로 새 프로젝트를 생성합니다. 자동 스케일링이 활성화되면 로드가 현재 용량보다 크면 클러스터에서 자동으로 로드를 처리할 새 노드를 생성합니다.
사전 요구 사항
- 머신 풀에서 자동 스케일링이 활성화됩니다.
프로세스
다음 명령을 실행하여
autoscale-ex
라는 새 프로젝트를 생성합니다.oc new-project autoscale-ex
$ oc new-project autoscale-ex
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 작업을 생성합니다.
oc create -f https://raw.githubusercontent.com/openshift-cs/rosaworkshop/master/rosa-workshop/ostoy/yaml/job-work-queue.yaml
$ oc create -f https://raw.githubusercontent.com/openshift-cs/rosaworkshop/master/rosa-workshop/ostoy/yaml/job-work-queue.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 몇 가지 minuts 후 다음 명령을 실행하여 Pod를 확인합니다.
oc get pods
$ oc get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Pending
상태에 Pod가 많이 있으므로 이 상태는 자동 스케일러를 트리거하여 머신 풀에 더 많은 노드를 생성합니다. 이러한 작업자 노드를 생성하는 시간을 허용합니다. 몇 분 후에 다음 명령을 사용하여 현재 보유하고 있는 작업자 노드 수를 확인합니다.
oc get nodes
$ oc get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 워크로드를 처리하기 위해 작업자 노드가 자동으로 생성되었는지 확인할 수 있습니다.
다음 명령을 입력하여 OSToy 애플리케이션으로 돌아갑니다.
oc project ostoy
$ oc project ostoy
Copy to Clipboard Copied! Toggle word wrap Toggle overflow