Feature Request: Quota Bypass for Rolling Updates in Machine Deployments
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 42/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Stack tecnologico
- azure, go
- Ambito
- cloud, infrastructure
Direzione di ricerca
Inizia dai punti di ingresso del machine controller per il rolling update di MachineDeployment e lo scaling di MachineSet, quindi segui la creazione delle macchine fino alla convalida delle quote nell’admission webhook. Verifica come l’annotazione di bypass verrebbe applicata solo durante rolling update idonei e come gli errori relativi alle quote vengono distinti dagli altri errori di convalida. Il lavoro è completato quando i rolling update entro maxSurge hanno esito positivo senza consentire scale-up né eludere la convalida non relativa alle quote.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
What happened?
When implementing Project Quotas, we're running into a problem where rolling restarts of machine deployments fail due to quota validation. The issue occurs because during a rolling update, the machine controller temporarily creates new machines before deleting old ones, causing a brief period where the total resource usage exceeds the quota limits.
Error Message:
failed to sync Machineset replicas: admission webhook "machines.cluster.k8c.io" denied the request: requested CPU "6" would exceed current quota (quota/used "20"/"18")
Root Cause:
- Machine controller uses a rolling update strategy with
maxSurgeto maintain availability - New machines are created before old machines are deleted
- Quota validation happens at admission webhook level before the old machines are removed
- This creates a temporary overage that fails quota validation
Expected behavior
The machine controller should be able to perform rolling updates without failing quota validation when:
- The replica count of the MachineDeployment is not being increased (i.e., it's a rolling restart/update, not a scale-up)
- The temporary overage is within the
maxSurgelimits of the rolling update strategy - The total resource usage will return to normal levels once the rolling update completes
Proposed Solution:
- Add a quota bypass mechanism for machines created during rolling updates
- Use an annotation
kubermatic.io/bypass-quota-validation=trueon machines created during rolling updates - Modify the admission webhook to detect quota-related errors and bypass validation when the annotation is present
- Ensure the bypass only applies to quota-related errors, not other validation failures
How to reproduce the issue?
-
Setup a MachineDeployment with quota limits:
apiVersion: "cluster.k8s.io/v1alpha1" kind: MachineDeployment metadata: name: test-deployment spec: replicas: 3 strategy: type: RollingUpdate rollingUpdate: maxSurge: 1 maxUnavailable: 1 template: spec: providerSpec: value: cloudProvider: "azure" cloudProviderSpec: vmSize: "Standard_D2s_v3" # 2 vCPUs per machine -
Set up resource quotas:
apiVersion: v1 kind: ResourceQuota metadata: name: compute-quota spec: hard: requests.cpu: "6" # Total of 3 machines * 2 CPUs = 6 CPUs -
Trigger a rolling update by changing the machine template (e.g., update the OS image or kubelet version)
-
Observe the failure when the machine controller tries to create the 4th machine (3 existing + 1 new for rolling update)
Additional details
Current Flow:
MachineDeployment Update → MachineSet Scaling → Machine Creation → Quota Check → FAIL
Proposed Flow:
MachineDeployment Update → MachineSet Scaling → Machine Creation (with bypass annotation) → Quota Check → BYPASS → SUCCESS
- Lingua principale
- Go
- Stelle
- 326
- Fork
- 140
- Merge medio
- 5h 51m
- PR unite (30g)
- 13
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di kubermatic/machine-controller
-
Align kubebuilder markers with shipped CRDsForse già presa @KhizerRehan l’ha presa 32 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
kubermatic/machine-controller#2091 ·
I maintainer di solito rispondono entro 1 giorno
-
customer-request kind/feature
Difficoltà 5/5 Più di una settimana Idoneità per principianti 12/100
kubermatic/machine-controller#2104 ·
I maintainer di solito rispondono entro 1 giorno
-
customer-request
Difficoltà 4/5 3-5 giorni Idoneità per principianti 25/100
kubermatic/machine-controller#2103 · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
kubermatic/machine-controller#2080 ·
I maintainer di solito rispondono entro 1 giorno
-
Bump Azure SDKAperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 52/100
kubermatic/machine-controller#2066 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di kubermatic/machine-controller
Issue simili
-
Handler accepts zero/negative NNCP_MAX_RETRIES and NNCP backoff values, stalling policies or hot-loopingForse già presa @NopeCharon l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
nmstate/kubernetes-nmstate#1604 ·
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
-
bug raised-by:desk
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
medici-finance/assay#4723 ·
I maintainer di solito rispondono entro 1 giorno
-
[doc-healer] DDUw improvement: retry integrity-filtered issue reads with direct single-item lookupsApertaautomation documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
flannel-io/flannel#2608 ·
I maintainer di solito rispondono entro 2 giorni