Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo descrive come usare il posizionamento delle risorse cluster di Azure Kubernetes Fleet Manager per distribuire carichi di lavoro tra cluster in una flotta.
Prerequisiti
- Se non si ha un account Azure, creare un account gratuito prima di iniziare.
- Leggere la panoramica concettuale della propagazione delle risorse per comprendere i concetti e la terminologia usati in questo articolo.
- È necessario Gestione flotta con un cluster hub e cluster membri. Se non è disponibile, vedere Creare una risorsa di Gestione flotta Kubernetes di Azure e aggiungere cluster membri usando l'interfaccia della riga di comando di Azure.
- I cluster membri devono essere etichettati appropriatamente nel cluster hub in modo che corrispondano ai criteri di selezione desiderati. Etichette di esempio includono area, ambiente, team, zone di disponibilità, disponibilità dei nodi o qualsiasi altro elemento desiderato.
- È necessario accedere all'API Kubernetes del cluster hub. Se non si ha accesso, vedere Accedere all'API Kubernetes per un cluster hub di Gestione flotta Kubernetes.
Usare ClusterResourcePlacement per inserire le risorse nei cluster membri
L'oggetto ClusterResourcePlacement viene creato nel cluster hub e viene usato per propagare le risorse ai cluster membri. Specifica le risorse da propagare e i criteri di posizionamento da usare quando si selezionano cluster membri. In questo esempio viene illustrato come propagare uno spazio dei nomi ai cluster membri usando l'oggetto ClusterResourcePlacement con un PickAll criterio di posizionamento.
Per altre informazioni, vedere Posizionamento delle risorse usando il posizionamento delle risorse cluster di Azure Kubernetes Fleet Manager e la documentazione di KubeFleet open source.
- Creare uno spazio dei nomi da inserire nei cluster membri:
kubectl create namespace my-namespace
- Creare un
ClusterResourcePlacementoggetto e applicarlo al cluster hub di Fleet Manager. Nell'esempio seguente, unClusterResourcePlacementdenominatodistribute-my-namespaceviene utilizzato per distribuire un namespacemy-namespacea tutti i cluster membri, utilizzando laPickAllpolicy di posizionamento:
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
Applicarlo al cluster hub di Fleet Manager eseguendo kubectl apply -f distribute-my-namespace.yaml, usando il nome del file creato al posto di distribute-my-namespace.yaml.
- Controllare lo stato di avanzamento della propagazione delle risorse:
kubectl get clusterresourceplacement distribute-my-namespace
L'output dovrebbe essere simile all'esempio seguente:
NAME GEN SCHEDULED SCHEDULEDGEN APPLIED APPLIEDGEN AGE
distribute-my-namespace 2 True 2 True 2 10s
- Visualizzare i dettagli dell'oggetto di posizionamento:
kubectl describe clusterresourceplacement distribute-my-namespace
L'output dovrebbe essere simile all'esempio seguente:
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
Pulire le risorse
Se non si vuole più usare l'oggetto ClusterResourcePlacement, è possibile eliminarlo usando il comando kubectl delete. Nell'esempio seguente viene eliminato l'oggetto ClusterResourcePlacement denominato distribute-my-namespace:
kubectl delete clusterresourceplacement distribute-my-namespace
Contenuti correlati
Per altre informazioni sulla propagazione delle risorse, vedere le risorse seguenti:
- Informazioni sull'output dello stato di posizionamento delle risorse.
- Posizionamento intelligente delle risorse Kubernetes tra cluster in base alle proprietà dei cluster membri.
- Controllo della rimozione e delle interruzioni per il posizionamento delle risorse del cluster.
- Definizione di una strategia di implementazione per un posizionamento delle risorse cluster.
- Domande frequenti sul posizionamento delle risorse del cluster.
- Documentazione di KubeFleet open source.
Azure Kubernetes Service