検索

18.9. チュートリアル: アプリケーションのスケーリング

download PDF

18.9.1. スケーリング

Horizontal Pod Autoscaler (HPA) を使用すると、Pod を手動または自動でスケーリングできます。クラスターノードをスケーリングすることもできます。

18.9.1.1. Pod の手動スケーリング

次のいずれかの方法を使用して、アプリケーションの Pod を手動でスケーリングできます。

  • ReplicaSet またはデプロイメント定義の変更
  • コマンドラインの使用
  • Web コンソールの使用

このワークショップでは、まず 1 つの Pod だけをマイクロサービスに使用します。デプロイメント定義でレプリカを 1 に定義すると、Kubernetes レプリケーションコントローラーが 1 つの Pod を維持しようとします。次に、Horizontal Pod Autoscaler (HPA) を使用して Pod の自動スケーリングを定義する方法を説明します。HPA は、高負荷が発生した場合に、負荷に応じて、最初の定義を超えて Pod をスケールアウトします。

前提条件

  • アクティブな ROSA クラスター
  • デプロイ済みの OSToy アプリケーション

手順

  1. OSToy アプリケーションで、ナビゲーションメニューの Networking タブをクリックします。
  2. "Intra-cluster Communication" セクションで、"Remote Pods" の下にある、色がランダムに変化するボックスを見つけます。ボックス内に、マイクロサービスの Pod 名が表示されます。この例では、マイクロサービスの Pod が 1 つしかないため、ボックスは 1 つしかありません。

    HPA Menu
  3. 次のコマンドを実行して、マイクロサービスに対して実行されている Pod が 1 つだけであることを確認します。

    $ 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 Pod から 3 Pod に変更します。

    spec:
        selector:
          matchLabels:
            app: ostoy-microservice
        replicas: 3
  6. 次のコマンドを実行してレプリカの変更を適用します。

    $ oc apply -f ostoy-microservice-deployment.yaml
    注記

    OpenShift Web コンソールで Workloads > Deployments > ostoy-microservice > YAML タブに移動して、ostoy-microservice-deployment.yaml ファイルを編集することもできます。

  7. 次のコマンドを実行して、Pod が 3 つあることを確認します。

    $ oc get pods

    出力から、マイクロサービスの Pod が 1 つではなく 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 または Web UI を使用してアプリケーションをスケーリングします。

    • CLI で次のコマンドを実行して、Pod の数を 3 から 2 に減らします。

      $ oc scale deployment ostoy-microservice --replicas=2
    • OpenShift Web コンソール UI のナビゲーションメニューから、Workloads > Deployments > ostoy-microservice をクリックします。
    • ページの左側で、中心に "3 Pod" というラベルがある青い円を見つけます。
    • 円の横にある矢印を選択すると、Pod の数が増加します。下矢印を選択して 2 にします。

      UI Scale

検証

CLI、Web UI、または OSToy アプリケーションを使用して Pod の数を確認します。

  • CLI から次のコマンドを実行して、マイクロサービスに 2 つの Pod が使用されていることを確認します。

    $ 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

  • Web UI で、Workloads > Deployments > ostoy-microservice を選択します。

    Verify the workload pods
  • OSToy アプリケーションのナビゲーションメニューで Networking を選択して、2 つの Pod が使用されていることを確認することもできます。2 つの Pod の色付きボックスが 2 つがあるはずです。

    UI Scale

18.9.1.2. Pod の自動スケーリング

Red Hat OpenShift Service on AWS は、Horizontal Pod Autoscaler (HPA) を備えています。HPA はメトリクスを使用して、必要に応じて Pod の数を増減します。

手順

  1. Web UI のナビゲーションメニューから、Pod Auto Scaling を選択します。

    HPA Menu
  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 Auto Scaling > Horizontal Pod Autoscaling ページで、Increase the load を選択します。

    重要

    負荷が増加すると、が発生するため、ページが応答しなくなる可能性があります。これは予想どおりの反応です。Increase the Load は 1 回だけクリックしてください。プロセスの詳細は、このマイクロサービスの GitHub リポジトリー を参照してください。

    数分後、ページに新しい Pod が色付きのボックスで表示されます。

    注記

    ページに遅延が発生する可能性があります。

検証

次のいずれかの方法で Pod 数を確認します。

  • OSToy アプリケーションの Web UI で、Remote Pods ボックスを確認します。

    HPA Main

    Pod は 1 つしかないため、ワークロードを増やすと 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 Web コンソールのナビゲーションメニューで、Observe > Dashboards をクリックします。
    2. ダッシュボードで、Kubernetes / Compute Resources / Namespace (Pods) と namespace ostoy を選択します。

      Select metrics
    3. CPU とメモリーのリソース使用状況を示すグラフが表示されます。上のグラフは Pod ごとの最近の CPU 消費量を示し、下のグラフはメモリー使用量を示しています。グラフ内の記号の意味は次のとおりです。

      1. 負荷が増加しました (A)。
      2. 2 つの新しい Pod が作成されました (B および C)。
      3. 各グラフの幅は CPU 消費量を表し、どの Pod がより多くの負荷を処理したかを示しています。
      4. 負荷が減少し (D)、Pod が削除されました。

        Select metrics

18.9.1.3. ノードの自動スケーリング

Red Hat OpenShift Service on AWS では、ノードの自動スケーリング を使用できます。ここでは、クラスターが処理できない大きなワークロードを持つジョブを含む新しいプロジェクトを作成します。自動スケーリングが有効な場合、負荷が現在の容量を超えたときに、クラスターが負荷を処理するために新しいノードを自動的に作成します。

前提条件

  • マシンプールで自動スケーリングが有効になっている。

手順

  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. 数分後、次のコマンドを実行して 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 では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.