Iwwerwachung Kubernetes Cluster Ressourcen

Iwwerwachung Kubernetes Cluster Ressourcen

Ech hunn de Kube Eagle erstallt - e Prometheus Exportateur. Et huet sech als eng cool Saach erausgestallt, déi hëlleft d'Ressourcen vu klengen a mëttelgrousse Cluster besser ze verstoen. Um Enn hunn ech Honnerte vun Dollar gespuert, well ech déi richteg Maschinnaarte gewielt hunn an d'Applikatiounsressourcelimite fir Aarbechtslaascht konfiguréiert hunn.

Ech soen Iech iwwer d'Virdeeler Kube Eagle, awer als éischt wäert ech erklären wat d'Fusioun verursaacht huet a firwat eng héichqualitativ Iwwerwaachung gebraucht gouf.

Ech hunn e puer Cluster vu 4-50 Noden verwalt. All Cluster enthält bis zu 200 Mikroservicer an Uwendungen. Fir besser Benotzung vun der existéierender Hardware ze maachen, goufen déi meescht Deployementer mat burstablen RAM an CPU Ressourcen konfiguréiert. Op dës Manéier kënnen Pods verfügbar Ressourcen huelen wann néideg, a gläichzäiteg net mat aneren Uwendungen op dësem Node stéieren. Gutt, ass et net super?

An och wann de Stärekoup relativ wéineg CPU (8%) a RAM (40%) verbraucht huet, hu mir dauernd Probleemer mat Pods déi virausgesot goufen wann se probéiert hunn méi Erënnerung ze verdeelen wéi um Node verfügbar war. Deemools hate mir nëmmen een Dashboard fir d'Iwwerwaachung vu Kubernetes Ressourcen. Esou:

Iwwerwachung Kubernetes Cluster Ressourcen
Grafana Dashboard nëmme mat cAdvisor Metriken

Mat sou engem Panel ass et kee Problem Noden ze gesinn déi vill Erënnerung an CPU iessen. De Problem ass erauszefannen wat de Grond ass. Fir d'Pods op der Plaz ze halen, kéint ee selbstverständlech garantéierte Ressourcen op all Pods opsetzen (gefrote Ressourcen gläich un der Limit). Awer dëst ass net déi intelligent Notzung vun Hardware. De Stärekoup hat e puer honnert Gigabytes Erënnerung, während e puer Noden hongereg waren, anerer haten 4-10 GB an der Reserve.

Et stellt sech eraus datt de Kubernetes Scheduler d'Aarbechtslaascht ongläich iwwer verfügbare Ressourcen verdeelt. De Kubernetes Scheduler berücksichtegt verschidde Konfiguratiounen: Affinitéit, Taints an Toleratiounsregelen, Node Selectoren déi déi verfügbar Noden limitéiere kënnen. Awer a mengem Fall war et näischt wéi dat, an d'Pods ware geplangt ofhängeg vun den ugefrote Ressourcen op all Node.

Den Node deen déi meeschte gratis Ressourcen huet an deen d'Ufrobedéngungen entsprécht, gouf fir de Pod ausgewielt. Mir hu festgestallt datt déi ugefrote Ressourcen op den Noden net mat der aktueller Notzung entspriechen, an dat ass wou de Kube Eagle a seng Ressource Iwwerwaachungsfäegkeeten zur Rettung koumen.

Ech hu bal all Kubernetes Stärekéip iwwerwaacht nëmme mat Node Exportateur и Kube Staat Metriken. Node Exporter liwwert Statistiken iwwer I/O an Disk, CPU, a RAM Notzung, wärend Kube State Metrics weist Kubernetes Objet Metriken wéi Ufroen an CPU a Memory Ressource Limiten.

Mir mussen d'Benotzungsmoossnamen mat den Ufroen a Limite Metriken an Grafana kombinéieren, an da wäerte mir all Informatioun iwwer de Problem kréien. Dëst kléngt einfach, awer déi zwee Tools nennen d'Etiketten tatsächlech anescht, an e puer Metriken hu guer keng Metadatenetiketten. Kube Eagle mécht alles selwer an de Panel gesäit esou aus:

Iwwerwachung Kubernetes Cluster Ressourcen

Iwwerwachung Kubernetes Cluster Ressourcen
Kube Eagle Dashboard

Mir hunn et fäerdeg bruecht vill Probleemer mat Ressourcen ze léisen an Ausrüstung ze spueren:

  1. E puer Entwéckler woussten net wéi vill Ressourcen Mikroservicer brauchen (oder einfach net gestéiert). Et war kee Wee fir eis falsch Ufroe fir Ressourcen ze fannen - dofir musse mir Konsum plus Ufroen a Limiten wëssen. Elo gesinn se Prometheus Metriken, iwwerwaachen déi aktuell Notzung an passen Ufroen a Limiten un.
  2. JVM Uwendungen huelen sou vill RAM wéi se kënnen handhaben. De Gerempels Sammler verëffentlecht nëmmen Erënnerung wann méi wéi 75% benotzt gëtt. A well déi meescht Servicer burstable Erënnerung hunn, war et ëmmer vun der JVM besat. Dofir hunn all dës Java Servicer vill méi RAM iessen wéi erwaart.
  3. E puer Applikatiounen hunn ze vill Erënnerung gefrot, an de Kubernetes Scheduler huet dës Wirbelen net un aner Applikatiounen ginn, och wann se tatsächlech méi fräi waren wéi aner Wirbelen. Een Entwéckler huet zoufälleg eng extra Ziffer an der Demande bäigefüügt an e grousst Stéck RAM gegraff: 20 GB amplaz 2. Keen huet gemierkt. D'Applikatioun hat 3 Repliken, sou datt sou vill wéi 3 Wirbelen betraff waren.
  4. Mir hunn Ressourcelimiten agefouert, Pods mat de korrekten Ufroen nei geplangt, a kruten en ideale Gläichgewiicht vun der Hardwareverbrauch iwwer all Noden. E puer Node kéinte ganz zougemaach ginn. An dann hu mir gesinn, datt mir déi falsch Maschinnen haten (CPU orientéiert, net Erënnerung orientéiert). Mir hunn den Typ geännert an e puer méi Noden geläscht.

Resultater

Mat burstable Ressourcen am Stärekoup benotzt Dir déi verfügbar Hardware méi effizient, awer de Kubernetes Scheduler plangt Pods op Basis vun Ufroe fir Ressourcen, an dëst ass voll. Fir zwee Villercher mat engem Steen ëmzebréngen: fir Problemer ze vermeiden a Ressourcen voll ze benotzen, brauch Dir eng gutt Iwwerwaachung. Dofir wäert et nëtzlech sinn Kube Eagle (Prometheus Exporter a Grafana Dashboard).

Source: will.com

Setzt e Commentaire