Azure

Azure Kubernetes Fleet Manager で負荷分散を構成する

はじめに

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を使ってみよう - 技術的な何か。
デモ用アプリケーションの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で負荷分散を行う方法を紹介しました。

-Azure
-