Niepowodzenie propagacji zasobów: ClusterResourcePlacementRolloutStarted ma wartość false
W tym artykule opisano sposób rozwiązywania problemów ClusterResourcePlacementRolloutStarted
podczas propagacji zasobów przy użyciu obiektu interfejsu ClusterResourcePlacement
API w usłudze Azure Kubernetes Fleet Manager.
Symptomy
W przypadku używania obiektu interfejsu ClusterResourcePlacement
API w usłudze Azure Kubernetes Fleet Manager do propagowania zasobów wybrane zasoby nie są wdrażane we wszystkich zaplanowanych klastrach, a ClusterResourcePlacementRolloutStarted
stan warunku jest wyświetlany jako False
.
Uwaga 16.
Aby uzyskać więcej informacji o tym, dlaczego wdrożenie nie jest uruchamiane, możesz sprawdzić dzienniki kontrolera wdrażania.
Przyczyna
Strategia wdrażania umieszczania zasobów klastra jest blokowana, ponieważ konfiguracja jest zbyt ścisła RollingUpdate
.
Kroki rozwiązywania problemów
ClusterResourcePlacement
W sekcji stanu sprawdź elementplacementStatuses
, aby zidentyfikować klastry, które mająRolloutStarted
stan ustawiony naFalse
.- Znajdź odpowiedni
ClusterResourceBinding
dla zidentyfikowany klaster. Aby uzyskać więcej informacji, zobacz Jak znaleźć najnowszy zasób ClusterResourceBinding? Ten zasób powinien wskazywaćWork
stan (czy został on utworzony, czy zaktualizowany). - Zweryfikuj wartości
maxUnavailable
imaxSurge
, aby upewnić się, że są one zgodne z oczekiwaniami.
Analiza przypadku
W poniższym przykładzie ClusterResourcePlacement
program próbuje propagować przestrzeń nazw do trzech klastrów członkowskich. Jednak podczas początkowego ClusterResourcePlacement
tworzenia przestrzeni nazw nie istniała w klastrze koncentratora, a flota obecnie składa się z dwóch klastrów członkowskich o nazwach kind-cluster-1
i kind-cluster-2
.
Specyfikacja clusterResourcePlacement
spec:
policy:
numberOfClusters: 3
placementType: PickN
resourceSelectors:
- group: ""
kind: Namespace
name: test-ns
version: v1
revisionHistoryLimit: 10
strategy:
type: RollingUpdate
Stan ClusterResourcePlacement
status:
conditions:
- lastTransitionTime: "2024-05-07T23:08:53Z"
message: could not find all the clusters needed as specified by the scheduling
policy
observedGeneration: 1
reason: SchedulingPolicyUnfulfilled
status: "False"
type: ClusterResourcePlacementScheduled
- lastTransitionTime: "2024-05-07T23:08:53Z"
message: All 2 cluster(s) start rolling out the latest resource
observedGeneration: 1
reason: RolloutStarted
status: "True"
type: ClusterResourcePlacementRolloutStarted
- lastTransitionTime: "2024-05-07T23:08:53Z"
message: No override rules are configured for the selected resources
observedGeneration: 1
reason: NoOverrideSpecified
status: "True"
type: ClusterResourcePlacementOverridden
- lastTransitionTime: "2024-05-07T23:08:53Z"
message: Works(s) are successfully created or updated in the 2 target clusters'
namespaces
observedGeneration: 1
reason: WorkSynchronized
status: "True"
type: ClusterResourcePlacementWorkSynchronized
- lastTransitionTime: "2024-05-07T23:08:53Z"
message: The selected resources are successfully applied to 2 clusters
observedGeneration: 1
reason: ApplySucceeded
status: "True"
type: ClusterResourcePlacementApplied
- lastTransitionTime: "2024-05-07T23:08:53Z"
message: The selected resources in 2 cluster are available now
observedGeneration: 1
reason: ResourceAvailable
status: "True"
type: ClusterResourcePlacementAvailable
observedResourceIndex: "0"
placementStatuses:
- clusterName: kind-cluster-2
conditions:
- lastTransitionTime: "2024-05-07T23:08:53Z"
message: 'Successfully scheduled resources for placement in kind-cluster-2 (affinity
score: 0, topology spread score: 0): picked by scheduling policy'
observedGeneration: 1
reason: Scheduled
status: "True"
type: Scheduled
- lastTransitionTime: "2024-05-07T23:08:53Z"
message: Detected the new changes on the resources and started the rollout process
observedGeneration: 1
reason: RolloutStarted
status: "True"
type: RolloutStarted
- lastTransitionTime: "2024-05-07T23:08:53Z"
message: No override rules are configured for the selected resources
observedGeneration: 1
reason: NoOverrideSpecified
status: "True"
type: Overridden
- lastTransitionTime: "2024-05-07T23:08:53Z"
message: All of the works are synchronized to the latest
observedGeneration: 1
reason: AllWorkSynced
status: "True"
type: WorkSynchronized
- lastTransitionTime: "2024-05-07T23:08:53Z"
message: All corresponding work objects are applied
observedGeneration: 1
reason: AllWorkHaveBeenApplied
status: "True"
type: Applied
- lastTransitionTime: "2024-05-07T23:08:53Z"
message: All corresponding work objects are available
observedGeneration: 1
reason: AllWorkAreAvailable
status: "True"
type: Available
- clusterName: kind-cluster-1
conditions:
- lastTransitionTime: "2024-05-07T23:08:53Z"
message: 'Successfully scheduled resources for placement in kind-cluster-1 (affinity
score: 0, topology spread score: 0): picked by scheduling policy'
observedGeneration: 1
reason: Scheduled
status: "True"
type: Scheduled
- lastTransitionTime: "2024-05-07T23:08:53Z"
message: Detected the new changes on the resources and started the rollout process
observedGeneration: 1
reason: RolloutStarted
status: "True"
type: RolloutStarted
- lastTransitionTime: "2024-05-07T23:08:53Z"
message: No override rules are configured for the selected resources
observedGeneration: 1
reason: NoOverrideSpecified
status: "True"
type: Overridden
- lastTransitionTime: "2024-05-07T23:08:53Z"
message: All of the works are synchronized to the latest
observedGeneration: 1
reason: AllWorkSynced
status: "True"
type: WorkSynchronized
- lastTransitionTime: "2024-05-07T23:08:53Z"
message: All corresponding work objects are applied
observedGeneration: 1
reason: AllWorkHaveBeenApplied
status: "True"
type: Applied
- lastTransitionTime: "2024-05-07T23:08:53Z"
message: All corresponding work objects are available
observedGeneration: 1
reason: AllWorkAreAvailable
status: "True"
type: Available
Powyższe dane wyjściowe wskazują, że przestrzeń nazw zasobów test-ns
nigdy nie istniała w klastrze koncentratora i pokazuje następujące ClusterResourcePlacement
stany warunku:
- Stan
ClusterResourcePlacementScheduled
warunku jest wyświetlany jakoFalse
, ponieważ określone zasady mają na celu wybranie trzech klastrów, ale harmonogram może pomieścić tylko miejsca w dwóch aktualnie dostępnych i połączonych klastrach. - Stan
ClusterResourcePlacementRolloutStarted
warunku jest wyświetlany jakoTrue
, ponieważ proces wdrażania rozpoczął się z dwoma wybranymi klastrami. - Stan
ClusterResourcePlacementOverridden
warunku jest wyświetlany jakoTrue
, ponieważ dla wybranych zasobów nie są skonfigurowane żadne reguły zastąpienia. - Stan
ClusterResourcePlacementWorkSynchronized
warunku jest wyświetlany jakoTrue
. - Stan
ClusterResourcePlacementApplied
warunku jest wyświetlany jakoTrue
. - Stan
ClusterResourcePlacementAvailable
warunku jest wyświetlany jakoTrue
.
Aby zapewnić bezproblemowe propagowanie przestrzeni nazw w odpowiednich klastrach, przejdź do utworzenia test-ns
przestrzeni nazw w klastrze koncentratora.
Stan ClusterResourcePlacement po utworzeniu przestrzeni nazw "test-ns" w klastrze koncentratora
status:
conditions:
- lastTransitionTime: "2024-05-07T23:08:53Z"
message: could not find all the clusters needed as specified by the scheduling
policy
observedGeneration: 1
reason: SchedulingPolicyUnfulfilled
status: "False"
type: ClusterResourcePlacementScheduled
- lastTransitionTime: "2024-05-07T23:13:51Z"
message: The rollout is being blocked by the rollout strategy in 2 cluster(s)
observedGeneration: 1
reason: RolloutNotStartedYet
status: "False"
type: ClusterResourcePlacementRolloutStarted
observedResourceIndex: "1"
placementStatuses:
- clusterName: kind-cluster-2
conditions:
- lastTransitionTime: "2024-05-07T23:08:53Z"
message: 'Successfully scheduled resources for placement in kind-cluster-2 (affinity
score: 0, topology spread score: 0): picked by scheduling policy'
observedGeneration: 1
reason: Scheduled
status: "True"
type: Scheduled
- lastTransitionTime: "2024-05-07T23:13:51Z"
message: The rollout is being blocked by the rollout strategy
observedGeneration: 1
reason: RolloutNotStartedYet
status: "False"
type: RolloutStarted
- clusterName: kind-cluster-1
conditions:
- lastTransitionTime: "2024-05-07T23:08:53Z"
message: 'Successfully scheduled resources for placement in kind-cluster-1 (affinity
score: 0, topology spread score: 0): picked by scheduling policy'
observedGeneration: 1
reason: Scheduled
status: "True"
type: Scheduled
- lastTransitionTime: "2024-05-07T23:13:51Z"
message: The rollout is being blocked by the rollout strategy
observedGeneration: 1
reason: RolloutNotStartedYet
status: "False"
type: RolloutStarted
selectedResources:
- kind: Namespace
name: test-ns
version: v1
W poprzednich danych wyjściowych ClusterResourcePlacementScheduled
stan warunku jest wyświetlany jako False
. Stan ClusterResourcePlacementRolloutStarted
jest również wyświetlany w False
następujący sposób: The rollout is being blocked by the rollout strategy in 2 cluster(s)
.
Sprawdź najnowszą ClusterResourceSnapshot
wersję, uruchamiając polecenie w temacie Jak znaleźć najnowszy zasób ClusterResourceBinding?
Najnowszy klasterResourceSnapshot
apiVersion: placement.kubernetes-fleet.io/v1
kind: ClusterResourceSnapshot
metadata:
annotations:
kubernetes-fleet.io/number-of-enveloped-object: "0"
kubernetes-fleet.io/number-of-resource-snapshots: "1"
kubernetes-fleet.io/resource-hash: 72344be6e268bc7af29d75b7f0aad588d341c228801aab50d6f9f5fc33dd9c7c
creationTimestamp: "2024-05-07T23:13:51Z"
generation: 1
labels:
kubernetes-fleet.io/is-latest-snapshot: "true"
kubernetes-fleet.io/parent-CRP: crp-3
kubernetes-fleet.io/resource-index: "1"
name: crp-3-1-snapshot
ownerReferences:
- apiVersion: placement.kubernetes-fleet.io/v1beta1
blockOwnerDeletion: true
controller: true
kind: ClusterResourcePlacement
name: crp-3
uid: b4f31b9a-971a-480d-93ac-93f093ee661f
resourceVersion: "14434"
uid: 85ee0e81-92c9-4362-932b-b0bf57d78e3f
spec:
selectedResources:
- apiVersion: v1
kind: Namespace
metadata:
labels:
kubernetes.io/metadata.name: test-ns
name: test-ns
spec:
finalizers:
- kubernetes
W specyfikacji ClusterResourceSnapshot
selectedResources
sekcja zawiera teraz przestrzeń nazw test-ns
.
Sprawdź, ClusterResourceBinding
kind-cluster-1
czy element został zaktualizowany po utworzeniu przestrzeni nazw test-ns
. Aby uzyskać więcej informacji, zobacz Jak znaleźć najnowszy zasób ClusterResourceBinding?.
ClusterResourceBinding dla typu cluster-1
apiVersion: placement.kubernetes-fleet.io/v1
kind: ClusterResourceBinding
metadata:
creationTimestamp: "2024-05-07T23:08:53Z"
finalizers:
- kubernetes-fleet.io/work-cleanup
generation: 2
labels:
kubernetes-fleet.io/parent-CRP: crp-3
name: crp-3-kind-cluster-1-7114c253
resourceVersion: "14438"
uid: 0db4e480-8599-4b40-a1cc-f33bcb24b1a7
spec:
applyStrategy:
type: ClientSideApply
clusterDecision:
clusterName: kind-cluster-1
clusterScore:
affinityScore: 0
priorityScore: 0
reason: picked by scheduling policy
selected: true
resourceSnapshotName: crp-3-0-snapshot
schedulingPolicySnapshotName: crp-3-0
state: Bound
targetCluster: kind-cluster-1
status:
conditions:
- lastTransitionTime: "2024-05-07T23:13:51Z"
message: The resources cannot be updated to the latest because of the rollout
strategy
observedGeneration: 2
reason: RolloutNotStartedYet
status: "False"
type: RolloutStarted
- lastTransitionTime: "2024-05-07T23:08:53Z"
message: No override rules are configured for the selected resources
observedGeneration: 2
reason: NoOverrideSpecified
status: "True"
type: Overridden
- lastTransitionTime: "2024-05-07T23:08:53Z"
message: All of the works are synchronized to the latest
observedGeneration: 2
reason: AllWorkSynced
status: "True"
type: WorkSynchronized
- lastTransitionTime: "2024-05-07T23:08:53Z"
message: All corresponding work objects are applied
observedGeneration: 2
reason: AllWorkHaveBeenApplied
status: "True"
type: Applied
- lastTransitionTime: "2024-05-07T23:08:53Z"
message: All corresponding work objects are available
observedGeneration: 2
reason: AllWorkAreAvailable
status: "True"
type: Available
Pozostaje niezmieniona ClusterResourceBinding
. W specyfikacji ClusterResourceBinding
resourceSnapshotName
nadal odwołuje się do starej ClusterResourceSnapshot
nazwy. Ten problem występuje, gdy nie ma jawnych RollingUpdate
danych wejściowych od użytkownika, ponieważ są stosowane wartości domyślne:
- Wartość
maxUnavailable
jest skonfigurowana do 25% × 3 (żądana liczba), zaokrąglona do1
. - Wartość
maxSurge
jest skonfigurowana do 25% × 3 (żądana liczba), zaokrąglona do1
.
Dlaczego klasterResourceBinding nie jest aktualizowany
Początkowo, kiedy ClusterResourcePlacement
został utworzony, dwa ClusterResourceBindings
zostały wygenerowane. Jednak ponieważ wdrożenie nie miało zastosowania do fazy początkowej, ClusterResourcePlacementRolloutStarted
warunek został ustawiony na True
wartość .
Podczas tworzenia test-ns
przestrzeni nazw w klastrze centrum kontroler wdrożenia próbował zaktualizować dwa istniejące ClusterResourceBindings
. maxUnavailable
Jednak została ustawiona 1
na wartość z powodu braku klastrów członkowskich, co spowodowało, że konfiguracja była zbyt ścisłaRollingUpdate
.
Uwaga 16.
W trakcie aktualizacji, jeśli nie można zastosować jednego z powiązań, spowoduje to również naruszenie RollingUpdate
konfiguracji, co powoduje maxUnavailable
ustawienie wartości 1
.
Rozwiązanie
W takiej sytuacji, aby rozwiązać ten problem, rozważ ręczne ustawienie maxUnavailable
wartości większej niż 1
w celu złagodzenia RollingUpdate
konfiguracji. Alternatywnie można dołączyć do trzeciego klastra członkowskiego.
Skontaktuj się z nami, aby uzyskać pomoc
Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pytanie w społeczności wsparcia dla platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii na temat platformy Azure.