Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article explique comment utiliser le placement des ressources de cluster Azure Kubernetes Fleet Manager pour déployer des charges de travail sur des clusters dans une flotte.
Prérequis
- Si vous ne disposez pas d’un compte Azure, créez-en un gratuitement avant de commencer.
- Lisez la présentation conceptuelle de la propagation des ressources pour comprendre les concepts et la terminologie utilisés dans ce démarrage rapide.
- Vous avez besoin d’un Gestionnaire de flotte avec un cluster principal et des clusters membres. Si vous n’en avez pas, consultez Créer une ressource Azure Kubernetes Fleet Manager et rejoindre des clusters membres à l’aide d’Azure CLI.
- Les clusters membres doivent être étiquetés de manière appropriée dans le cluster hub pour correspondre aux critères de sélection souhaités. Des exemples d’étiquettes incluent la région, l’environnement, l’équipe, les zones de disponibilité, la disponibilité des nœuds ou tout autre élément souhaité.
- Vous devez accéder à l'API Kubernetes du cluster hub. Si vous n’avez pas accès, consultez Accéder à l’API Kubernetes pour un cluster hub Azure Kubernetes Fleet Manager.
Utiliser ClusterResourcePlacement pour placer des ressources sur des clusters membres
L’objet ClusterResourcePlacement est créé sur le cluster hub et est utilisé pour propager des ressources aux clusters membres. Il spécifie les ressources à propager et la stratégie de placement à utiliser lorsque vous sélectionnez des clusters membres. Cet exemple montre comment propager un espace de noms aux clusters membres à l’aide de l’objet ClusterResourcePlacement avec une PickAll stratégie de placement.
Pour plus d’informations, consultez le placement des ressources à l’aide du placement des ressources de cluster Azure Kubernetes Fleet Manager et de la documentation KubeFleet open source.
- Créez un espace de noms à placer sur les clusters membres :
kubectl create namespace my-namespace
- Créez un
ClusterResourcePlacementobjet et appliquez-le au cluster Hub Fleet Manager. Dans l'exemple suivant, unClusterResourcePlacementappelédistribute-my-namespaceest utilisé pour déployer un espace de nomsmy-namespacesur tous les clusters membres à l'aide de la stratégie de placementPickAll.
apiVersion: placement.kubernetes-fleet.io/v1
kind: ClusterResourcePlacement
metadata:
name: distribute-my-namespace
spec:
resourceSelectors:
- group: ""
kind: Namespace
version: v1
name: my-namespace
policy:
placementType: PickAll
Appliquez-le au cluster hub Fleet Manager en émettant kubectl apply -f distribute-my-namespace.yaml, en utilisant le nom du fichier que vous avez créé à la place de distribute-my-namespace.yaml.
- Vérifiez la progression de la propagation des ressources :
kubectl get clusterresourceplacement distribute-my-namespace
Vous devez obtenir un résultat semblable à l’exemple qui suit :
NAME GEN SCHEDULED SCHEDULEDGEN APPLIED APPLIEDGEN AGE
distribute-my-namespace 2 True 2 True 2 10s
- Affichez les détails de l’objet de placement :
kubectl describe clusterresourceplacement distribute-my-namespace
Vous devez obtenir un résultat semblable à l’exemple qui suit :
Name: distribute-my-namespace
Namespace:
Labels: <none>
Annotations: <none>
API Version: placement.kubernetes-fleet.io/v1
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
Nettoyer les ressources
Si vous ne souhaitez plus utiliser l’objet ClusterResourcePlacement, vous pouvez le supprimer à l’aide de la commande kubectl delete. L'exemple suivant supprime l'objet ClusterResourcePlacement nommé distribute-my-namespace :
kubectl delete clusterresourceplacement distribute-my-namespace
Contenu connexe
Pour en savoir plus sur la propagation des ressources, consultez les ressources suivantes :
- Présentation de la sortie de l’état du placement des ressources.
- Placement intelligent des ressources Kubernetes entre clusters en fonction des propriétés des clusters membres.
- Contrôle de l’éviction et de l’interruption du placement des ressources de cluster.
- Définition d’une stratégie de déploiement pour un placement de ressources de cluster.
- Questions fréquentes (FAQ) sur le placement des ressources de cluster.
- Documentation KubeFleet open source.