2015-10-28 13 views
6

Mi piacerebbe mantenere il numero di core nel mio cluster GKE sotto 3. Ciò diventa molto più fattibile se i limiti della CPU dei controller di replica K8 e dei pod sono ridotti da 100m a massimo 50m. Altrimenti, i pod K8s da soli prendono il 70% di un core.Come ridurre i limiti della CPU delle risorse di sistema di kubernetes?

Ho deciso di non aumentare la potenza della CPU di un nodo. Ciò sarebbe concettualmente sbagliato a mio parere perché il limite della CPU è definito per essere misurato in core. Invece, ho fatto la seguente:

  • sostituzione limitranges/limiti con una versione con "50", come limite di CPU di default (non è necessario, ma a mio più pulito parere)
  • patching tutti regolatore replica nel Kube-system spazio dei nomi da utilizzare per tutti i contenitori 50m
  • eliminazione loro baccelli
  • sostituzione di tutti i baccelli non rc nello spazio dei nomi Kube-sistema con le versioni che utilizzano 50 per tutti i contenitori

Si tratta di un sacco di lavoro e probabilmente fragile. Eventuali ulteriori modifiche nelle prossime versioni di K8 o modifiche nella configurazione di GKE potrebbero interromperlo.

Quindi, c'è un modo migliore?

risposta

3

La modifica del LimitRange dello spazio dei nomi predefinito spec.limits.defaultRequest.cpu dovrebbe essere una soluzione legittima per la modifica del valore predefinito per i nuovi pod. Si noti che gli oggetti LimitRange sono assegnati a un nome, quindi se si utilizzano spazi dei nomi aggiuntivi è probabile che si desideri riflettere su quale sia l'impostazione predefinita corretta per loro.

Come si fa notare, ciò non influirà sugli oggetti o sugli oggetti esistenti nello spazio dei nomi del sistema Kube.

Gli oggetti nello spazio dei nomi del sistema Kube erano per lo più dimensionati empiricamente, in base ai valori osservati. Cambiare quelli potrebbe avere effetti dannosi, ma forse non se il tuo cluster è molto piccolo.

Abbiamo un problema aperto (https://github.com/kubernetes/kubernetes/issues/13048) per regolare le richieste del sistema Kube in base alla dimensione totale del cluster, ma non è ancora stato implementato. Abbiamo un altro numero aperto (https://github.com/kubernetes/kubernetes/issues/13695) per utilizzare forse una QoS inferiore per alcune risorse del sistema Kube, ma ancora una volta - non ancora implementato.

Di questi, penso che # 13048 sia il modo giusto per implementare ciò che stai chiedendo. Per ora, la risposta a "c'è un modo migliore" è tristemente "no". Abbiamo scelto i valori di default per i cluster di medie dimensioni: per cluster molto piccoli probabilmente devi fare quello che stai facendo.

Problemi correlati