Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo descreve como usar o posicionamento de recursos de cluster do Gerenciador de Frotas do Kubernetes do Azure para implantar cargas de trabalho entre clusters em uma frota.
Pré-requisitos
- Se você ainda 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 recurso para entender os conceitos e a terminologia usados neste artigo.
- Você precisa de um Gerenciador de frotas com um cluster de hub e clusters de membros. Caso não tenha um, confira Criar um recurso do Gerenciador de Frota de Kubernetes do Azure e ingressar em clusters membros usando a CLI do Azure.
- Os clusters de membro devem ser rotulados adequadamente no cluster do hub para corresponder aos critérios de seleção desejados. Os rótulos de exemplo incluem região, ambiente, equipe, zonas de disponibilidade, disponibilidade de nó ou qualquer outra coisa que você queira.
- Você precisa de acesso à API do Kubernetes do cluster de hub. Caso não tenha acesso, consulte Acessar a API do Kubernetes para um cluster de hub do Gerenciador de Frota de Kubernetes do Azure.
Usar ClusterResourcePlacement para colocar recursos em clusters membros
O ClusterResourcePlacement objeto é criado no cluster do hub e é usado para propagar recursos para clusters membros. Ela especifica os recursos a serem propagados e a política de colocação a ser usada ao selecionar clusters 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 o posicionamento de recursos usando o posicionamento de recursos de cluster do Azure Kubernetes Fleet Manager e a documentação do KubeFleet de software livre.
- Crie um namespace para atribuir aos clusters membros:
kubectl create namespace my-namespace
- Crie um objeto
ClusterResourcePlacemente aplique-o ao cluster do hub do Gerenciador de frotas. No exemplo a seguir, umClusterResourcePlacementnomeadodistribute-my-namespaceé usado para implantar um namespacemy-namespaceem todos os clusters de membros, utilizando 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 do hub do Fleet Manager emitindo kubectl apply -f distribute-my-namespace.yaml, usando o nome do arquivo que você criou no lugar de distribute-my-namespace.yaml.
- Verifique o progresso da propagação de recursos:
kubectl get clusterresourceplacement distribute-my-namespace
Seu resultado deve ser semelhante ao seguinte exemplo:
NAME GEN SCHEDULED SCHEDULEDGEN APPLIED APPLIEDGEN AGE
distribute-my-namespace 2 True 2 True 2 10s
- Exiba os detalhes do objeto de posicionamento:
kubectl describe clusterresourceplacement distribute-my-namespace
Seu resultado deve ser 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 os recursos
Caso não queira mais usar o objeto ClusterResourcePlacement, poderá excluí-lo usando o comando kubectl delete. O exemplo a seguir exclui o objeto ClusterResourcePlacement chamado distribute-my-namespace:
kubectl delete clusterresourceplacement distribute-my-namespace
Conteúdo relacionado
Para saber mais sobre a propagação de recursos, confira os seguintes recursos:
- Noções básicas sobre a saída do status de posicionamento do recurso.
- Colocação inteligente de recursos do Kubernetes entre clusters com base nas propriedades dos clusters membros.
- Controlando a remoção e a interrupção para posicionamento de recursos do cluster.
- Definindo uma estratégia de implementação para alocação de recursos do cluster.
- Perguntas frequentes sobre o posicionamento de recursos do cluster.
- Documentação do KubeFleet de software livre.