ローカリティ重み付け分散
このガイドに従って、ローカリティ間でのトラフィックの分散を構成します。
続行する前に、始める前にの手順を完了してください。
このタスクでは、region1
zone1
の curl
ポッドを、HelloWorld
サービスへのリクエストの送信元として使用します。以下のローカリティ間の分散で Istio を構成します。
リージョン | ゾーン | トラフィックの割合 (%) |
---|---|---|
region1 | zone1 | 70 |
region1 | zone2 | 20 |
region2 | zone3 | 0 |
region3 | zone4 | 10 |
重み付け分散の構成
以下を構成するDestinationRule
を適用します。
HelloWorld
サービスのアウトライア検出。これは、分散を正しく機能させるために必要です。特に、サービスのエンドポイントが正常でない場合にサイドカープロキシが認識できるように構成します。上記の表に記載されているように、
HelloWorld
サービスの重み付け分散。
$ kubectl --context="${CTX_PRIMARY}" apply -n sample -f - <<EOF
apiVersion: networking.istio.io/v1
kind: DestinationRule
metadata:
name: helloworld
spec:
host: helloworld.sample.svc.cluster.local
trafficPolicy:
loadBalancer:
localityLbSetting:
enabled: true
distribute:
- from: region1/zone1/*
to:
"region1/zone1/*": 70
"region1/zone2/*": 20
"region3/zone4/*": 10
outlierDetection:
consecutive5xxErrors: 100
interval: 1s
baseEjectionTime: 1m
EOF
分散の検証
curl
ポッドから HelloWorld
サービスを呼び出します。
$ kubectl exec --context="${CTX_R1_Z1}" -n sample -c curl \
"$(kubectl get pod --context="${CTX_R1_Z1}" -n sample -l \
app=curl -o jsonpath='{.items[0].metadata.name}')" \
-- curl -sSL helloworld.sample:5000/hello
この手順を数回繰り返し、各ポッドの応答数が、このガイドの上部にある表の期待値と一致することを確認してください。
おめでとうございます! ローカリティ分散を正常に設定しました!
次のステップ
クリーンアップ このタスクのリソースとファイル。