第6章 iPerf


iPerf3 を使用しながら、リアルタイムのネットワークスループット測定を実行します。

この例は、Skupper を使用してクラウドプロバイダー、データセンター、エッジサイト間でサービスを接続できるさまざまな方法を紹介する 一連の例 の一部です。

概要

このチュートリアルでは、iperf3 ツールを使用して Kubernetes 全体でリアルタイムのネットワークスループット測定を実行する方法を説明します。このチュートリアルでは、次のことを行います。

  • iperf3 を 3 つの別々のクラスターにデプロイする
  • iperf3 クライアントテストインスタンスを実行する

前提条件

  • kubectl コマンドラインツール、バージョン 1.15 以降
  • パフォーマンスを確認するために 3 つのクラスターにアクセスできる。たとえば、3 つのクラスターは、以下のような構成になります。
  • ローカルマシン上で実行されるプライベートクラウドクラスター (private1)
  • パブリッククラウドプロバイダーで実行されている 2 つのパブリッククラウドクラスター (public1public2)

手順

  • この例のリポジトリーのクローンを作成する
  • Skupper コマンドラインツールをインストールする
  • 個別のコンソールセッションを設定する
  • クラスターにアクセスする
  • 名前空間を設定する
  • 名前空間に Skupper をインストールする
  • 名前空間のステータスを確認する
  • 名前空間をリンクする
  • iperf3 サーバーをデプロイする
  • 各名前空間から iperf3 を公開する
  • クラスター全体でベンチマークテストを実行する

    1. この例のリポジトリーをクローンします。https://skupper.io/examples/index.html から適切な GitHub リポジトリーに移動し、リポジトリーをクローンします。
    2. Skupper コマンドラインツールをインストールします。

      skupper コマンドラインツールは、Skupper をインストールおよび設定するためのエントリーポイントです。開発環境ごとに skupper コマンドを 1 回だけインストールする必要があります。

      CLI のインストールの詳細は、インストール を参照してください。設定されたシステムの場合は、次のコマンドを使用します。

      sudo dnf install skupper-cli

      Windows およびその他のインストールオプションについては、Installing Skupper を参照してください。

    3. 個別のコンソールセッションを設定します。

      Skupper は、通常は異なるクラスター上の複数の名前空間で使用するように設計されています。skupper コマンドと kubectl コマンドは、kubeconfig と現在のコンテキストを使用して、動作する名前空間を選択します。

      kubeconfig はホームディレクトリーのファイルに保存されます。skupper および kubectl コマンドは、KUBECONFIG 環境変数を使用してこれを検索します。

      1 つの kubeconfig は、ユーザーごとにアクティブコンテキストを 1 つだけサポートします。この演習では複数のコンテキストを一度に使用するため、個別の kubeconfig を作成する必要があります。

      各名前空間のコンソールセッションを開始します。各セッションで KUBECONFIG 環境変数を異なるパスに設定します。

      public1 のコンソール:

      export KUBECONFIG=~/.kube/config-public1

      public2 のコンソール:

      export KUBECONFIG=~/.kube/config-public2

      private1 のコンソール:

      export KUBECONFIG=~/.kube/config-private1
    4. クラスターにアクセスします。

      Kubernetes クラスターにアクセスする手順はプロバイダーによって異なります。選択したプロバイダーの手順 を確認し、それを使用して各コンソールセッションのアクセスを認証および設定します。

    5. 名前空間を設定します。

      kubectl create namespace を使用して、使用する名前空間を作成します (または既存の名前空間を使用します)。kubectl config set-context を使用して、各セッションの現在の名前空間を設定します。

      public1 のコンソール:

      kubectl create namespace public1
      kubectl config set-context --current --namespace public1

      public2 のコンソール:

      kubectl create namespace public2
      kubectl config set-context --current --namespace public2

      private1 のコンソール:

      kubectl create namespace private1
      kubectl config set-context --current --namespace private1
    6. 名前空間に Skupper をインストールします。

      skupper init コマンドは、現在の名前空間に Skupper ルーターとコントローラーをインストールします。各 namespace で skupper init コマンドを実行します。

      public1 のコンソール:

      skupper init --enable-console --enable-flow-collector

      public2 のコンソール:

      skupper init

      private1 のコンソール:

      skupper init

      出力サンプル

      $ skupper init
      Waiting for LoadBalancer IP or hostname...
      Waiting for status...
      Skupper is now installed in namespace '<namespace>'.  Use 'skupper status' to get more information.
    7. 名前空間のステータスを確認します。

      各コンソールで skupper status を使用して、Skupper がインストールされていることを確認します。

      public1 のコンソール:

      skupper status

      public2 のコンソール:

      skupper status

      private1 のコンソール:

      skupper status

      出力サンプル

      Skupper is enabled for namespace "<namespace>" in interior mode. It is connected to 1 other site. It has 1 exposed service.
      The site console url is: <console-url>
      The credentials for internal console-auth mode are held in secret: 'skupper-console-users'

      以下の手順を実行する場合は、いつでも skupper status を使用して進捗状況を確認できます。

    8. 名前空間をリンクします。

      リンクを作成するには、skupper token createskupper link create の 2 つの skupper コマンドを組み合わせて使用する必要があります。

      skupper token create コマンドは、リンクを作成する権限を示す秘密トークンを生成します。トークンにはリンクの詳細も含まれます。次に、リモート名前空間で、skupper link create コマンドを実行すると、トークンを使用して、トークンを生成した名前空間へのリンクを作成します。

      注記

      リンクトークンは実際にはシークレットです。トークンがある場合は、名前空間にリンクできます。信頼できる人だけがアクセスできるようにしてください。

      まず、1 つの名前空間で skupper token create を使用してトークンを生成します。次に、もう 1 つで skupper link create を使用してリンクを作成します。

      public1 のコンソール:

      skupper token create ~/private1-to-public1-token.yaml
      skupper token create ~/public2-to-public1-token.yaml

      public2 のコンソール:

      skupper token create ~/private1-to-public2-token.yaml
      skupper link create ~/public2-to-public1-token.yaml
      skupper link status --wait 60

      private1 のコンソール:

      skupper link create ~/private1-to-public1-token.yaml
      skupper link create ~/private1-to-public2-token.yaml
      skupper link status --wait 60

      コンソールセッションが異なるマシン上にある場合は、トークンを安全に転送するために scp または同様のツールを使用する必要がある場合があります。デフォルトでは、トークンは 1 回の使用後、または作成後 15 分後に期限切れになります。

    9. iperf3 サーバーをデプロイします。

      アプリケーションルーターネットワークを作成したら、各名前空間に iperf3 をデプロイします。

      private1 のコンソール:

      kubectl apply -f deployment-iperf3-a.yaml

      public1 のコンソール:

      kubectl apply -f deployment-iperf3-b.yaml

      public2 のコンソール:

      kubectl apply -f deployment-iperf3-c.yaml
    10. 各名前空間から iperf3 を公開します。

      名前空間間の接続を確立し、iperf3 をデプロイしました。パフォーマンスをテストする前に、各 namespace から iperf3 にアクセスする必要があります。

      private1 のコンソール:

      skupper expose deployment/iperf3-server-a --port 5201

      public1 のコンソール:

      skupper expose deployment/iperf3-server-b --port 5201

      public2 のコンソール:

      skupper expose deployment/iperf3-server-c --port 5201
    11. クラスター全体でベンチマークテストを実行します。

      iperf3 サーバーをプライベートクラウドクラスターとパブリッククラウドクラスターにデプロイすると、仮想アプリケーションネットワークでは、サーバーが別々のクラスターで実行されていても通信が可能になります。

      private1 のコンソール:

      kubectl exec $(kubectl get pod -l application=iperf3-server-a -o=jsonpath='{.items[0].metadata.name}') -- iperf3 -c iperf3-server-a
      kubectl exec $(kubectl get pod -l application=iperf3-server-a -o=jsonpath='{.items[0].metadata.name}') -- iperf3 -c iperf3-server-b
      kubectl exec $(kubectl get pod -l application=iperf3-server-a -o=jsonpath='{.items[0].metadata.name}') -- iperf3 -c iperf3-server-c

      public1 のコンソール:

      kubectl exec $(kubectl get pod -l application=iperf3-server-b -o=jsonpath='{.items[0].metadata.name}') -- iperf3 -c iperf3-server-a
      kubectl exec $(kubectl get pod -l application=iperf3-server-b -o=jsonpath='{.items[0].metadata.name}') -- iperf3 -c iperf3-server-b
      kubectl exec $(kubectl get pod -l application=iperf3-server-b -o=jsonpath='{.items[0].metadata.name}') -- iperf3 -c iperf3-server-c

      public2 のコンソール:

      kubectl exec $(kubectl get pod -l application=iperf3-server-c -o=jsonpath='{.items[0].metadata.name}') -- iperf3 -c iperf3-server-a
      kubectl exec $(kubectl get pod -l application=iperf3-server-c -o=jsonpath='{.items[0].metadata.name}') -- iperf3 -c iperf3-server-b
      kubectl exec $(kubectl get pod -l application=iperf3-server-c -o=jsonpath='{.items[0].metadata.name}') -- iperf3 -c iperf3-server-c
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

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

© 2024 Red Hat, Inc.