クイックスタート: Azure Kubernetes Fleet Manager (フリート) ハブ クラスターからメンバー クラスターにリソースを伝達する

このクイックスタートでは、Azure Kubernetes Fleet Manager (フリート) ハブ クラスターからメンバー クラスターにリソースを伝達する方法を学習します。

前提条件

Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。

ClusterResourcePlacement API を使用してメンバー クラスターにリソースを伝達する

ClusterResourcePlacement API オブジェクトは、ハブ クラスターからメンバー クラスターにリソースを伝達するために使用されます。 ClusterResourcePlacement API オブジェクトは、伝達するリソースと、メンバー クラスターを選択するときに使用する配置ポリシーを指定します。 ClusterResourcePlacement API オブジェクトはハブ クラスター内に作成され、リソースをメンバー クラスターに伝達するために使用されます。 この例では、ClusterResourcePlacement API オブジェクトと PickAll 配置ポリシーを使用して、名前空間をメンバー クラスターに伝達する方法を示します。

詳細については、「ハブ クラスターからメンバー クラスターへの Kubernetes リソースの伝達 (プレビュー)」と「アップストリーム フリート ドキュメント」を参照してください。

  1. kubectl create namespace コマンドを使用して、メンバー クラスターに配置する名前空間を作成します。 次の例では、my-namespace という名前空間を作成します。

    kubectl create namespace my-namespace
    
  2. ハブ クラスターに ClusterResourcePlacement API オブジェクトを作成し、名前空間をメンバー クラスターに伝達し、kubectl apply -f コマンドを使用してそれをデプロイします。 次の例の ClusterResourcePlacementcrp という名前のオブジェクトを作成し、my-namespace 名前空間と PickAll 配置ポリシーを使用して、名前空間をすべてのメンバー クラスターに伝達します。

    kubectl apply -f - <<EOF
    apiVersion: placement.kubernetes-fleet.io/v1beta1
    kind: ClusterResourcePlacement
    metadata:
      name: crp
    spec:
      resourceSelectors:
        - group: ""
          kind: Namespace
          version: v1          
          name: my-namespace
      policy:
        placementType: PickAll
    EOF
    
  3. kubectl get clusterresourceplacement コマンドを使用して、リソース伝達の進行状況を確認します。 次の例では、crp という名前の ClusterResourcePlacement オブジェクトの状態を確認します。

    kubectl get clusterresourceplacement crp
    

    出力は次の出力例のようになります。

    NAME   GEN   SCHEDULED   SCHEDULEDGEN   APPLIED   APPLIEDGEN   AGE
    crp    2     True        2              True      2            10s
    
  4. kubectl describe crp コマンドを使用して crp オブジェクトの詳細を確認します。 次の例では、crp という名前の ClusterResourcePlacement オブジェクトについて説明します。

    kubectl describe clusterresourceplacement crp
    

    出力は次の出力例のようになります。

    Name:         crp
    Namespace:    
    Labels:       <none>
    Annotations:  <none>
    API Version:  placement.kubernetes-fleet.io/v1beta1
    Kind:         ClusterResourcePlacement
    Metadata:
      Creation Timestamp:  2024-04-01T18:55:31Z
      Finalizers:
        kubernetes-fleet.io/crp-cleanup
        kubernetes-fleet.io/scheduler-cleanup
      Generation:        2
      Resource Version:  6949
      UID:               815b1d81-61ae-4fb1-a2b1-06794be3f986
    Spec:
      Policy:
        Placement Type:  PickAll
      Resource Selectors:
        Group:                 
        Kind:                  Namespace
        Name:                  my-namespace
        Version:               v1
      Revision History Limit:  10
      Strategy:
        Type:  RollingUpdate
    Status:
      Conditions:
        Last Transition Time:   2024-04-01T18:55:31Z
        Message:                found all the clusters needed as specified by the scheduling policy
        Observed Generation:    2
        Reason:                 SchedulingPolicyFulfilled
        Status:                 True
        Type:                   ClusterResourcePlacementScheduled
        Last Transition Time:   2024-04-01T18:55:36Z
        Message:                All 3 cluster(s) are synchronized to the latest resources on the hub cluster
        Observed Generation:    2
        Reason:                 SynchronizeSucceeded
        Status:                 True
        Type:                   ClusterResourcePlacementSynchronized
        Last Transition Time:   2024-04-01T18:55:36Z
        Message:                Successfully applied resources to 3 member clusters
        Observed Generation:    2
        Reason:                 ApplySucceeded
        Status:                 True
        Type:                   ClusterResourcePlacementApplied
      Observed Resource Index:  0
      Placement Statuses:
        Cluster Name:  membercluster1
        Conditions:
          Last Transition Time:  2024-04-01T18:55:31Z
          Message:               Successfully scheduled resources for placement in membercluster1 (affinity score: 0, topology spread score: 0): picked by scheduling policy
          Observed Generation:   2
          Reason:                ScheduleSucceeded
          Status:                True
          Type:                  ResourceScheduled
          Last Transition Time:  2024-04-01T18:55:36Z
          Message:               Successfully Synchronized work(s) for placement
          Observed Generation:   2
          Reason:                WorkSynchronizeSucceeded
          Status:                True
          Type:                  WorkSynchronized
          Last Transition Time:  2024-04-01T18:55:36Z
          Message:               Successfully applied resources
          Observed Generation:   2
          Reason:                ApplySucceeded
          Status:                True
          Type:                  ResourceApplied
        Cluster Name:            membercluster2
        Conditions:
          Last Transition Time:  2024-04-01T18:55:31Z
          Message:               Successfully scheduled resources for placement in membercluster2 (affinity score: 0, topology spread score: 0): picked by scheduling policy
          Observed Generation:   2
          Reason:                ScheduleSucceeded
          Status:                True
          Type:                  ResourceScheduled
          Last Transition Time:  2024-04-01T18:55:36Z
          Message:               Successfully Synchronized work(s) for placement
          Observed Generation:   2
          Reason:                WorkSynchronizeSucceeded
          Status:                True
          Type:                  WorkSynchronized
          Last Transition Time:  2024-04-01T18:55:36Z
          Message:               Successfully applied resources
          Observed Generation:   2
          Reason:                ApplySucceeded
          Status:                True
          Type:                  ResourceApplied
        Cluster Name:            membercluster3
        Conditions:
          Last Transition Time:  2024-04-01T18:55:31Z
          Message:               Successfully scheduled resources for placement in membercluster3 (affinity score: 0, topology spread score: 0): picked by scheduling policy
          Observed Generation:   2
          Reason:                ScheduleSucceeded
          Status:                True
          Type:                  ResourceScheduled
          Last Transition Time:  2024-04-01T18:55:36Z
          Message:               Successfully Synchronized work(s) for placement
          Observed Generation:   2
          Reason:                WorkSynchronizeSucceeded
          Status:                True
          Type:                  WorkSynchronized
          Last Transition Time:  2024-04-01T18:55:36Z
          Message:               Successfully applied resources
          Observed Generation:   2
          Reason:                ApplySucceeded
          Status:                True
          Type:                  ResourceApplied
      Selected Resources:
        Kind:     Namespace
        Name:     my-namespace
        Version:  v1
    Events:
      Type    Reason                     Age   From                                   Message
      ----    ------                     ----  ----                                   -------
      Normal  PlacementScheduleSuccess   108s  cluster-resource-placement-controller  Successfully scheduled the placement
      Normal  PlacementSyncSuccess       103s  cluster-resource-placement-controller  Successfully synchronized the placement
      Normal  PlacementRolloutCompleted  103s  cluster-resource-placement-controller  Resources have been applied to the selected clusters
    

リソースをクリーンアップする

ClusterResourcePlacement オブジェクトを使用する必要がなくなった場合は、kubectl delete コマンドを使用して削除できます。 次の例では、crp という名前の ClusterResourcePlacement オブジェクトを削除します。

kubectl delete clusterresourceplacement crp

次のステップ

リソース伝達の詳細について確認するには、以下のリソースを参照してください。