18.9. 튜토리얼: 애플리케이션 확장


18.9.1. 스케일링

HPA(horizontal Pod Autoscaler)를 사용하여 Pod를 수동으로 또는 자동으로 스케일링할 수 있습니다. 클러스터 노드를 확장할 수도 있습니다.

18.9.1.1. 수동 Pod 스케일링

다음 방법 중 하나를 사용하여 애플리케이션 Pod를 수동으로 스케일링할 수 있습니다.

  • ReplicaSet 또는 배포 정의 변경
  • 명령줄 사용
  • 웹 콘솔 사용

이 워크샵은 마이크로 서비스에 하나의 Pod만 사용하여 시작됩니다. 배포 정의에서 1 개의 복제본을 정의하면 Kubernetes Replication Controller에서 하나의 Pod를 활성 상태로 유지합니다. 그런 다음 부하가 많은 경우 로드를 기반으로 하고 초기 정의 이상으로 더 많은 Pod를 확장하는 HPA(수평 Pod Autoscaler)를 사용하여 Pod 자동 스케일링을 정의하는 방법을 알아봅니다.

사전 요구 사항

  • 활성 ROSA 클러스터
  • OSToy 애플리케이션이 해제됨

프로세스

  1. OSToy 앱의 탐색 메뉴에서 네트워킹 탭을 클릭합니다.
  2. "Intra-cluster communication" 섹션에서 무작위로 색상을 변경하는 "원격 Pod" 아래에 있는 상자를 찾습니다. 박스 내에는 마이크로 서비스의 포드 이름이 표시됩니다. 마이크로 서비스 pod가 하나뿐이므로 이 예제에는 하나의 박스만 있습니다.

    HPA 메뉴
  3. 다음 명령을 실행하여 마이크로 서비스에 대해 실행 중인 포드가 하나뿐인지 확인합니다.

    $ oc get pods

    출력 예

    NAME                                  READY     STATUS    RESTARTS   AGE
    ostoy-frontend-679cb85695-5cn7x       1/1       Running   0          1h
    ostoy-microservice-86b4c6f559-p594d   1/1       Running   0          1h

  4. ostoy-microservice-deployment.yaml 을 다운로드하여 로컬 머신에 저장합니다.
  5. 다음 예제를 사용하여 배포 정의를 1개 대신 3개의 Pod로 변경합니다.

    spec:
        selector:
          matchLabels:
            app: ostoy-microservice
        replicas: 3
  6. 다음 명령을 실행하여 복제본 변경 사항을 적용합니다.

    $ oc apply -f ostoy-microservice-deployment.yaml
    참고

    워크로드 > Deployments > ostoy-microservice > YAML 탭으로 이동하여 OpenShift 웹 콘솔에서 ostoy-microservice- deployment.yaml 파일을 편집할 수도 있습니다.

  7. 다음 명령을 실행하여 Pod 3개가 있는지 확인합니다.

    $ oc get pods

    출력에서는 이제 마이크로 서비스에 대한 포드가 하나만 아니라 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

  8. CLI를 사용하거나 웹 UI를 사용하여 애플리케이션을 확장합니다.

    • CLI에서 다음 명령을 실행하여 Pod 수를 3 에서 2 로 줄입니다.

      $ oc scale deployment ostoy-microservice --replicas=2
    • OpenShift 웹 콘솔 UI의 탐색 메뉴에서 워크로드 > 배포 > ostoy-microservice 를 클릭합니다.
    • 페이지 왼쪽에서 중간에 "3 Pod" 라벨이 있는 파란색 원을 찾습니다.
    • 원 옆에 있는 화살표를 선택하면 Pod 수가 스케일링됩니다. 2 의 아래쪽 화살표를 선택합니다.

      UI 스케일링

검증

CLI, 웹 UI 또는 OSToy 앱을 사용하여 Pod 수를 확인합니다.

  • CLI에서 다음 명령을 실행하여 마이크로 서비스에 두 개의 포드를 사용하고 있는지 확인합니다.

    $ oc get pods

    출력 예

    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

  • 웹 UI에서 워크로드 > 배포 > ostoy-microservice 를 선택합니다.

    워크로드 Pod 확인
  • OSToy 앱의 탐색 메뉴에서 네트워킹 을 선택하여 사용 중인 두 개의 포드가 있는지 확인할 수도 있습니다. 두 Pod에는 두 개의 색상이 지정된 박스가 있어야 합니다.

    UI 스케일링

18.9.1.2. Pod 자동 확장

AWS의 Red Hat OpenShift Service는 Horizontal Pod Autoscaler (HPA)를 제공합니다. HPA는 필요한 경우 메트릭을 사용하여 Pod 수를 늘리거나 줄입니다.

프로세스

  1. 웹 UI의 탐색 메뉴에서 Pod 자동 스케일링을 선택합니다.

    HPA 메뉴
  2. 다음 명령을 실행하여 HPA를 생성합니다.

    $ oc autoscale deployment/ostoy-microservice --cpu-percent=80 --min=1 --max=10

    이 명령은 ostoy-microservice 배포에서 제어하는 Pod의 복제본 1~10개 사이를 유지 관리하는 HPA를 생성합니다. 배포가 충분하지만 HPA는 모든 Pod의 평균 CPU 사용을 80% 및 40밀리코어로 유지하기 위해 복제본 수를 늘리고 줄입니다.

  3. Pod 자동 확장 > Horizontal Pod 자동 확장 페이지에서 로드 증가를 선택합니다.

    중요

    부하를 늘리면 CPU 집약적 계산이 생성되므로 페이지가 응답하지 않을 수 있습니다. 이는 예상된 응답입니다. Increase the Load only once을 클릭합니다. 프로세스에 대한 자세한 내용은 마이크로 서비스의 GitHub 리포지토리 를 참조하십시오.

    몇 분 후에 새 Pod가 색상이 지정된 박스로 표시되는 페이지에 표시됩니다.

    참고

    이 페이지는 지연이 발생할 수 있습니다.

검증

다음 방법 중 하나를 사용하여 Pod 수를 확인합니다.

  • OSToy 애플리케이션의 웹 UI에서 원격 pod 상자를 참조하십시오.

    HPA 메인

    Pod가 하나뿐이므로 워크로드를 늘리면 Pod 증가가 트리거됩니다.

  • CLI에서 다음 명령을 실행합니다.

    oc get pods --field-selector=status.phase=Running | grep microservice

    출력 예

    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

  • OpenShift Cluster Manager에서 자동 스케일링을 확인할 수도 있습니다.

    1. OpenShift 웹 콘솔 탐색 메뉴에서 모니터링 > 대시보드를 클릭합니다.
    2. 대시보드에서 Kubernetes / Compute Resources / Namespace (Pods) 및 네임스페이스 ostoy 를 선택합니다.

      메트릭 선택
    3. CPU 및 메모리 전반에 걸쳐 리소스 사용량이 표시되는 그래프가 표시됩니다. 상단 그래프는 Pod당 최근 CPU 사용량이 표시되고 더 낮은 그래프는 메모리 사용량을 나타냅니다. 다음은 그래프의 호출을 나열합니다.

      1. 부하 증가(A).
      2. 두 개의 새 Pod(B 및 C)가 생성되었습니다.
      3. 각 그래프의 간격은 CPU 소비를 나타내며 더 많은 로드를 처리하는 Pod를 나타냅니다.
      4. 로드가 감소하고 Pod가 삭제되었습니다.

        메트릭 선택

18.9.1.3. 노드 자동 확장

AWS의 Red Hat OpenShift Service를 사용하면 노드 자동 스케일링을 사용할 수 있습니다. 이 시나리오에서는 클러스터가 처리할 수 없는 대규모 워크로드가 있는 작업으로 새 프로젝트를 생성합니다. 자동 스케일링이 활성화되면 로드가 현재 용량보다 크면 클러스터에서 자동으로 로드를 처리할 새 노드를 생성합니다.

사전 요구 사항

  • 머신 풀에서 자동 스케일링이 활성화됩니다.

프로세스

  1. 다음 명령을 실행하여 autoscale-ex 라는 새 프로젝트를 생성합니다.

    $ oc new-project autoscale-ex
  2. 다음 명령을 실행하여 작업을 생성합니다.

    $ oc create -f https://raw.githubusercontent.com/openshift-cs/rosaworkshop/master/rosa-workshop/ostoy/yaml/job-work-queue.yaml
  3. 몇 가지 minuts 후 다음 명령을 실행하여 Pod를 확인합니다.

    $ oc get pods

    출력 예

    NAME                     READY   STATUS    RESTARTS   AGE
    work-queue-5x2nq-24xxn   0/1     Pending   0          10s
    work-queue-5x2nq-57zpt   0/1     Pending   0          10s
    work-queue-5x2nq-58bvs   0/1     Pending   0          10s
    work-queue-5x2nq-6c5tl   1/1     Running   0          10s
    work-queue-5x2nq-7b84p   0/1     Pending   0          10s
    work-queue-5x2nq-7hktm   0/1     Pending   0          10s
    work-queue-5x2nq-7md52   0/1     Pending   0          10s
    work-queue-5x2nq-7qgmp   0/1     Pending   0          10s
    work-queue-5x2nq-8279r   0/1     Pending   0          10s
    work-queue-5x2nq-8rkj2   0/1     Pending   0          10s
    work-queue-5x2nq-96cdl   0/1     Pending   0          10s
    work-queue-5x2nq-96tfr   0/1     Pending   0          10s

  4. Pending 상태에 Pod가 많이 있으므로 이 상태는 자동 스케일러를 트리거하여 머신 풀에 더 많은 노드를 생성해야 합니다. 이러한 작업자 노드를 생성하는 시간을 허용합니다.
  5. 몇 분 후에 다음 명령을 사용하여 현재 보유하고 있는 작업자 노드 수를 확인합니다.

    $ oc get nodes

    출력 예

    NAME                                         STATUS   ROLES          AGE     VERSION
    ip-10-0-138-106.us-west-2.compute.internal   Ready    infra,worker   22h     v1.23.5+3afdacb
    ip-10-0-153-68.us-west-2.compute.internal    Ready    worker         2m12s   v1.23.5+3afdacb
    ip-10-0-165-183.us-west-2.compute.internal   Ready    worker         2m8s    v1.23.5+3afdacb
    ip-10-0-176-123.us-west-2.compute.internal   Ready    infra,worker   22h     v1.23.5+3afdacb
    ip-10-0-195-210.us-west-2.compute.internal   Ready    master         23h     v1.23.5+3afdacb
    ip-10-0-196-84.us-west-2.compute.internal    Ready    master         23h     v1.23.5+3afdacb
    ip-10-0-203-104.us-west-2.compute.internal   Ready    worker         2m6s    v1.23.5+3afdacb
    ip-10-0-217-202.us-west-2.compute.internal   Ready    master         23h     v1.23.5+3afdacb
    ip-10-0-225-141.us-west-2.compute.internal   Ready    worker         23h     v1.23.5+3afdacb
    ip-10-0-231-245.us-west-2.compute.internal   Ready    worker         2m11s   v1.23.5+3afdacb
    ip-10-0-245-27.us-west-2.compute.internal    Ready    worker         2m8s    v1.23.5+3afdacb
    ip-10-0-245-7.us-west-2.compute.internal     Ready    worker         23h     v1.23.5+3afdacb

    워크로드를 처리하기 위해 작업자 노드가 자동으로 생성되었는지 확인할 수 있습니다.

  6. 다음 명령을 입력하여 OSToy 앱으로 돌아갑니다.

    $ oc project ostoy
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.