ΠΡΠΈΠΌ. ΠΏΠ΅ΡΠ΅Π².: ΡΡΠ° ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΈΡΡΠΎΡΠΈΡ Omio β Π΅Π²ΡΠΎΠΏΠ΅ΠΉΡΠΊΠΎΠ³ΠΎ Π°Π³ΡΠ΅Π³Π°ΡΠΎΡΠ° ΠΏΡΡΠ΅ΡΠ΅ΡΡΠ²ΠΈΠΉ β ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡ ΡΠΈΡΠ°ΡΠ΅Π»Π΅ΠΉ ΠΎΡ Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΡΠ΅ΠΎΡΠΈΠΈ Π΄ΠΎ ΡΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΎΠ½ΠΊΠΎΡΡΠ΅ΠΉ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Kubernetes. ΠΠ½Π°ΠΊΠΎΠΌΡΡΠ²ΠΎ Ρ ΡΠ°ΠΊΠΈΠΌΠΈ ΡΠ»ΡΡΠ°ΡΠΌΠΈ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΡΠΈΡΡΡΡ ΠΊΡΡΠ³ΠΎΠ·ΠΎΡ, Π½ΠΎ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°ΡΡ Π½Π΅ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
ΠΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΎΡΡ Π»ΠΈ Π²Π°ΠΌ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Β«Π·Π°ΡΡΡΠ΅Π²Π°Π»ΠΎΒ» Π½Π° ΠΌΠ΅ΡΡΠ΅, ΠΏΠ΅ΡΠ΅ΡΡΠ°Π²Π°Π»ΠΎ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π½Π° Π·Π°ΠΏΡΠΎΡΡ ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ (health check’ΠΈ) ΠΈ Π²Ρ Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΠ½ΡΡΡ ΠΏΡΠΈΡΠΈΠ½Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ? ΠΠ΄Π½ΠΎ ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ
ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠΉ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ Π»ΠΈΠΌΠΈΡΠΎΠΌ ΠΊΠ²ΠΎΡ Π½Π° ΡΠ΅ΡΡΡΡΡ CPU. Π Π½Π΅ΠΌ ΠΈ ΠΏΠΎΠΉΠ΄Π΅Ρ ΡΠ΅ΡΡ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅.
TL;DR:
ΠΡ Π½Π°ΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ ΠΎΡΠΊΠ°Π·Π°ΡΡΡΡ ΠΎΡ CPU limit’ΠΎΠ² Π² Kubernetes (ΠΈΠ»ΠΈ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΠΊΠ²ΠΎΡΡ CFS Π² Kubelet), Π΅ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²Π΅ΡΡΠΈΡ ΡΠ΄ΡΠ° Linux Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ CFS-ΠΊΠ²ΠΎΡ. Π ΡΠ΄ΡΠ΅
Π Omio Π²ΡΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ Kubernetes. ΠΡΠ΅ Π½Π°ΡΠΈ stateful- ΠΈ stateless-Π½Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π° Kubernetes (ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Google Kubernetes Engine). Π ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ ΠΏΠΎΠ»Π³ΠΎΠ΄Π° ΠΌΡ ΡΡΠ°Π»ΠΈ Π½Π°Π±Π»ΡΠ΄Π°ΡΡ ΡΠ°Π½Π΄ΠΎΠΌΠ½ΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΡΠΌΠ°ΠΆΠΈΠ²Π°Π½ΠΈΡ. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠ°ΡΡ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΡΡΠ°ΡΡ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π½Π° health check’ΠΈ, ΡΠ΅ΡΡΡΡ ΡΠ²ΡΠ·Ρ Ρ ΡΠ΅ΡΡΡ ΠΈ Ρ.ΠΏ. ΠΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»Π³ΠΎ ΡΡΠ°Π²ΠΈΠ»ΠΎ Π½Π°Ρ Π² ΡΡΠΏΠΈΠΊ, ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ, ΠΌΡ ΡΠ΅ΡΠΈΠ»ΠΈ Π·Π°Π½ΡΡΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ Π²ΠΏΠ»ΠΎΡΠ½ΡΡ.
ΠΡΠ°ΡΠΊΠΎΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ ΡΡΠ°ΡΡΠΈ:
- ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ»ΠΎΠ² ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°Ρ ΠΈ Kubernetes;
- ΠΠ°ΠΊ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ CPU request’Ρ ΠΈ limit’Ρ;
- ΠΠ°ΠΊ CPU limit ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΡΡΠ΅Π΄Π°Ρ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΠ΄ΡΠ°ΠΌΠΈ;
- ΠΠ°ΠΊ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΡΡΠΎΡΡΠ»ΠΈΠ½Π³ CPU;
- Π Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΈ Π½ΡΠ°Π½ΡΡ.
ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ»ΠΎΠ² ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°Ρ ΠΈ Kubernetes
Kubernetes, ΠΏΠΎ ΡΡΡΠΈ, ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ Π² ΠΌΠΈΡΠ΅ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ. ΠΠ³ΠΎ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ Π·Π°Π΄Π°ΡΠ° β ΠΎΡΠΊΠ΅ΡΡΡΠΎΠ²ΠΊΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ².
ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ
Π ΠΏΡΠΎΡΠ»ΠΎΠΌ Π½Π°ΠΌ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π°ΡΡΠ΅ΡΠ°ΠΊΡΡ Π²ΡΠΎΠ΄Π΅ Java JAR’ΠΎΠ²/WAR’ΠΎΠ², Python Egg’ΠΎΠ² ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ Π·Π°ΠΏΡΡΠΊΠ° Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ . ΠΠ΄Π½Π°ΠΊΠΎ, ΡΡΠΎΠ±Ρ Π·Π°ΡΡΠ°Π²ΠΈΡΡ ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ, ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ ΠΏΡΠΎΠ΄Π΅Π»ΡΠ²Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ: ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ (Java/Python), ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² Π½ΡΠΆΠ½ΡΡ ΠΌΠ΅ΡΡΠ°Ρ , ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ Ρ.Π΄. ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ ΡΠ΄Π΅Π»ΡΡΡ ΠΏΡΠΈΡΡΠ°Π»ΡΠ½ΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠΌΠΈ (ΡΡΠΎ ΡΠ°ΡΡΠΎ ΡΠ»ΡΠΆΠΈΠ»ΠΎ ΠΏΡΠΈΡΠΈΠ½ΠΎΠΉ ΡΠ°Π·Π΄ΠΎΡΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΌΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°ΠΌΠΈ).
ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ Π²ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ. Π’Π΅ΠΏΠ΅ΡΡ Π°ΡΡΠ΅ΡΠ°ΠΊΡΠΎΠΌ Π²ΡΡΡΡΠΏΠ°Π΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ°Π·. ΠΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ Π² Π²ΠΈΠ΄Π΅ ΡΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π½ΠΎ ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΡ ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ (Java/Python/β¦), Π° ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΠ°ΠΉΠ»Ρ/ΠΏΠ°ΠΊΠ΅ΡΡ, ΠΏΡΠ΅Π΄ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠ΅ ΠΈ Π³ΠΎΡΠΎΠ²ΡΠ΅ ΠΊ Π·Π°ΠΏΡΡΠΊΡ. ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°ΡΡ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΈ-ΠΏΠ΅ΡΠΎΡΠ½ΠΈΡΠ΅. Π£ Π½ΠΈΡ Π΅ΡΡΡ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ Π°Π΄Π°ΠΏΡΠ΅Ρ, ΡΠ²ΠΎΡ ΡΠ°ΠΉΠ»ΠΎΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΌ Π΄ΠΎΡΡΡΠΏΠΎΠΌ, ΡΠ²ΠΎΡ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², ΡΠ²ΠΎΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π½Π° CPU ΠΈ ΠΏΠ°ΠΌΡΡΡ ΠΈ Ρ. Π΄. ΠΡΠ΅ ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΎΡΠΎΠ±ΠΎΠΉ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΠ΄ΡΠ° Linux β namespaces (ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½).
Kubernetes
ΠΠ°ΠΊ Π±ΡΠ»ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΎ ΡΠ°Π½Π΅Π΅, Kubernetes β ΡΡΠΎ ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ². ΠΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ: Π²Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΠ΅ Π΅ΠΌΡ ΠΏΡΠ» ΠΌΠ°ΡΠΈΠ½, Π° Π·Π°ΡΠ΅ΠΌ Π³ΠΎΠ²ΠΎΡΠΈΡΠ΅: Β«ΠΠΉ, Kubernetes, Π·Π°ΠΏΡΡΡΠΈ-ΠΊΠ° Π΄Π΅ΡΡΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΠΌΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Ρ 2 ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°ΠΌΠΈ ΠΈ 3 ΠΠ± ΠΏΠ°ΠΌΡΡΠΈ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ, ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΠΉ ΠΈΡ Π² ΡΠ°Π±ΠΎΡΠ΅ΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ!Β». Kubernetes ΠΏΠΎΠ·Π°Π±ΠΎΡΠΈΡΡΡ ΠΎΠ±ΠΎ Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠΌ. ΠΠ½ Π½Π°ΠΉΠ΄Π΅Ρ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΠ΅ ΠΌΠΎΡΠ½ΠΎΡΡΠΈ, Π·Π°ΠΏΡΡΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΠΈ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΈΡ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ, Π²ΡΠΊΠ°ΡΠΈΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΡΠΌΠ΅Π½Π΅ Π²Π΅ΡΡΠΈΠΉ ΠΈ Ρ.Π΄. ΠΠΎ ΡΡΡΠΈ, Kubernetes ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π°Π±ΡΡΡΠ°Π³ΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΎΡ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠΉ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠ΅ΠΉ ΠΈ Π΄Π΅Π»Π°Π΅Ρ Π²ΡΠ΅ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌ ΠΏΡΠΈΠ³ΠΎΠ΄Π½ΡΠΌ Π΄Π»Ρ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ ΠΈ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
Kubernetes Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ²Π°ΡΠ΅Π»Ρ
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ request’Ρ ΠΈ limit’Ρ Π² Kubernetes
ΠΠΊΠ΅ΠΉ, ΠΌΡ ΡΠ°Π·ΠΎΠ±ΡΠ°Π»ΠΈΡΡ Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ ΠΈ Kubernetes. Π’Π°ΠΊΠΆΠ΅ ΠΌΡ Π·Π½Π°Π΅ΠΌ, ΡΡΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΠΌΠΎΠ³ΡΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅.
ΠΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ Ρ ΠΊΠΎΠΌΠΌΡΠ½Π°Π»ΡΠ½ΠΎΠΉ ΠΊΠ²Π°ΡΡΠΈΡΠΎΠΉ. ΠΠ΅ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΡΠΎΡΠ½ΠΎΠ΅ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ (ΠΌΠ°ΡΠΈΠ½Ρ/ΡΠ·Π»Ρ) ΠΈ ΡΠ΄Π°Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ Π°ΡΠ΅Π½Π΄Π°ΡΠΎΡΠ°ΠΌ (ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌ). Kubernetes Π²ΡΡΡΡΠΏΠ°Π΅Ρ Π² ΡΠΎΠ»ΠΈ ΡΠΈΡΠ»ΡΠΎΡΠ°. ΠΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π²ΠΎΠΏΡΠΎΡ, ΠΊΠ°ΠΊ ΡΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΊΠ²Π°ΡΡΠΈΡΠ°Π½ΡΠΎΠ² ΠΎΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ? Π§ΡΠΎ, Π΅ΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ , ΡΠΊΠ°ΠΆΠ΅ΠΌ, ΡΠ΅ΡΠΈΡ Π·Π°Π½ΡΡΡ Π²Π°Π½Π½ΡΡ ΠΊΠΎΠΌΠ½Π°ΡΡ Π½Π° ΠΏΠΎΠ»Π΄Π½Ρ?
ΠΠΌΠ΅Π½Π½ΠΎ Π·Π΄Π΅ΡΡ Π² ΠΈΠ³ΡΡ Π²ΡΡΡΠΏΠ°ΡΡ request’Ρ ΠΈ limit’Ρ. CPU Request Π½ΡΠΆΠ΅Π½ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΄Π»Ρ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠΎ Π½Π΅ΡΡΠΎ Π²ΡΠΎΠ΄Π΅ Β«ΡΠΏΠΈΡΠΊΠ° ΠΆΠ΅Π»Π°Π½ΠΈΠΉΒ» ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΠ½ Π΄Π»Ρ ΠΏΠΎΠ΄Π±ΠΎΡΠ° ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ ΡΠ·Π»Π°. Π ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ CPU Limit ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°Π²Π½ΠΈΡΡ Ρ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠΎΠΌ Π°ΡΠ΅Π½Π΄Ρ β ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΡ ΠΏΠΎΠ΄Π±Π΅ΡΠ΅ΠΌ ΡΠ·Π΅Π» Π΄Π»Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, ΡΠΎΡ Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΉΡΠΈ Π·Π° ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠ΅ ΠΏΡΠ΅Π΄Π΅Π»Ρ. Π Π²ΠΎΡ ΡΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°β¦
ΠΠ°ΠΊ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ request’Ρ ΠΈ limit’Ρ Π² Kubernetes
Kubernetes ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ Π² ΡΠ΄ΡΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΡΠΎΡΡΠ»ΠΈΠ½Π³Π° (ΠΏΡΠΎΠΏΡΡΠΊΠ° ΡΠ°ΠΊΡΠΎΠ²) Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ CPU limit’ΠΎΠ². ΠΡΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ Π»ΠΈΠΌΠΈΡ, Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΡΡΠΎΡΡΠ»ΠΈΠ½Π³ (Ρ.Π΅. ΠΎΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΌΠ΅Π½ΡΡΠ΅ ΡΠ°ΠΊΡΠΎΠ² CPU). Request’Ρ ΠΈ limit’Ρ Π΄Π»Ρ ΠΏΠ°ΠΌΡΡΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΠΈΠ½Π°ΡΠ΅, ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΡ Π»Π΅Π³ΡΠ΅ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΡΠ°ΡΡΡ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ° pod’Π°: Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΠΎΠ½ Β«OOMKilledΒ». Π‘ ΡΡΠΎΡΡΠ»ΠΈΠ½Π³ΠΎΠΌ CPU Π²ΡΠ΅ Π½Π΅ ΡΠ°ΠΊ ΠΏΡΠΎΡΡΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ K8s Π΄Π΅Π»Π°Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΡΡΠΈΠΊΠΈ ΠΏΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, Π° Π½Π΅ ΠΏΠΎ cgroups.
CPU Request
ΠΠ°ΠΊ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ CPU request
ΠΠ»Ρ ΠΏΡΠΎΡΡΠΎΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΎΡΠ΅ΡΡ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΠ°ΡΠΈΠ½Ρ Ρ 4-ΡΠ΄Π΅ΡΠ½ΡΠΌ CPU.
K8s ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΡ
Π³ΡΡΠΏΠΏ (cgroups) Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΠ΅ΡΡΡΡΠΎΠ² (ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°). ΠΠ»Ρ Π½Π΅Π³ΠΎ Π΄ΠΎΡΡΡΠΏΠ½Π° ΠΈΠ΅ΡΠ°ΡΡ
ΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ: ΠΏΠΎΡΠΎΠΌΠΎΠΊ Π½Π°ΡΠ»Π΅Π΄ΡΠ΅Ρ limit’Ρ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΉ Π³ΡΡΠΏΠΏΡ. ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Ρ
ΡΠ°Π½ΡΡΡΡ Π² Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ (/sys/fs/cgroup
). Π ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° ΡΡΠΎ /sys/fs/cgroup/cpu,cpuacct/*
.
K8s ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ°ΠΉΠ» cpu.share
Π΄Π»Ρ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°. Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΊΠΎΡΠ½Π΅Π²Π°Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ Π³ΡΡΠΏΠΏΠ° ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ 4096 Π΄ΠΎΠ»Π΅ΠΉ ΡΠ΅ΡΡΡΡΠΎΠ² CPU β 100% Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΉ ΠΌΠΎΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° (1 ΡΠ΄ΡΠΎ = 1024; ΡΡΠΎ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅). ΠΠΎΡΠ½Π΅Π²Π°Ρ Π³ΡΡΠΏΠΏΠ° ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠ΅ΡΡΡΡΡ ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π΄ΠΎΠ»Π΅ΠΉ ΠΏΠΎΡΠΎΠΌΠΊΠΎΠ², ΠΏΡΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ
Π² cpu.share
, Π° ΡΠ΅, Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΠΎΡΡΡΠΏΠ°ΡΡ ΡΠΎ ΡΠ²ΠΎΠΈΠΌΠΈ ΠΏΠΎΡΠΎΠΌΠΊΠ°ΠΌΠΈ, ΠΈ Ρ.Π΄. Π ΡΠΈΠΏΠΈΡΠ½ΠΎΠΌ ΡΠ·Π»Π΅ Kubernetes ΠΊΠΎΡΠ½Π΅Π²Π°Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ Π³ΡΡΠΏΠΏΠ° ΠΈΠΌΠ΅Π΅Ρ ΡΡΠΈ ΠΏΠΎΡΠΎΠΌΠΊΠ°: system.slice
, user.slice
ΠΈ kubepods
. ΠΠ²Π΅ ΠΏΠ΅ΡΠ²ΡΡ
ΠΏΠΎΠ΄Π³ΡΡΠΏΠΏΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π°ΠΆΠ½ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΌΠΈ Π½Π°Π³ΡΡΠ·ΠΊΠ°ΠΌΠΈ ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ Π²Π½Π΅ K8s. ΠΠΎΡΠ»Π΅Π΄Π½ΡΡ β kubepods
β ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Kubernetes’ΠΎΠΌ Π΄Π»Ρ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρ pod’Π°ΠΌΠΈ.
ΠΠ° ΡΡ Π΅ΠΌΠ΅ Π²ΡΡΠ΅ Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΠΏΠ΅ΡΠ²Π°Ρ ΠΈ Π²ΡΠΎΡΠ°Ρ ΠΏΠΎΠ΄Π³ΡΡΠΏΠΏΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΠΏΠΎ 1024 Π΄ΠΎΠ»ΠΈ, ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΏΠΎΠ΄Π³ΡΡΠΏΠΏΠ΅ kuberpod Π²ΡΠ΄Π΅Π»Π΅Π½ΠΎ 4096 Π΄ΠΎΠ»Π΅ΠΉ. ΠΠ°ΠΊ ΡΠ°ΠΊΠΎΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ: Π²Π΅Π΄Ρ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ Π³ΡΡΠΏΠΏΠ΅ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π²ΡΠ΅Π³ΠΎ 4096 Π΄ΠΎΠ»Π΅ΠΉ, Π° ΡΡΠΌΠΌΠ° Π΄ΠΎΠ»Π΅ΠΉ Π΅Π΅ ΠΏΠΎΡΠΎΠΌΠΊΠΎΠ² Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ ΡΡΠΎ ΡΠΈΡΠ»ΠΎ (6144)? ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΌΡΡΠ», ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ Linux (CFS) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π΅Π³ΠΎ Π΄Π»Ρ ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ² CPU. Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠ΅ΡΠ²ΡΠ΅ Π΄Π²Π΅ Π³ΡΡΠΏΠΏΡ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΏΠΎ 680 ΡΠ΅Π°Π»ΡΠ½ΡΡ Π΄ΠΎΠ»Π΅ΠΉ (16,6% ΠΎΡ 4096), Π° kubepod ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΎΡΡΠ°Π²ΡΠΈΠ΅ΡΡ 2736 Π΄ΠΎΠ»Π΅ΠΉ. Π ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΎΡΡΠΎΡ ΠΏΠ΅ΡΠ²ΡΠ΅ Π΄Π²Π΅ Π³ΡΡΠΏΠΏΡ Π½Π΅ Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΠ΅ΡΡΡΡΡ.
Π ΡΡΠ°ΡΡΡΡ, Π² ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠ΅ Π΅ΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΠΎΡΠ΅ΡΠΈ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΠ΅ΡΡΡΡΠΎΠ² CPU. ΠΠ½ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ Β«ΠΏΡΠΎΡΡΠ°ΠΈΠ²Π°ΡΡΠΈΠ΅Β» ΠΌΠΎΡΠ½ΠΎΡΡΠΈ Π² Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΉ ΠΏΡΠ», ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠ½ΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΠΏΠΎ Π³ΡΡΠΏΠΏΠ°ΠΌ, Π½ΡΠΆΠ΄Π°ΡΡΠΈΠΌΡΡ Π² Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΌΠΎΡΠ½ΠΎΡΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° (ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠ°ΡΡΠΈΡΠΌΠΈ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΠΎΡΠ΅ΡΡ ΠΎΡ ΠΎΠΊΡΡΠ³Π»Π΅Π½ΠΈΡ). ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΈ ΠΊΠΎ Π²ΡΠ΅ΠΌ ΠΏΠΎΡΠΎΠΌΠΊΠ°ΠΌ ΠΏΠΎΡΠΎΠΌΠΊΠΎΠ².
ΠΡΠΎΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΠΏΡΠ°Π²Π΅Π΄Π»ΠΈΠ²ΠΎΠ΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΡΠ½ΠΎΡΡΠ΅ΠΉ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° ΠΈ ΡΠ»Π΅Π΄ΠΈΡ Π·Π° ΡΠ΅ΠΌ, ΡΡΠΎΠ±Ρ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΎΡΠ΅ΡΡ Π½Π΅ Β«Π²ΠΎΡΠΎΠ²Π°Π»Β» ΡΠ΅ΡΡΡΡΡ Ρ Π΄ΡΡΠ³ΠΈΡ .
CPU Limit
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ limit’ΠΎΠ² ΠΈ request’ΠΎΠ² Π² K8s Π²ΡΠ³Π»ΡΠ΄ΡΡ ΠΏΠΎΡ ΠΎΠΆΠ΅, ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠ°ΡΠ΄ΠΈΠ½Π°Π»ΡΠ½ΠΎ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ: ΡΡΠΎ ΡΠ°ΠΌΠ°Ρ Π²Π²ΠΎΠ΄ΡΡΠ°Ρ Π² Π·Π°Π±Π»ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΈ Π½Π°ΠΈΠΌΠ΅Π½Π΅Π΅ Π·Π°Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΡΠ°ΡΡΡ.
K8s Π·Π°Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ cfs_period_us
ΠΈ cfs_quota_us
Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ cgroup (ΡΠ°ΠΌ ΠΆΠ΅ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ ΡΠ°ΠΉΠ» cpu.share
).
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ cpu.share
, ΠΊΠ²ΠΎΡΠ° ΠΎΡΠ½ΠΎΠ²Π°Π½Π° Π½Π° ΠΏΠ΅ΡΠΈΠΎΠ΄Π΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π° Π½Π΅ Π½Π° Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΉ ΠΌΠΎΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°. cfs_period_us
Π·Π°Π΄Π°Π΅Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠΈΠΎΠ΄Π° (ΡΠΏΠΎΡ
ΠΈ) β ΡΡΠΎ Π²ΡΠ΅Π³Π΄Π° 100000 ΠΌΠΊΡ (100 ΠΌΡ). Π K8s Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½Π° ΠΏΠΎΠΊΠ° Π΄ΠΎΡΡΡΠΏΠ½Π° ΡΠΎΠ»ΡΠΊΠΎ Π² Π°Π»ΡΡΠ°-Π²Π΅ΡΡΠΈΠΈ. ΠΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΏΠΎΡ
Ρ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΡΡ
ΠΊΠ²ΠΎΡ. ΠΡΠΎΡΠΎΠΉ ΡΠ°ΠΉΠ», cfs_quota_us
, Π·Π°Π΄Π°Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ (ΠΊΠ²ΠΎΡΡ) Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠΏΠΎΡ
Π΅. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΎΠ½Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π² ΠΌΠΈΠΊΡΠΎΡΠ΅ΠΊΡΠ½Π΄Π°Ρ
. ΠΠ²ΠΎΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π²ΡΡΠ°ΡΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠΏΠΎΡ
ΠΈ; Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ 100 ΠΌΡ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΄Π²Π° ΡΡΠ΅Π½Π°ΡΠΈΡ Π½Π° 16-ΡΠ΄Π΅ΡΠ½ΡΡ ΠΌΠ°ΡΠΈΠ½Π°Ρ (Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠΉ ΡΠΈΠΏ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠ² Ρ Π½Π°Ρ Π² Omio):
Π‘ΡΠ΅Π½Π°ΡΠΈΠΉ 1: 2 ΠΏΠΎΡΠΎΠΊΠ° ΠΈ Π»ΠΈΠΌΠΈΡ Π² 200 ΠΌΡ. ΠΠ΅Π· ΡΡΠΎΡΡΠ»ΠΈΠ½Π³Π°
Π‘ΡΠ΅Π½Π°ΡΠΈΠΉ 2: 10 ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΈ Π»ΠΈΠΌΠΈΡ Π² 200 ΠΌΡ. Π’ΡΠΎΡΡΠ»ΠΈΠ½Π³ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ 20 ΠΌΡ, Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ΅ΡΡΡΡΠ°ΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΡΡΡ Π΅ΡΠ΅ ΡΠ΅ΡΠ΅Π· 80 ΠΌΡ
ΠΠΎΠΏΡΡΡΠΈΠΌ, Π²Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈ CPU limit Π½Π° 2 ΡΠ΄ΡΠ°; Kubernetes ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Π΅Ρ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² 200 ΠΌΡ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌ 200 ΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π±Π΅Π· ΡΡΠΎΡΡΠ»ΠΈΠ½Π³Π°.
Π Π·Π΄Π΅ΡΡ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΡΠ°ΠΌΠΎΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ΅. ΠΠ°ΠΊ Π±ΡΠ»ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΎ Π²ΡΡΠ΅, Π΄ΠΎΡΡΡΠΏΠ½Π°Ρ ΠΊΠ²ΠΎΡΠ° ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ 200 ΠΌΡ. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄Π΅ΡΡΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π½Π° 12-ΡΠ΄Π΅ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ (ΡΠΌ. ΠΈΠ»Π»ΡΡΡΡΠ°ΡΠΈΡ ΠΊ ΡΡΠ΅Π½Π°ΡΠΈΡ 2), ΠΏΠΎΠΊΠ° Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ pod’Ρ ΠΏΡΠΎΡΡΠ°ΠΈΠ²Π°ΡΡ, ΠΊΠ²ΠΎΡΠ° Π±ΡΠ΄Π΅Ρ ΠΈΡΡΠ΅ΡΠΏΠ°Π½Π° Π²ΡΠ΅Π³ΠΎ ΡΠ΅ΡΠ΅Π· 20 ΠΌΡ (ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ 10 * 20 ΠΌΡ = 200 ΠΌΡ), ΠΈ Π²ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ pod’Π° Β«Π·Π°Π²ΠΈΡΠ½ΡΡΒ» (throttle) Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ 80 ΠΌΡ. Π£ΡΡΠ³ΡΠ±Π»ΡΠ΅Ρ ΡΠΈΡΡΠ°ΡΠΈΡ ΡΠΆΠ΅ ΡΠΏΠΎΠΌΡΠ½ΡΡΡΠΉ
ΠΠ°ΠΊ ΠΎΡΠ΅Π½ΠΈΡΡ ΡΡΠΎΡΡΠ»ΠΈΠ½Π³ Π² pod’Π°Ρ ?
ΠΡΠΎΡΡΠΎ Π²ΠΎΠΉΠ΄ΠΈΡΠ΅ Π² pod ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ cat /sys/fs/cgroup/cpu/cpu.stat
.
-
nr_periods
β ΠΎΠ±ΡΠ΅Π΅ ΡΠΈΡΠ»ΠΎ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΎΠ² ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠ°; -
nr_throttled
β ΡΠΈΡΠ»ΠΎ throttled-ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΎΠ² Π² ΡΠΎΡΡΠ°Π²Π΅nr_periods
; -
throttled_time
β ΡΠΎΠ²ΠΎΠΊΡΠΏΠ½ΠΎΠ΅ throttled-Π²ΡΠ΅ΠΌΡ Π² Π½Π°Π½ΠΎΡΠ΅ΠΊΡΠ½Π΄Π°Ρ .
Π§ΡΠΎ ΠΆΠ΅ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ?
Π ΠΈΡΠΎΠ³Π΅ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π²ΡΡΠΎΠΊΠΈΠΉ ΡΡΠΎΡΡΠ»ΠΈΠ½Π³ Π²ΠΎ Π²ΡΠ΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ . ΠΠ½ΠΎΠ³Π΄Π° ΠΎΠ½ Π² ΠΏΠΎΠ»ΡΠΎΡΠ° ΡΠ°Π·Π° ΡΠΈΠ»ΡΠ½Π΅Π΅ ΡΠ°ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ!
ΠΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ β ΡΠ±ΠΎΡΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡΠΈ (readiness), Π·Π°Π²ΠΈΡΠ°Π½ΠΈΡΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ², ΡΠ°Π·ΡΡΠ²Π°ΠΌ ΡΠ΅ΡΠ΅Π²ΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ, ΡΠ°ΠΉΠΌΠ°ΡΡΠ°ΠΌ Π²Π½ΡΡΡΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ½ΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ². Π ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΡΡΠ΅ΡΠ΅ ΡΡΠΎ Π²ΡΡΠ°ΠΆΠ°Π΅ΡΡΡ Π² ΡΠ²Π΅Π»ΠΈΡΠ΅Π½Π½ΠΎΠΉ Π·Π°Π΄Π΅ΡΠΆΠΊΠ΅ ΠΈ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΎΡΠΈΠ±ΠΎΠΊ.
Π Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡ
Π’ΡΡ Π²ΡΠ΅ ΠΏΡΠΎΡΡΠΎ. ΠΡ ΠΎΡΠΊΠ°Π·Π°Π»ΠΈΡΡ ΠΎΡ limit’ΠΎΠ² CPU ΠΈ Π·Π°Π½ΡΠ»ΠΈΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΠ΄ΡΠ° ΠΠ‘ Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ°Ρ Π½Π° ΡΠ°ΠΌΡΡ ΡΠ²Π΅ΠΆΡΡ Π²Π΅ΡΡΠΈΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π±Π°Π³ Π±ΡΠ» ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½. Π§ΠΈΡΠ»ΠΎ ΠΎΡΠΈΠ±ΠΎΠΊ (HTTP 5xx) Π² Π½Π°ΡΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠ°Ρ ΡΡΠ°Π·Ρ ΠΆΠ΅ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΏΠ°Π»ΠΎ:
ΠΡΠΈΠ±ΠΊΠΈ HTTP 5xx
ΠΡΠΈΠ±ΠΊΠΈ HTTP 5xx ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π°ΠΆΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ°
ΠΡΠ΅ΠΌΡ ΠΎΡΠΊΠ»ΠΈΠΊΠ° p95
ΠΠ°Π΄Π΅ΡΠΆΠΊΠ° Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π°ΠΆΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ°, 95-Ρ ΠΏΡΠΎΡΠ΅Π½ΡΠΈΠ»Ρ
Π Π°ΡΡ ΠΎΠ΄Ρ Π½Π° ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΡ
Π§ΠΈΡΠ»ΠΎ ΠΏΠΎΡΡΠ°ΡΠ΅Π½Π½ΡΡ
ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎ-ΡΠ°ΡΠΎΠ²
Π ΡΠ΅ΠΌ ΠΏΠΎΠ΄Π²ΠΎΡ ?
ΠΠ°ΠΊ Π±ΡΠ»ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΎ Π² Π½Π°ΡΠ°Π»Π΅ ΡΡΠ°ΡΡΠΈ:
ΠΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ Ρ ΠΊΠΎΠΌΠΌΡΠ½Π°Π»ΡΠ½ΠΎΠΉ ΠΊΠ²Π°ΡΡΠΈΡΠΎΠΉβ¦ Kubernetes Π²ΡΡΡΡΠΏΠ°Π΅Ρ Π² ΡΠΎΠ»ΠΈ ΡΠΈΡΠ»ΡΠΎΡΠ°. ΠΠΎ ΠΊΠ°ΠΊ ΡΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΊΠ²Π°ΡΡΠΈΡΠ°Π½ΡΠΎΠ² ΠΎΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ? Π§ΡΠΎ, Π΅ΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ , ΡΠΊΠ°ΠΆΠ΅ΠΌ, ΡΠ΅ΡΠΈΡ Π·Π°Π½ΡΡΡ Π²Π°Π½Π½ΡΡ ΠΊΠΎΠΌΠ½Π°ΡΡ Π½Π° ΠΏΠΎΠ»Π΄Π½Ρ?
ΠΠΎΡ Π² ΡΠ΅ΠΌ ΠΏΠΎΠ΄Π²ΠΎΡ
. ΠΠ΄ΠΈΠ½ Π½Π΅ΡΠ°Π΄ΠΈΠ²ΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ³Π»ΠΎΡΠΈΡΡ Π²ΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ ΡΠ΅ΡΡΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° Π½Π° ΠΌΠ°ΡΠΈΠ½Π΅. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ ΡΠΎΠ»ΠΊΠΎΠ²ΡΠΉ ΡΡΠ΅ΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄ΠΎΠ»ΠΆΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π½Π°ΡΡΡΠΎΠ΅Π½Ρ JVM, Go, Node VM), ΡΠΎΠ³Π΄Π° ΡΡΠΎ Π½Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°: ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΡΠ°ΠΊΠΈΡ
ΡΡΠ»ΠΎΠ²ΠΈΡΡ
Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΠΎ Π΅ΡΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ ΠΏΠ»ΠΎΡ
ΠΎ ΠΈΠ»ΠΈ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ (FROM java:latest
), ΡΠΈΡΡΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΉΡΠΈ ΠΈΠ·-ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ. Π£ Π½Π°Ρ Π² Omio ΠΈΠΌΠ΅ΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π±Π°Π·ΠΎΠ²ΡΠ΅ Dockerfiles Ρ Π°Π΄Π΅ΠΊΠ²Π°ΡΠ½ΡΠΌΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ ΡΡΠ΅ΠΊΠ° ΠΎΡΠ½ΠΎΠ²Π½ΡΡ
ΡΠ·ΡΠΊΠΎΠ², ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π»ΠΎ.
ΠΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ Π½Π°Π±Π»ΡΠ΄Π°ΡΡ Π·Π° ΠΌΠ΅ΡΡΠΈΠΊΠ°ΠΌΠΈ
Π‘ΡΡΠ»ΠΊΠΈ
Π’Π°ΠΊΠΎΠ²Π° Π½Π°ΡΠ° ΠΈΡΡΠΎΡΠΈΡ. Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ ΡΠΈΠ»ΡΠ½ΠΎ ΠΏΠΎΠΌΠΎΠ³Π»ΠΈ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ:
-
kernel.org β CFS Scheduler ; -
kernel.org β CFS Bandwidth Control ; -
Understanding Linux Container Scheduling ; -
Everything You Need to Know about Linux Containers, Part I: Linux Control Groups and Process Isolation ; -
Kubernetes Failure Stories β ΠΈΡΠΈΡΠ΅ Β«cpu throttlingΒ».
ΠΡΡΠ΅ΡΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ Kubernetes:
-
#51135: Avoid setting CPU limits for Guaranteed pods ; -
#67577: CFS quotas can lead to unnecessary throttling ; -
Overly aggressive CFS .
Π‘ΡΠ°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡ Π»ΠΈ Π²Ρ Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ Π² ΡΠ²ΠΎΠ΅ΠΉ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΠΈΠ»ΠΈ ΠΎΠ±Π»Π°Π΄Π°Π΅ΡΠ΅ ΠΎΠΏΡΡΠΎΠΌ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠΌ Ρ ΡΡΠΎΡΡΠ»ΠΈΠ½Π³ΠΎΠΌ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ production-ΡΡΠ΅Π΄Π°Ρ ? ΠΠΎΠ΄Π΅Π»ΠΈΡΠ΅ΡΡ ΡΠ²ΠΎΠ΅ΠΉ ΠΈΡΡΠΎΡΠΈΠ΅ΠΉ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ !
P.S. ΠΎΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΠΈΠΊΠ°
Π§ΠΈΡΠ°ΠΉΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π² Π½Π°ΡΠ΅ΠΌ Π±Π»ΠΎΠ³Π΅:
- Β«
ΠΠ²ΡΠΎΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ Π² Kubernetes (ΠΎΠ±Π·ΠΎΡ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ Π΄ΠΎΠΊΠ»Π°Π΄Π°) Β»; - Β«
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ CPU Manager Π² Kubernetes Β»; - Β«
Π§ΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² Kubernetes ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ kubectl run? Π§Π°ΡΡΡ 2 Β».
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com