はじめに
Azure Kubernetes Fleet Manager ではアプリケーションのエンドポイントとしてレイヤー 4での負荷分散が行えます。つまりロードバランサーで負荷分散を行います。
デモ用アプリのデプロイ
負荷分散が行われたかを確認するためデモ用のアプリケーションをデプロイします。
KUBECONFIG=fleet kubectl apply -f https://raw.githubusercontent.com/Azure/AKS/master/examples/fleet/kuard/kuard-export-service.yaml
-
デモ用アプリケーションのkuardを使ってみよう - 技術的な何か。
はじめに コンテナーやKubernetesの検証を行う場合には、デモ用nginxを起動したりするかと思います。 そこで、デモアプリケーションをしては結構有名?なkuardを紹介します。あまり聞きなれな
level69.net
結果
deployment.apps/kuard created service/kuard created serviceexport.networking.fleet.azure.com/kuard created
crp.yaml を作成します。ClusterResourcePlacementを設定します。eastusリージョンのみです。
apiVersion: fleet.azure.com/v1alpha1 kind: ClusterResourcePlacement metadata: name: kuard-demo spec: resourceSelectors: - group: "" version: v1 kind: Namespace name: kuard-demo policy: affinity: clusterAffinity: clusterSelectorTerms: - labelSelector: matchLabels: fleet.azure.com/location: eastus
適用します。
KUBECONFIG=fleet kubectl apply -f crp.yaml
KUBECONFIG=aks-member-1 kubectl get serviceexport kuard --namespace kuard-demo KUBECONFIG=aks-member-2 kubectl get serviceexport kuard --namespace kuard-demo KUBECONFIG=aks-member-3 kubectl get serviceexport kuard --namespace kuard-demo
aks-member-3 にはServiceExport が有効でないこわかりますされていないことが分かります。
サービスエンドポイント間での負荷分散を行います。
KUBECONFIG=aks-member-1 kubectl apply -f https://raw.githubusercontent.com/Azure/AKS/master/examples/fleet/kuard/kuard-mcs.yaml
展開を確認します
KUBECONFIG=aks-member-1 kubectl get multiclusterservice kuard --namespace kuard-demo
結果
NAME SERVICE-IMPORT EXTERNAL-IP IS-VALID AGE kuard kuard 20.xxx.xxx.68 True 6m23s
Podの名前を確信します。
KUBECONFIG=aks-member-1 kubectl get pods -n kuard-demo -o wide
# KUBECONFIG=aks-member-1 kubectl get pods -n kuard-demo -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES kuard-68d4ff8dc7-jltlg 1/1 Running 0 23m 10.1.0.8 aks-nodepool1-24943373-vmss000000 kuard-68d4ff8dc7-mx8db 1/1 Running 0 23m 10.1.0.10 aks-nodepool1-24943373-vmss000000
KUBECONFIG=aks-member-2 kubectl get pods -n kuard-demo -o wide
# KUBECONFIG=aks-member-2 kubectl get pods -n kuard-demo -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES kuard-68d4ff8dc7-2jx67 1/1 Running 0 23m 10.2.0.5 aks-nodepool1-31022468-vmss000000 kuard-68d4ff8dc7-bqh2n 1/1 Running 0 23m 10.2.0.15 aks-nodepool1-31022468-vmss000000
それぞれ確認できたら20.xxx.xxx.68:8080 にブラウザアクセスしてみます。
何度かアクセスして名前が変わるり負荷分散されていることを確認できます。
まとめ
Fleet managerで負荷分散を行う方法を紹介しました。