Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este artigo descreve como usar o posicionamento de recursos de cluster do Azure Kubernetes Fleet Manager para implantar cargas de trabalho em clusters em uma frota.
Pré-requisitos
- Se não tiver uma conta do Azure, crie uma conta gratuita antes de começar.
- Leia a visão geral conceitual da propagação de recursos para entender os conceitos e a terminologia usados neste artigo.
- Você precisa de um Fleet Manager com um cluster de hub e clusters de membros. Se você não tiver um, consulte Criar um recurso do Azure Kubernetes Fleet Manager e ingressar em clusters de membros usando a CLI do Azure.
- Os clusters de membros devem ser rotulados adequadamente no cluster de hub para corresponder aos critérios de seleção desejados. Exemplos de rótulos incluem região, ambiente, equipe, zonas de disponibilidade, disponibilidade de nó ou qualquer outra coisa que você queira.
- Você precisa acessar a API do Kubernetes do cluster de hub. Se você não tiver acesso, consulte Acessar a API do Kubernetes para um cluster de hub do Kubernetes Fleet Manager do Azure.
Usar ClusterResourcePlacement para colocar recursos em clusters membros
O ClusterResourcePlacement objeto é criado no cluster de hub e é usado para propagar recursos para clusters membros. Ele especifica os recursos a serem propagados e a política de posicionamento a ser usada ao selecionar clusters de membros. Este exemplo demonstra como propagar um namespace para clusters membros usando o ClusterResourcePlacement objeto com uma PickAll política de posicionamento.
Para obter mais informações, consulte Posicionamento de recursos usando o posicionamento de recursos de cluster do Azure Kubernetes Fleet Manager e a documentação de código aberto do KubeFleet.
- Crie um namespace para colocar nos clusters de membros.
kubectl create namespace my-namespace
- Crie um
ClusterResourcePlacementobjeto e aplique ao cluster de hub do Fleet Manager. No exemplo a seguir, umClusterResourcePlacementchamadodistribute-my-namespaceé usado para implantar um namespacemy-namespaceem todos os clusters de membros, usando a política de posicionamentoPickAll.
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
Aplique isso ao cluster de hub do Fleet Manager emitindo kubectl apply -f distribute-my-namespace.yaml, usando o nome do arquivo criado no lugar de distribute-my-namespace.yaml.
- Verifique o progresso da propagação do recurso:
kubectl get clusterresourceplacement distribute-my-namespace
O resultado deverá ter um aspeto semelhante ao seguinte exemplo:
NAME GEN SCHEDULED SCHEDULEDGEN APPLIED APPLIEDGEN AGE
distribute-my-namespace 2 True 2 True 2 10s
- Veja os detalhes do objeto de posicionamento:
kubectl describe clusterresourceplacement distribute-my-namespace
O resultado deverá ter um aspeto semelhante ao seguinte exemplo:
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
Limpar recursos
Se você não quiser mais usar o ClusterResourcePlacement objeto, poderá excluí-lo usando o kubectl delete comando. O exemplo a seguir exclui o ClusterResourcePlacement objeto chamado distribute-my-namespace:
kubectl delete clusterresourceplacement distribute-my-namespace
Conteúdos relacionados
Para saber mais sobre a propagação de recursos, consulte os seguintes recursos:
- Noções básicas sobre a saída do status do posicionamento de recursos.
- Posicionamento inteligente de recursos do Kubernetes entre clusters com base nas propriedades dos clusters membros.
- Controlando o desalojamento e a perturbação para o posicionamento de recursos do cluster.
- Definição de uma estratégia de distribuição para alocação de recursos de cluster.
- Perguntas frequentes sobre posicionamento de recursos de cluster.
- Documentação de código aberto do KubeFleet.