事前準備

ローカルロードバランシングタスクを開始する前に、まず複数のクラスタにIstioをインストールする必要があります。クラスタは3つのリージョンにまたがり、4つの可用性ゾーンを含む必要があります。必要なクラスタの数は、クラウドプロバイダーが提供する機能によって異なる場合があります。

HelloWorldアプリケーションの複数のインスタンスを以下のようにデプロイします。

Setup for locality load balancing tasks
ローカルロードバランシングタスクの設定

環境変数

このガイドでは、すべてのクラスタがデフォルトのKubernetes設定ファイル内のコンテキストを通じてアクセスされると仮定します。様々なコンテキストには、以下の環境変数を使用します。

変数説明
CTX_PRIMARYプライマリクラスタに設定を適用するために使用されるコンテキスト。
CTX_R1_Z1region1.zone1内のPodと対話するために使用されるコンテキスト。
CTX_R1_Z2region1.zone2内のPodと対話するために使用されるコンテキスト。
CTX_R2_Z3region2.zone3内のPodと対話するために使用されるコンテキスト。
CTX_R3_Z4region3.zone4内のPodと対話するために使用されるコンテキスト。

sample名前空間の作成

最初に、自動サイドカーインジェクションが有効になっているsample名前空間のYAMLを生成します。

$ cat <<EOF > sample.yaml apiVersion: v1 kind: Namespace metadata: name: sample labels: istio-injection: enabled EOF

各クラスタにsample名前空間を追加します。

$ for CTX in "$CTX_PRIMARY" "$CTX_R1_Z1" "$CTX_R1_Z2" "$CTX_R2_Z3" "$CTX_R3_Z4"; \ do \ kubectl --context="$CTX" apply -f sample.yaml; \ done

HelloWorldのデプロイ

ローカルをバージョン文字列として使用して、各ローカルのHelloWorldYAMLを生成します。

圧縮
$ for LOC in "region1.zone1" "region1.zone2" "region2.zone3" "region3.zone4"; \ do \ ./samples/helloworld/gen-helloworld.sh \ --version "$LOC" > "helloworld-${LOC}.yaml"; \ done

各ローカルに対応する適切なクラスタにHelloWorldYAMLを適用します。

$ kubectl apply --context="${CTX_R1_Z1}" -n sample \ -f helloworld-region1.zone1.yaml
$ kubectl apply --context="${CTX_R1_Z2}" -n sample \ -f helloworld-region1.zone2.yaml
$ kubectl apply --context="${CTX_R2_Z3}" -n sample \ -f helloworld-region2.zone3.yaml
$ kubectl apply --context="${CTX_R3_Z4}" -n sample \ -f helloworld-region3.zone4.yaml

curlのデプロイ

curlアプリケーションをregion1 zone1にデプロイします。

圧縮
$ kubectl apply --context="${CTX_R1_Z1}" \ -f samples/curl/curl.yaml -n sample

HelloWorldポッドの待機

各ゾーンのHelloWorldPodがRunningになるまで待ちます。

$ kubectl get pod --context="${CTX_R1_Z1}" -n sample -l app="helloworld" \ -l version="region1.zone1"
NAME READY STATUS RESTARTS AGE helloworld-region1.zone1-86f77cd7b-cpxhv 2/2 Running 0 30s
$ kubectl get pod --context="${CTX_R1_Z2}" -n sample -l app="helloworld" \ -l version="region1.zone2"
NAME READY STATUS RESTARTS AGE helloworld-region1.zone2-86f77cd7b-cpxhv 2/2 Running 0 30s
$ kubectl get pod --context="${CTX_R2_Z3}" -n sample -l app="helloworld" \ -l version="region2.zone3"
NAME READY STATUS RESTARTS AGE helloworld-region2.zone3-86f77cd7b-cpxhv 2/2 Running 0 30s
$ kubectl get pod --context="${CTX_R3_Z4}" -n sample -l app="helloworld" \ -l version="region3.zone4"
NAME READY STATUS RESTARTS AGE helloworld-region3.zone4-86f77cd7b-cpxhv 2/2 Running 0 30s

おめでとうございます! システムの設定が完了し、ローカルロードバランシングタスクを開始する準備ができました!

次のステップ

以下のロードバランシングオプションのいずれかを設定できます。

この情報は役に立ちましたか?
改善のための提案はありますか?

ご意見ありがとうございました!