Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: ✔️ Fleet Manager com cluster de hub
Quando trabalha com o Azure Kubernetes Fleet Manager, compreender o estado dos seus ClusterResourcePlacement recursos é crucial para monitorizar o progresso da implementação e resolver problemas.
Quando trabalha com o Azure Kubernetes Fleet Manager, compreender o estado dos seus ResourcePlacement recursos é crucial para monitorizar o progresso da implementação e resolver problemas.
Pré-requisitos
- Tens um Gestor de Frotas com um cluster de hub e um ou mais clusters de membros. Se não tiveres um, vê Cria um recurso Azure Kubernetes Fleet Manager e junta-te aos clusters membros.
- Tens acesso ao cluster hub do Fleet Manager. Para mais informações, consulte Aceder à API Kubernetes para um cluster hub Azure Kubernetes Fleet Manager.
- Implementaste pelo menos um
ClusterResourcePlacementpara distribuir os seus recursos. Se não o fez, veja Usar a colocação de recursos em clusters para implementar cargas de trabalho em múltiplos clusters.
- Implementaste pelo menos um objeto da API ResourcePlacement para colocar os teus recursos na frota. Se não o fez, veja Usar a colocação de recursos em clusters para implementar cargas de trabalho em múltiplos clusters.
Visão geral da estrutura do estado de colocação
O ClusterResourcePlacement objeto contém não só a especificação descritiva sobre a colocação, mas também o estado da operação de colocação.
O ResourcePlacement objeto contém não só a especificação descritiva sobre a colocação, mas também o estado da operação de colocação.
A secção de estado fornece informações detalhadas sobre:
- Estado geral de colocação expresso através das condições
- Recursos selecionados pela colocação
- Estado de distribuição por agrupamento expresso através das condições
- posicionamentos de
Failed,driftedediffedem cada cluster
Para ver o estado de uma colocação, use o seguinte comando:
kubectl describe clusterresourceplacement <placement-name>
kubectl describe resourceplacement <placement-name> -n <namespace-name>
Para obter a saída YAML bruta, use o seguinte comando:
kubectl get clusterresourceplacement <placement-name> -o yaml
kubectl get resourceplacement <placement-name> -n <namespace-name> -o yaml
Campos de estado de nível superior
A secção de estado contém os seguintes campos de topo:
- selectedResources: Lista de recursos selecionados pela colocação
- condições: Conjunto de condições gerais de colocação
- observedResourceIndex: Índice do instantâneo atual do recurso
- placementStatuses: Informações de estado de colocação por cluster
As secções seguintes analisam cada campo em detalhe.
Recursos selecionados
O campo selectedResources apresenta todos os recursos que o posicionamento seleciona. Use este campo para verificar se os recursos esperados estão incluídos na colocação. Eis um exemplo:
selectedResources:
- kind: Namespace
name: test
version: v1
- kind: ConfigMap
name: test-config
namespace: test
version: v1
envelope:
name: example-envelope
namespace: test
type: ResourceEnvelope
- kind: Deployment
name: web-app
namespace: test
group: apps
version: v1
- kind: Service
name: web-service
namespace: test
version: v1
- kind: Secret
name: app-secrets
namespace: test
version: v1
selectedResources:
- kind: ConfigMap
name: test-config
version: v1
envelope:
name: example-envelope
namespace: test
type: ResourceEnvelope
- kind: Deployment
name: web-app
group: apps
version: v1
- kind: Service
name: web-service
version: v1
- kind: Secret
name: app-secrets
version: v1
Cada entrada de recurso inclui:
- group: API group (vazio para recursos centrais)
-
versão: versão API (por exemplo,
v1,v1beta1) - Tipo: Tipo de recursos
- nome: Nome do recurso
- namespace: Espaço de nomes (para recursos com espaço de nomes)
-
envelope: Se um recurso estiver envolto num envelope, os metadados do envelope também são fornecidos, que incluem:
- nome: Nome do envelope
- Espaço de nomes: Espaço de nomes do envelope
-
tipo: Tipo do envelope (por exemplo,
ResourceEnvelope)
Condições de colocação
O conditions array fornece informações de estado de alto nível sobre toda a colocação. Cada condição segue a definição comum do Kubernetes, que tem os seguintes campos padrão:
- tipo: O tipo de condição (descrito nas secções seguintes).
-
estado:
True,False, ouUnknown. - razão: Código curto de razão para a condição.
- mensagem: Descrição legível para humanos.
- lastTransitionTime: Quando a condição mudou pela última vez.
- observedGeneration: Geração do posicionamento no momento em que a condição foi definida.
Condições de tipo de ClusterResourcePlacement
Os seguintes tipos de condição estão disponíveis para o ClusterResourcePlacement:
Programação de Colocação de Recursos do Cluster
Tipos de condição de Localização de Recursos
Os seguintes tipos de condição estão disponíveis para o ResourcePlacement:
AgendamentoDeColocaçãoDeRecurso
Indica se a colocação está agendada com sucesso para atingir clusters.
- Verdade: Todos os clusters obrigatórios são selecionados de acordo com a política de colocação.
- Falso: O agendamento falhou (por exemplo, não há clusters suficientes disponíveis).
- Desconhecido: A decisão de agendamento está pendente.
conditions:
- type: ClusterResourcePlacementScheduled
status: "True"
reason: SchedulingPolicyFulfilled
message: "found all the clusters needed as specified by the scheduling policy"
lastTransitionTime: "2023-11-10T08:14:52Z"
observedGeneration: 5
conditions:
- type: ResourcePlacementScheduled
status: "True"
reason: SchedulingPolicyFulfilled
message: "found all the clusters needed as specified by the scheduling policy"
lastTransitionTime: "2023-11-10T08:14:52Z"
observedGeneration: 5
RolloutIniciadoDeColocaçãoDeRecursoDoCluster
Início de Distribuição de Recursos
Indica se a implementação foi iniciada entre os clusters selecionados.
- Verdade: Os recursos começaram a ser distribuídos para clusters programados.
- Falso: O lançamento ainda não começou.
- Desconhecido: A decisão sobre o lançamento está pendente.
conditions:
- type: ClusterResourcePlacementRolloutStarted
status: "True"
reason: RolloutStarted
message: "All 3 cluster(s) start rolling out the latest resource"
lastTransitionTime: "2023-11-10T08:15:30Z"
observedGeneration: 5
conditions:
- type: ResourcePlacementRolloutStarted
status: "True"
reason: RolloutStarted
message: "All 3 cluster(s) start rolling out the latest resource"
lastTransitionTime: "2023-11-10T08:15:30Z"
observedGeneration: 5
ClusterResourcePlacementOverridden
SubstituiçãoDeColocaçãoDeRecurso
Indica se as sobreposições de recursos são aplicadas com sucesso.
- Verdadeiro: Todas as substituições aplicáveis são processadas.
- Falso: Algumas substituições falharam ao ser aplicadas.
- Desconhecido: A substituição está pendente de processamento.
conditions:
- type: ClusterResourcePlacementOverridden
status: "True"
reason: NoOverrideSpecified
message: "No override rules are configured for the selected resources"
lastTransitionTime: "2023-11-10T08:15:45Z"
observedGeneration: 5
conditions:
- type: ResourcePlacementOverridden
status: "True"
reason: NoOverrideSpecified
message: "No override rules are configured for the selected resources"
lastTransitionTime: "2023-11-10T08:15:45Z"
observedGeneration: 5
ClusterResourcePlacementWorkSynchronized
TrabalhoDeColocaçãoDeRecursosSincronizado
Indica se o processo cria objetos de trabalho nos namespaces por cluster do hub.
- Verdade: Todos os objetos de trabalho estão sincronizados.
- Falso: A sincronização do trabalho falha ou está incompleta.
- Desconhecido: A sincronização do trabalho está pendente.
conditions:
- type: ClusterResourcePlacementWorkSynchronized
status: "True"
reason: SynchronizeSucceeded
message: "All 2 cluster(s) are synchronized to the latest resources on the hub cluster"
lastTransitionTime: "2023-11-10T08:23:43Z"
observedGeneration: 5
conditions:
- type: ResourcePlacementWorkSynchronized
status: "True"
reason: SynchronizeSucceeded
message: "All 2 cluster(s) are synchronized to the latest resources on the hub cluster"
lastTransitionTime: "2023-11-10T08:23:43Z"
observedGeneration: 5
ClusterResourcePlacementApplied
ResourcePlacementApplied
Indica se todos os recursos são aplicados com sucesso aos clusters membros.
- True: Todos os recursos foram aplicados com sucesso a todos os clusters de destino.
-
Falso: Alguns recursos não se aplicaram (verificar
failedPlacements). - Desconhecido: A operação de aplicação está pendente.
conditions:
- type: ClusterResourcePlacementApplied
status: "True"
reason: ApplySucceeded
message: "The selected resources are successfully applied to 3 clusters"
lastTransitionTime: "2023-11-10T08:16:15Z"
observedGeneration: 5
conditions:
- type: ResourcePlacementApplied
status: "True"
reason: ApplySucceeded
message: "The selected resources are successfully applied to 3 clusters"
lastTransitionTime: "2023-11-10T08:16:15Z"
observedGeneration: 5
ClusterResourcePlacementDisponível
ResourcePlacementAvailable
Indica se os recursos colocados estão todos disponíveis e prontos nos clusters membros.
- Verdade: Todos os recursos estão disponíveis em todos os clusters-alvo.
- Falso: Alguns recursos ainda não estão disponíveis.
- Desconhecido: A verificação de disponibilidade está pendente.
conditions:
- type: ClusterResourcePlacementAvailable
status: "True"
reason: ResourceAvailable
message: "The selected resources in 3 clusters are available now"
lastTransitionTime: "2023-11-10T08:16:30Z"
observedGeneration: 5
conditions:
- type: ResourcePlacementAvailable
status: "True"
reason: ResourceAvailable
message: "The selected resources in 3 clusters are available now"
lastTransitionTime: "2023-11-10T08:16:30Z"
observedGeneration: 5
ClusterResourceColocaçãoDiferençaReportada
ResourcePlacementDiffReportado
Indica se as diferenças de configuração são reportadas (quando se utiliza a estratégia ReportDiff).
- Verdade: Está disponível o relatório completo dos diferenciais.
- Falso: Reporte de diferença falhou ou está incompleto.
- Desconhecido: O relatório de diferenças está pendente.
conditions:
- type: ClusterResourcePlacementDiffReported
status: "True"
reason: DiffReportComplete
message: "Configuration differences are reported for all target clusters"
lastTransitionTime: "2023-11-10T08:16:45Z"
observedGeneration: 5
conditions:
- type: ResourcePlacementDiffReported
status: "True"
reason: DiffReportComplete
message: "Configuration differences are reported for all target clusters"
lastTransitionTime: "2023-11-10T08:16:45Z"
observedGeneration: 5
Capturas de recursos
O observedResourceIndex campo indica qual snapshot dos recursos está atualmente a ser implementado.
observedResourceIndex: "1"
O Fleet Manager cria snapshots de recursos de forma diferente consoante a estratégia de implementação:
Para a estratégia RollingUpdate (por defeito): o Fleet Manager cria automaticamente capturas instantâneas de recursos quando:
- Os seletores de recursos mudam
- Modificas os recursos selecionados
Para estratégiaExternal: o Fleet Manager não cria automaticamente snapshots de recursos. Em vez disso, cria-os quando executas uma atualização em fases e omites o resourceSnapshotIndex campo. Esta condição significa que, quando cria pela primeira vez uma colocação com uma estratégia de rollout External, não existem instantâneos dos recursos até executar a primeira execução da atualização faseada.
Observação
Se um posicionamento usou anteriormente a RollingUpdate estratégia e muda para External, os snapshots de recursos existentes continuam disponíveis. Pode consultar estes snapshots existentes ao criar atualizações em etapas.
Cada snapshot tem um índice único. Pode visualizar instantâneos utilizando:
kubectl get clusterresourcesnapshot --selector=kubernetes-fleet.io/resource-index=1
kubectl get resourcesnapshot -n <namespace-name> --selector=kubernetes-fleet.io/resource-index=1
Estado de colocação por cluster
O placementStatuses array contém o estado detalhado de cada cluster onde os recursos são colocados ou tentados a ser colocados:
placementStatuses:
- clusterName: aks-member-1
observedResourceIndex: "1"
conditions:
- type: ResourceScheduled
status: "True"
reason: ScheduleSucceeded
message: "Successfully scheduled resources for placement in aks-member-1"
lastTransitionTime: "2023-11-10T08:14:52Z"
observedGeneration: 5
- type: RolloutStarted
status: "True"
reason: RolloutStarted
message: "Detected the new changes on the resources and started the rollout process"
lastTransitionTime: "2023-11-10T08:15:30Z"
observedGeneration: 5
- type: Overridden
status: "True"
reason: NoOverrideSpecified
message: "No override rules are configured for the selected resources"
lastTransitionTime: "2023-11-10T08:15:45Z"
observedGeneration: 5
- type: WorkSynchronized
status: "True"
reason: AllWorkSynced
message: "All of the works are synchronized to the latest"
lastTransitionTime: "2023-11-10T08:16:00Z"
observedGeneration: 5
- type: Applied
status: "True"
reason: AllWorkHaveBeenApplied
message: "All corresponding work objects are applied"
lastTransitionTime: "2023-11-10T08:16:15Z"
observedGeneration: 5
- type: Available
status: "True"
reason: ResourceAvailable
message: "All resources are available on the target cluster"
lastTransitionTime: "2023-11-10T08:16:30Z"
observedGeneration: 5
failedPlacements: []
driftedPlacements: []
diffedPlacements: []
- clusterName: aks-member-2
observedResourceIndex: "1"
conditions:
- type: ResourceScheduled
status: "True"
reason: ScheduleSucceeded
message: "Successfully scheduled resources for placement in aks-member-2"
lastTransitionTime: "2023-11-10T08:14:52Z"
observedGeneration: 5
- type: Applied
status: "False"
reason: AppliedManifestFailedReason
message: "Failed to apply some manifests"
lastTransitionTime: "2023-11-10T08:16:15Z"
observedGeneration: 5
failedPlacements:
- kind: Deployment
name: web-app
namespace: test
version: apps/v1
condition:
type: Applied
status: "False"
reason: AppliedManifestFailedReason
message: "Failed to apply manifest: insufficient resources"
lastTransitionTime: "2023-11-10T08:16:15Z"
Tipos de condição por cluster
O estado de cada cluster inclui condições que acompanham o ciclo de vida da implementação:
RecursoAgendado
Indica se o cluster foi selecionado com sucesso para colocação.
- type: ResourceScheduled
status: "True"
reason: ScheduleSucceeded
message: "Successfully scheduled resources for placement in aks-member-1 (affinity score: 0, topology spread score: 0): picked by scheduling policy"
lastTransitionTime: "2023-11-10T08:14:52Z"
observedGeneration: 5
Implementação Iniciada
Indica se a implementação começou neste cluster específico.
- type: RolloutStarted
status: "True"
reason: RolloutStarted
message: "Detected new changes on the resources and started the rollout process"
lastTransitionTime: "2023-11-10T08:15:30Z"
observedGeneration: 5
Anulado
Indica se são aplicadas sobreposições de recursos para este cluster.
- type: Overridden
status: "True"
reason: NoOverrideSpecified
message: "No override rules are configured for the selected resources"
lastTransitionTime: "2023-11-10T08:15:45Z"
observedGeneration: 5
WorkSynchronized
Indica se os objetos de trabalho são criados para este cluster.
- type: WorkSynchronized
status: "True"
reason: AllWorkSynced
message: "All of the works are synchronized to the latest"
lastTransitionTime: "2023-11-10T08:16:00Z"
observedGeneration: 5
Aplicado
Indica se todos os recursos foram aplicados com sucesso a este cluster.
- type: Applied
status: "True"
reason: AllWorkHaveBeenApplied
message: "All corresponding work objects are applied"
lastTransitionTime: "2023-11-10T08:16:15Z"
observedGeneration: 5
Disponível
Indica se todos os recursos estão disponíveis e prontos neste cluster.
- type: Available
status: "True"
reason: ResourceAvailable
message: "All resources are available on the target cluster"
lastTransitionTime: "2023-11-10T08:16:30Z"
observedGeneration: 5
Diferença Reportada
Indica se são reportadas diferenças de configuração para este cluster.
- type: DiffReported
status: "True"
reason: DiffReportComplete
message: "Configuration differences are reported for this cluster"
lastTransitionTime: "2023-11-10T08:16:45Z"
observedGeneration: 5
Colocações falhadas
Quando os recursos não se aplicam a um cluster, o sistema regista os detalhes no failedPlacements array:
failedPlacements:
- kind: Deployment
name: my-app
namespace: default
version: apps/v1
condition:
type: Applied
status: "False"
reason: AppliedManifestFailedReason
message: "Failed to apply manifest: namespaces 'app' not found"
lastTransitionTime: "2023-12-06T00:09:53Z"
envelope:
name: example
namespace: app
type: ResourceEnvelope
- kind: Service
name: my-service
namespace: default
version: v1
condition:
type: Applied
status: "False"
reason: AppliedManifestFailedReason
message: "Failed to apply manifest: Service 'my-service' is forbidden: User 'system:serviceaccount:fleet-system:fleet-agent' cannot create resource 'services' in API group '' in the namespace 'default'"
lastTransitionTime: "2023-12-06T00:10:15Z"
- kind: ConfigMap
name: app-config
namespace: production
version: v1
condition:
type: Applied
status: "False"
reason: AppliedManifestFailedReason
message: "Failed to apply manifest: configmaps 'app-config' already exists"
lastTransitionTime: "2023-12-06T00:10:30Z"
Cada colocação falhada inclui:
- Identificação de recurso: grupo, versão, tipo, nome, espaço de nomes
- condição: A condição específica de falha
- envelope: Informação do envelope, se aplicável
Posicionamentos deslocados
O Gestor de Frotas reporta sempre os recursos que se desviam do estado desejado:
driftedPlacements:
- kind: Namespace
name: web
version: v1
observationTime: "2025-03-19T06:50:25Z"
firstDriftedObservedTime: "2025-03-19T06:49:54Z"
targetClusterObservedGeneration: 12
observedDrifts:
- path: "/metadata/labels/owner"
valueInHub: "simon"
valueInMember: "chen"
- path: "/metadata/annotations/purpose"
valueInHub: "production"
valueInMember: "testing"
- kind: Deployment
name: web-app
namespace: web
group: apps
version: v1
observationTime: "2025-03-19T06:50:25Z"
firstDriftedObservedTime: "2025-03-19T06:49:54Z"
targetClusterObservedGeneration: 8
observedDrifts:
- path: "/spec/replicas"
valueInHub: "3"
valueInMember: "5"
- path: "/spec/template/spec/containers/0/image"
valueInHub: "nginx:1.20"
valueInMember: "nginx:1.21"
- kind: ConfigMap
name: app-config
namespace: web
version: v1
observationTime: "2025-03-19T06:50:25Z"
firstDriftedObservedTime: "2025-03-19T06:49:54Z"
targetClusterObservedGeneration: 5
observedDrifts:
- path: "/data/environment"
valueInHub: "production"
valueInMember: "staging"
Cada colocação à deriva inclui:
- Identificação de recurso: grupo, versão, tipo, nome, espaço de nomes
- Tempo de observação: Quando a deriva foi observada pela última vez
- firstDriftedObservedTime: Quando a deriva foi detetada pela primeira vez
- targetClusterObservedGeneration: Geração do recurso no cluster membro
- observedDrifts: Lista detalhada de diferenças de configuração
Colocações diferenciadas
Quando utiliza a estratégia de aplicação do ReportDiff, o Gestor de Frotas reporta diferenças de configuração.
diffedPlacements:
- kind: Service
name: my-service
namespace: default
version: v1
observationTime: "2025-03-19T06:50:25Z"
firstDiffedObservedTime: "2025-03-19T06:49:54Z"
targetClusterObservedGeneration: 8
observedDiffs:
- path: "/spec/ports/0/nodePort"
valueInHub: ""
valueInMember: "30080"
- path: "/spec/clusterIP"
valueInHub: ""
valueInMember: "10.96.100.200"
- kind: Deployment
name: web-app
namespace: default
group: apps
version: v1
observationTime: "2025-03-19T06:50:25Z"
firstDiffedObservedTime: "2025-03-19T06:49:54Z"
targetClusterObservedGeneration: 12
observedDiffs:
- path: "/status/replicas"
valueInHub: ""
valueInMember: "3"
- path: "/status/readyReplicas"
valueInHub: ""
valueInMember: "3"
- path: "/metadata/generation"
valueInHub: "1"
valueInMember: "2"
As colocações diferenciadas têm uma estrutura semelhante às colocações com deriva, mas são usadas em cenários diferentes:
- Posicionamentos alterados: Utiliza quando aplicares recursos, mas depois os alteras.
- Colocações diferenciadas: Use com a estratégia ReportDiff ou quando as condições de aquisição não forem cumpridas.
Monitorização do progresso da colocação
Para monitorizar eficazmente o progresso da colocação, verifique estes indicadores-chave:
-
Recurso colocado: Verifique se
ClusterResourcePlacementWorkSynchronizedé verdadeiro -
Saúde geral: Observe o estado
ClusterResourcePlacementApplied - Estado por cluster: Revisão das condições para cada cluster-alvo
-
Colocações falhadas: Verifique se há entradas nos
failedPlacementsarrays
-
Recurso colocado: Verifique se
ResourcePlacementWorkSynchronizedé verdadeiro -
Saúde geral: Veja o estado
ResourcePlacementApplied - Estado por cluster: Revisão das condições para cada cluster-alvo
-
Colocações falhadas: Verifique se há entradas nos
failedPlacementsarrays
Exemplo de estado completo
Aqui está um exemplo abrangente que mostra o estado completo de um ClusterResourcePlacement:
apiVersion: placement.kubernetes-fleet.io/v1
kind: ClusterResourcePlacement
metadata:
name: web-app-placement
generation: 5
spec:
resourceSelectors:
- group: ""
kind: Namespace
name: web-app
version: v1
- group: apps
kind: Deployment
name: web-server
namespace: web-app
version: v1
- group: ""
kind: Service
name: web-service
namespace: web-app
version: v1
policy:
placementType: PickN
numberOfClusters: 2
affinity:
clusterAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
clusterSelectorTerms:
- matchLabels:
region: us-west
status:
conditions:
- type: ClusterResourcePlacementScheduled
status: "True"
reason: SchedulingPolicyFulfilled
message: "found all the clusters needed as specified by the scheduling policy"
lastTransitionTime: "2023-11-10T08:14:52Z"
observedGeneration: 5
- type: ClusterResourcePlacementRolloutStarted
status: "True"
reason: RolloutStarted
message: "All 2 cluster(s) start rolling out the latest resource"
lastTransitionTime: "2023-11-10T08:15:30Z"
observedGeneration: 5
- type: ClusterResourcePlacementOverridden
status: "True"
reason: NoOverrideSpecified
message: "No override rules are configured for the selected resources"
lastTransitionTime: "2023-11-10T08:15:45Z"
observedGeneration: 5
- type: ClusterResourcePlacementWorkSynchronized
status: "True"
reason: SynchronizeSucceeded
message: "All 2 cluster(s) are synchronized to the latest resources on the hub cluster"
lastTransitionTime: "2023-11-10T08:16:00Z"
observedGeneration: 5
- type: ClusterResourcePlacementApplied
status: "True"
reason: ApplySucceeded
message: "The selected resources are successfully applied to 2 clusters"
lastTransitionTime: "2023-11-10T08:16:15Z"
observedGeneration: 5
- type: ClusterResourcePlacementAvailable
status: "True"
reason: ResourceAvailable
message: "The selected resources in 2 cluster are available now"
lastTransitionTime: "2023-11-10T08:16:30Z"
observedGeneration: 5
observedResourceIndex: "1"
selectedResources:
- group: ""
kind: Namespace
name: web-app
version: v1
- group: apps
kind: Deployment
name: web-server
namespace: web-app
version: v1
- group: ""
kind: Service
name: web-service
namespace: web-app
version: v1
placementStatuses:
- clusterName: aks-west-1
observedResourceIndex: "1"
conditions:
- type: ResourceScheduled
status: "True"
reason: ScheduleSucceeded
message: "Successfully scheduled resources for placement in aks-west-1 (affinity score: 0, topology spread score: 0): picked by scheduling policy"
lastTransitionTime: "2023-11-10T08:14:52Z"
observedGeneration: 5
- type: RolloutStarted
status: "True"
reason: RolloutStarted
message: "Detected the new changes on the resources and started the rollout process"
lastTransitionTime: "2023-11-10T08:15:30Z"
observedGeneration: 5
- type: Overridden
status: "True"
reason: NoOverrideSpecified
message: "No override rules are configured for the selected resources"
lastTransitionTime: "2023-11-10T08:15:45Z"
observedGeneration: 5
- type: WorkSynchronized
status: "True"
reason: AllWorkSynced
message: "All of the works are synchronized to the latest"
lastTransitionTime: "2023-11-10T08:16:00Z"
observedGeneration: 5
- type: Applied
status: "True"
reason: AllWorkHaveBeenApplied
message: "All corresponding work objects are applied"
lastTransitionTime: "2023-11-10T08:16:15Z"
observedGeneration: 5
- type: Available
status: "True"
reason: ResourceAvailable
message: "All resources are available on the target cluster"
lastTransitionTime: "2023-11-10T08:16:30Z"
observedGeneration: 5
failedPlacements: []
driftedPlacements: []
diffedPlacements: []
- clusterName: aks-west-2
observedResourceIndex: "1"
conditions:
- type: ResourceScheduled
status: "True"
reason: ScheduleSucceeded
message: "Successfully scheduled resources for placement in aks-west-2 (affinity score: 0, topology spread score: 0): picked by scheduling policy"
lastTransitionTime: "2023-11-10T08:14:52Z"
observedGeneration: 5
- type: RolloutStarted
status: "True"
reason: RolloutStarted
message: "Detected new changes on the resources and started the rollout process"
lastTransitionTime: "2023-11-10T08:15:30Z"
observedGeneration: 5
- type: Overridden
status: "True"
reason: NoOverrideSpecified
message: "No override rules are configured for the selected resources"
lastTransitionTime: "2023-11-10T08:15:45Z"
observedGeneration: 5
- type: WorkSynchronized
status: "True"
reason: AllWorkSynced
message: "All of the works are synchronized to the latest"
lastTransitionTime: "2023-11-10T08:16:00Z"
observedGeneration: 5
- type: Applied
status: "True"
reason: AllWorkHaveBeenApplied
message: "All corresponding work objects are applied"
lastTransitionTime: "2023-11-10T08:16:15Z"
observedGeneration: 5
- type: Available
status: "True"
reason: ResourceAvailable
message: "All resources are available on the target cluster"
lastTransitionTime: "2023-11-10T08:16:30Z"
observedGeneration: 5
failedPlacements: []
driftedPlacements: []
diffedPlacements: []
Aqui está um exemplo abrangente que mostra o estado completo de um ResourcePlacement:
apiVersion: placement.kubernetes-fleet.io/v1beta1
kind: ResourcePlacement
metadata:
name: web-app-placement
namespace: web-app
generation: 5
spec:
resourceSelectors:
- group: apps
kind: Deployment
name: web-server
version: v1
- group: ""
kind: Service
name: web-service
version: v1
policy:
placementType: PickN
numberOfClusters: 2
affinity:
clusterAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
clusterSelectorTerms:
- matchLabels:
region: us-west
status:
conditions:
- type: ResourcePlacementScheduled
status: "True"
reason: SchedulingPolicyFulfilled
message: "found all the clusters needed as specified by the scheduling policy"
lastTransitionTime: "2023-11-10T08:14:52Z"
observedGeneration: 5
- type: ResourcePlacementRolloutStarted
status: "True"
reason: RolloutStarted
message: "All 2 cluster(s) start rolling out the latest resource"
lastTransitionTime: "2023-11-10T08:15:30Z"
observedGeneration: 5
- type: ResourcePlacementOverridden
status: "True"
reason: NoOverrideSpecified
message: "No override rules are configured for the selected resources"
lastTransitionTime: "2023-11-10T08:15:45Z"
observedGeneration: 5
- type: ResourcePlacementWorkSynchronized
status: "True"
reason: SynchronizeSucceeded
message: "All 2 cluster(s) are synchronized to the latest resources on the hub cluster"
lastTransitionTime: "2023-11-10T08:16:00Z"
observedGeneration: 5
- type: ResourcePlacementApplied
status: "True"
reason: ApplySucceeded
message: "The selected resources are successfully applied to 2 clusters"
lastTransitionTime: "2023-11-10T08:16:15Z"
observedGeneration: 5
- type: ResourcePlacementAvailable
status: "True"
reason: ResourceAvailable
message: "The selected resources in 2 cluster are available now"
lastTransitionTime: "2023-11-10T08:16:30Z"
observedGeneration: 5
observedResourceIndex: "1"
selectedResources:
- group: apps
kind: Deployment
name: web-server
version: v1
- group: ""
kind: Service
name: web-service
version: v1
placementStatuses:
- clusterName: aks-west-1
observedResourceIndex: "1"
conditions:
- type: ResourceScheduled
status: "True"
reason: ScheduleSucceeded
message: "Successfully scheduled resources for placement in aks-west-1 (affinity score: 0, topology spread score: 0): picked by scheduling policy"
lastTransitionTime: "2023-11-10T08:14:52Z"
observedGeneration: 5
- type: RolloutStarted
status: "True"
reason: RolloutStarted
message: "Detected the new changes on the resources and started the rollout process"
lastTransitionTime: "2023-11-10T08:15:30Z"
observedGeneration: 5
- type: Overridden
status: "True"
reason: NoOverrideSpecified
message: "No override rules are configured for the selected resources"
lastTransitionTime: "2023-11-10T08:15:45Z"
observedGeneration: 5
- type: WorkSynchronized
status: "True"
reason: AllWorkSynced
message: "All of the works are synchronized to the latest"
lastTransitionTime: "2023-11-10T08:16:00Z"
observedGeneration: 5
- type: Applied
status: "True"
reason: AllWorkHaveBeenApplied
message: "All corresponding work objects are applied"
lastTransitionTime: "2023-11-10T08:16:15Z"
observedGeneration: 5
- type: Available
status: "True"
reason: ResourceAvailable
message: "All resources are available on the target cluster"
lastTransitionTime: "2023-11-10T08:16:30Z"
observedGeneration: 5
failedPlacements: []
driftedPlacements: []
diffedPlacements: []
- clusterName: aks-west-2
observedResourceIndex: "1"
conditions:
- type: ResourceScheduled
status: "True"
reason: ScheduleSucceeded
message: "Successfully scheduled resources for placement in aks-west-2 (affinity score: 0, topology spread score: 0): picked by scheduling policy"
lastTransitionTime: "2023-11-10T08:14:52Z"
observedGeneration: 5
- type: RolloutStarted
status: "True"
reason: RolloutStarted
message: "Detected new changes on the resources and started the rollout process"
lastTransitionTime: "2023-11-10T08:15:30Z"
observedGeneration: 5
- type: Overridden
status: "True"
reason: NoOverrideSpecified
message: "No override rules are configured for the selected resources"
lastTransitionTime: "2023-11-10T08:15:45Z"
observedGeneration: 5
- type: WorkSynchronized
status: "True"
reason: AllWorkSynced
message: "All of the works are synchronized to the latest"
lastTransitionTime: "2023-11-10T08:16:00Z"
observedGeneration: 5
- type: Applied
status: "True"
reason: AllWorkHaveBeenApplied
message: "All corresponding work objects are applied"
lastTransitionTime: "2023-11-10T08:16:15Z"
observedGeneration: 5
- type: Available
status: "True"
reason: ResourceAvailable
message: "All resources are available on the target cluster"
lastTransitionTime: "2023-11-10T08:16:30Z"
observedGeneration: 5
failedPlacements: []
driftedPlacements: []
diffedPlacements: []
Este exemplo mostra:
- Agendamento bem-sucedido: A colocação encontrou dois agrupamentos que correspondem à política de colocação.
- Implementação bem-sucedida: Todos os recursos são distribuídos para ambos os clusters-alvo.
- Sem substituições: Não são configuradas nem necessárias sobrescrições de recursos.
- Trabalho sincronizado: Os objetos de trabalho são criados e sincronizados.
- Recursos aplicados: Todos os recursos são aplicados com sucesso.
- Recursos disponíveis: Todos os recursos estão a funcionar e disponíveis.
- Estado limpo: Sem colocações falhadas, desviadas ou diferenciadas.
Conteúdo relacionado
Para saber mais sobre a colocação de recursos, consulte os seguintes artigos: