27 Π°ΠΏΡΠ΅Π»Ρ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ
ΠΠΎ ΡΡΠ°Π΄ΠΈΡΠΈΠΈ ΡΠ°Π΄Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ
Π Π°Π·Π±Π΅ΡΡΠΌ ΡΠ΅ΠΌΡ Π΄ΠΎΠΊΠ»Π°Π΄Π° ΠΏΠΎ ΡΠ»ΠΎΠ²Π°ΠΌ ΠΈ Π½Π°ΡΠ½ΡΠΌ Ρ ΠΊΠΎΠ½ΡΠ°.
Kubernetes
ΠΡΡΡΡ Ρ Π½Π°Ρ Π½Π° Ρ ΠΎΡΡΠ΅ Π΅ΡΡΡ Docker-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ. ΠΠ°ΡΠ΅ΠΌ? ΠΠ»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΠΌΠΎΡΡΠΈ ΠΈ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠΎΡΡΠΎ ΠΈ Ρ ΠΎΡΠΎΡΠΎ Π΄Π΅ΠΏΠ»ΠΎΠΉ, CI/CD. Π’Π°ΠΊΠΈΡ ΠΌΠ°ΡΠΈΠ½ Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ Ρ Π½Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎ.
Π§ΡΠΎ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π΄Π°ΡΡ Kubernetes?
- ΠΡ ΠΏΠ΅ΡΠ΅ΡΡΠ°ΡΠΌ Π΄ΡΠΌΠ°ΡΡ ΠΏΡΠΎ ΡΡΠΈ ΠΌΠ°ΡΠΈΠ½Ρ ΠΈ Π½Π°ΡΠΈΠ½Π°Π΅ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Β«ΠΎΠ±Π»Π°ΠΊΠΎΠΌΒ», ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠΌ ΠΈΠ· ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΠΈΠ»ΠΈ pod’ΠΎΠ² (Π³ΡΡΠΏΠΏ ΠΈΠ· ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ²).
- ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΠΌΡ Π½Π΅ Π΄ΡΠΌΠ°Π΅ΠΌ Π΄Π°ΠΆΠ΅ ΠΏΡΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ pod’Ρ, Π° ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ Π΅ΡΡ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ Π³ΡΡΠΏΠΏΠ°ΠΌΠΈ. Π’Π°ΠΊΠΈΠ΅ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠ΅ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π½Π°ΠΌ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ Π΅ΡΡΡ ΡΠ°Π±Π»ΠΎΠ½ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π½Π΅ΠΊΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ, Π° Π²ΠΎΡ Π½ΡΠΆΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² Π΄Π»Ρ Π΅Ρ Π·Π°ΠΏΡΡΠΊΠ°. ΠΡΠ»ΠΈ ΠΌΡ Π²ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠΈ ΠΏΠΎΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΠ°Π±Π»ΠΎΠ½ β ΠΏΠΎΠΌΠ΅Π½ΡΡΡΡΡ ΠΈ Π²ΡΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ.
- Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ API ΠΌΡ Π²ΠΌΠ΅ΡΡΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌ Β«ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΌΠΈΡΠ°Β» (Π² YAML), ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Kubernetes’ΠΎΠΌ. Π ΡΠ½ΠΎΠ²Π°: ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΌΠ΅Π½ΡΡΡΡΡ ΠΈ Π΅Π³ΠΎ ΡΠ΅Π°Π»ΡΠ½ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅.
Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ
CPU
ΠΡΡΡΡ ΠΌΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ nginx, php-fpm ΠΈ mysql. Π£ ΡΡΠΈΡ ΡΠ»ΡΠΆΠ± Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π±ΡΠ΄Π΅Ρ Π΅ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ΅Π±ΡΠ΅Ρ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ΅ΡΡΡΡΠΎΠ²:
(ΡΠΈΡΠ»Π° Π½Π° ΡΠ»Π°ΠΉΠ΄Π΅ β Β«ΠΏΠΎΠΏΡΠ³Π°ΠΈΒ», Π°Π±ΡΡΡΠ°ΠΊΡΠ½Π°Ρ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π² Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΌΠΎΡΠ½ΠΎΡΡΡΡ
)
Π§ΡΠΎΠ±Ρ Ρ ΡΡΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ, Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΏΠΎ Π³ΡΡΠΏΠΏΠ°ΠΌ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ nginx Π² ΠΎΠ΄Π½Ρ Π³ΡΡΠΏΠΏΡ Β«nginxΒ»). ΠΡΠΎΡΡΠΎΠΉ ΠΈ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ β ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΠΊΠ°ΠΆΠ΄ΡΡ Π³ΡΡΠΏΠΏΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ:
Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ ΠΆΠ΅ ΡΠ°ΠΊΠΎΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ (Π² Linux). ΠΡ
ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ°Π»ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΡΡΠΌ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌ Π² ΡΠ΄ΡΠ΅, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠΆΠ΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π°Π²Π½ΠΎ:
Π ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Π΄ΠΎΠΊΠ»Π°Π΄Π° Π½Π°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ cgroups, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΠ΅ Π³ΡΡΠΏΠΏΡ β ΡΠ° ΡΠ°ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ
Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² (Docker’Π° ΠΈ Ρ.ΠΏ.), ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ. ΠΡΠΎΡΠ΅ΡΡΡ, ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ½Π½ΡΠ΅ Π² Π³ΡΡΠΏΠΏΡ, ΠΊΠ°ΠΊ ΠΌΡ ΡΠΎΠ³ΠΎ Ρ
ΠΎΡΠ΅Π»ΠΈ, β ΡΡΠΎ ΠΈ Π΅ΡΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΠ΅ Π³ΡΡΠΏΠΏΡ.
ΠΠ΅ΡΠ½ΡΠΌΡΡ ΠΊ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡΠΌ Π² CPU Ρ ΡΡΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², Π° ΡΠ΅ΠΏΠ΅ΡΡ ΡΠΆΠ΅ β Ρ Π³ΡΡΠΏΠΏ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²:
(ΠΏΠΎΠ²ΡΠΎΡΡΡΡ, ΡΡΠΎ Π²ΡΠ΅ ΡΠΈΡΠ»Π° β Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠΈ Π² ΡΠ΅ΡΡΡΡΠ°Ρ
)
ΠΡΠΈ ΡΡΠΎΠΌ Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ CPU Π΅ΡΡΡ Π½Π΅ΠΊΠΈΠΉ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ ΡΠ΅ΡΡΡΡ (Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΡΠΎ 1000), ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ Ρ Π²Π°ΡΠ°ΡΡ (ΡΡΠΌΠΌΠ° ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠ΅ΠΉ Π²ΡΠ΅Ρ Π³ΡΡΠΏΠΏ β 150+850+460=1460). Π§ΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ Π² ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅?
Π―Π΄ΡΠΎ Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΡΠ°Π·Π΄Π°Π²Π°ΡΡ ΡΠ΅ΡΡΡΡΡ ΠΈ Π΄Π΅Π»Π°Π΅Ρ ΡΡΠΎ Β«ΡΠ΅ΡΡΠ½ΠΎΒ», Π²ΡΠ΄Π°Π²Π°Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³ΡΡΠΏΠΏΠ΅. ΠΠΎ Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈΡ Π±ΠΎΠ»ΡΡΠ΅ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ (333>150), ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΠ·Π»ΠΈΡΠ΅ΠΊ (333-150=183) ΠΎΡΡΠ°ΡΡΡΡ Π² ΡΠ΅Π·Π΅ΡΠ²Π΅, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠΆΠ΅ ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ:
Π ΠΈΡΠΎΠ³Π΅: ΠΏΠ΅ΡΠ²ΠΎΠΌΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ Ρ
Π²Π°ΡΠΈΠ»ΠΎ ΡΠ΅ΡΡΡΡΠΎΠ², Π²ΡΠΎΡΠΎΠΌΡ β ΡΠΈΠ»ΡΠ½ΠΎ Π½Π΅ Ρ
Π²Π°ΡΠΈΠ»ΠΎ, ΡΡΠ΅ΡΡΠ΅ΠΌΡ β Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ Ρ
Π²Π°ΡΠΈΠ»ΠΎ. Π’Π°ΠΊΠΎΠ² ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Β«ΡΠ΅ΡΡΠ½ΠΎΠ³ΠΎΒ» ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠ° Π² Linux β
ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΠ»ΡΡΠ°ΠΉ Π½Π΅Ρ
Π²Π°ΡΠΊΠΈ ΡΠ΅ΡΡΡΡΠΎΠ² Ρ Π²ΡΠΎΡΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° (php-fpm). ΠΡΠ΅ ΡΠ΅ΡΡΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ ΠΏΠΎΡΠΎΠ²Π½Ρ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅, master-ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ
ΠΎΡΠΎΡΠΎ, Π° Π²ΡΠ΅ worker’Ρ ΡΠΎΡΠΌΠΎΠ·ΡΡ, ΠΏΠΎΠ»ΡΡΠΈΠ² ΠΌΠ΅Π½Π΅Π΅ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ ΠΎΡ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ:
Π’Π°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ CFS. ΠΠ΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Π½Π°Π·Π½Π°ΡΠ°Π΅ΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌ, Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ Π±ΡΠ΄Π΅ΠΌ Π½Π°Π·Π²Π°ΡΡ request’Π°ΠΌΠΈ. ΠΠΎΡΠ΅ΠΌΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊ β ΡΠΌ. Π΄Π°Π»ΡΡΠ΅.
ΠΠ·Π³Π»ΡΠ½Π΅ΠΌ Π½Π° Π²ΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ Ρ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ. ΠΠ°ΠΊ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, Π²ΡΠ΅ Π΄ΠΎΡΠΎΠ³ΠΈ Π²Π΅Π΄ΡΡ Π² Π ΠΈΠΌ, Π° Π² ΡΠ»ΡΡΠ°Π΅ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° β Π² CPU. CPU ΠΎΠ΄ΠΈΠ½, Π·Π°Π΄Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎ β Π½ΡΠΆΠ΅Π½ ΡΠ²Π΅ΡΠΎΡΠΎΡ. Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ β Β«ΡΠ²Π΅ΡΠΎΡΠΎΡΠ½ΡΠΉΒ»: Π²ΡΠ΄Π°Π»ΠΈ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΡ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ CPU, Π·Π°ΡΠ΅ΠΌ β ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ ΠΈ Ρ.ΠΏ.
ΠΡΠΎΡ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΆΡΡΡΠΊΠΈΠΌ ΠΊΠ²ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ (hard limiting). ΠΠ°ΠΏΠΎΠΌΠ½ΠΈΠΌ Π΅Π³ΠΎ ΠΏΡΠΎΡΡΠΎ ΠΊΠ°ΠΊ Π»ΠΈΠΌΠΈΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΠ»ΠΈ ΡΠ°Π·Π΄Π°ΡΡ Π²ΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ Π»ΠΈΠΌΠΈΡΡ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°: mysql Π΅Ρ
Π°Π» ΠΏΠΎ Π΄ΠΎΡΠΎΠ³Π΅ ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ Π΅Π³ΠΎ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡ Π² CPU Π·Π°ΠΊΠΎΠ½ΡΠΈΠ»Π°ΡΡ, Π½ΠΎ Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ Π²ΡΠ½ΡΠΆΠ΄Π΅Π½Ρ ΠΆΠ΄Π°ΡΡ, ΠΏΠΎΠΊΠ° CPU ΠΏΡΠΎΡΡΠ°ΠΈΠ²Π°Π΅Ρ.
ΠΠ΅ΡΠ½ΡΠΌΡΡ ΠΊ ΡΠ΄ΡΡ Linux ΠΈ Π΅Π³ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ CPU β ΠΎΠ±ΡΠ°Ρ ΠΊΠ°ΡΡΠΈΠ½Π° ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ:
Π£ cgroup Π΅ΡΡΡ Π΄Π²Π΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ β ΠΏΠΎ ΡΡΡΠΈ ΡΡΠΎ Π΄Π²Π΅ ΠΏΡΠΎΡΡΡΠ΅ Β«ΠΊΡΡΡΠΈΠ»ΠΊΠΈΒ», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ:
- Π²Π΅Ρ Π΄Π»Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° (request’Ρ) β ΡΡΠΎ shares;
- ΠΏΡΠΎΡΠ΅Π½Ρ ΠΎΡ ΠΎΠ±ΡΠ΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ CPU Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Π½Π°Π΄ Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° (Π»ΠΈΠΌΠΈΡΡ) β ΡΡΠΎ quota.
Π ΡΡΠΌ ΠΌΠ΅ΡΠΈΡΡ CPU?
ΠΡΡΡ ΡΠ°Π·Π½ΡΠ΅ ΠΏΡΡΠΈ:
- Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΏΠΎΠΏΡΠ³Π°ΠΈ, Π½ΠΈΠΊΡΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ β Π½ΡΠΆΠ½ΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· Π΄ΠΎΠ³ΠΎΠ²Π°ΡΠΈΠ²Π°ΡΡΡΡ.
- ΠΡΠΎΡΠ΅Π½ΡΡ ΠΏΠΎΠ½ΡΡΠ½Π΅Π΅, Π½ΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½Ρ: 50% ΠΎΡ ΡΠ΅ΡΠ²Π΅ΡΠ° Ρ 4 ΡΠ΄ΡΠ°ΠΌΠΈ ΠΈ Ρ 20 ΡΠ΄ΡΠ°ΠΌΠΈ Ββ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΡΠ°Π·Π½ΡΠ΅ Π²Π΅ΡΠΈ.
- ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΆΠ΅ ΡΠΏΠΎΠΌΡΠ½ΡΡΡΠ΅ Π²Π΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π½Π°Π΅Ρ Linux, Π½ΠΎ ΠΎΠ½ΠΈ ΡΠΎΠΆΠ΅ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½Ρ.
- Π‘Π°ΠΌΡΠΉ Π°Π΄Π΅ΠΊΠ²Π°ΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ β ΠΌΠ΅ΡΠΈΡΡ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡΡΡ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ . Π’.Π΅. Π² ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ ΡΠ΅ΠΊΡΠ½Π΄Π°ΠΌ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ: Π²ΡΠ΄Π°Π»ΠΈ 1 ΡΠ΅ΠΊΡΠ½Π΄Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π² 1 ΡΠ΅Π°Π»ΡΠ½ΡΡ ΡΠ΅ΠΊΡΠ½Π΄Ρ β ΡΡΠΎ ΠΎΠ΄Π½ΠΎ ΡΠ΄ΡΠΎ CPU ΡΠ΅Π»ΠΈΠΊΠΎΠΌ.
Π§ΡΠΎΠ±Ρ ΡΡΠ°Π»ΠΎ Π³ΠΎΠ²ΠΎΡΠΈΡΡ Π΅ΡΠ΅ ΠΏΡΠΎΡΠ΅, ΠΈΠ·ΠΌΠ΅ΡΡΡΡ ΡΡΠ°Π»ΠΈ ΠΏΡΡΠΌΠΎ Π² ΡΠ΄ΡΠ°Ρ , ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Ρ ΠΏΠΎΠ΄ Π½ΠΈΠΌΠΈ ΡΠΎ ΡΠ°ΠΌΠΎΠ΅ Π²ΡΠ΅ΠΌΡ CPU ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Linux ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ Π²Π΅ΡΠ°, Π° Π½Π΅ ΡΠ°ΠΊΠΎΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ/ΡΠ΄ΡΠ°, ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΠ»ΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π² Π΄ΡΡΠ³ΠΎΠ΅.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ Ρ 3 ΡΠ΄ΡΠ°ΠΌΠΈ CPU, Π³Π΄Π΅ ΡΡΡΠΌ pod’Π°ΠΌ Π±ΡΠ΄ΡΡ Π²ΡΠ±ΡΠ°Π½Ρ ΡΠ°ΠΊΠΈΠ΅ Π²Π΅ΡΠ° (500, 1000 ΠΈ 1500), ΠΊΠΎΡΠΎΡΡΠ΅ Π»Π΅Π³ΠΊΠΎ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΡΡΡΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ°ΡΡΠΈ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΡ ΠΈΠΌ ΡΠ΄Π΅Ρ (0,5, 1 ΠΈ 1,5).
ΠΡΠ»ΠΈ Π²Π·ΡΡΡ Π²ΡΠΎΡΠΎΠΉ ΡΠ΅ΡΠ²Π΅Ρ, Π³Π΄Π΅ ΡΠ΄Π΅Ρ Π±ΡΠ΄Π΅Ρ Π²Π΄Π²ΠΎΠ΅ Π±ΠΎΠ»ΡΡΠ΅ (6), ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΡ ΡΠ°ΠΌ ΡΠ΅ ΠΆΠ΅ pod’Ρ, ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ΄Π΅Ρ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΡΡΠΈΡΠ°ΡΡ ΠΏΡΠΎΡΡΡΠΌ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π½Π° 2 (1, 2 ΠΈ 3 ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ). ΠΠΎ Π²Π°ΠΆΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π½Π° ΡΡΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΠΏΠΎΡΠ²ΠΈΡΡΡ ΡΠ΅ΡΠ²ΡΡΡΡΠΉ pod, Π²Π΅Ρ Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΡΡΡΡ Π΄Π»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° Π±ΡΠ΄Π΅Ρ 3000. ΠΠ½ Π·Π°Π±ΠΈΡΠ°Π΅Ρ ΡΠ΅Π±Π΅ ΡΠ°ΡΡΡ ΡΠ΅ΡΡΡΡΠΎΠ² CPU (ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ ΡΠ΄Π΅Ρ), Π° Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ
pod’ΠΎΠ² ΠΎΠ½ΠΈ ΠΏΠ΅ΡΠ΅ΡΡΠΈΡΡΠ²Π°ΡΡΡΡ (ΡΠΌΠ΅Π½ΡΡΠ°ΡΡΡ Π²Π΄Π²ΠΎΠ΅):
Kubernetes ΠΈ ΡΠ΅ΡΡΡΡΡ CPU
Π Kubernetes ΡΠ΅ΡΡΡΡΡ CPU ΠΏΡΠΈΠ½ΡΡΠΎ ΠΈΠ·ΠΌΠ΅ΡΡΡΡ Π² ΠΌΠΈΠ»Π»ΠΈΡΠ΄ΡΠ°Ρ , Ρ.Π΅. Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Π²Π΅ΡΠ° Π±Π΅ΡΡΡΡΡ 0,001 ΡΠ΄ΡΠ°. (Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π² ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Linux/cgroups Π½Π°Π·ΡΠ²Π°ΡΡ CPU share, Ρ ΠΎΡΡ, Π΅ΡΠ»ΠΈ Π³ΠΎΠ²ΠΎΡΠΈΡΡ ΡΠΎΡΠ½Π΅Π΅, ΡΠΎ 1000 ΠΌΠΈΠ»Π»ΠΈΡΠ΄Π΅Ρ = 1024 CPU shares.) K8s ΡΠ»Π΅Π΄ΠΈΡ Π·Π° ΡΠ΅ΠΌ, ΡΡΠΎΠ±Ρ Π½Π΅ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ pod’ΠΎΠ², ΡΠ΅ΠΌ Π΅ΡΡΡ ΡΠ΅ΡΡΡΡΠΎΠ² CPU Π΄Π»Ρ ΡΡΠΌΠΌΡ Π²Π΅ΡΠΎΠ² Π²ΡΠ΅Ρ pod’ΠΎΠ².
ΠΠ°ΠΊ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ? ΠΡΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ° Π² ΠΊΠ»Π°ΡΡΠ΅Ρ Kubernetes ΡΠΎΠΎΠ±ΡΠ°Π΅ΡΡΡ, ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ Π½Π΅Π³ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ ΡΠ΄Π΅Ρ CPU. Π ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ pod’Π° ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ Kubernetes Π·Π½Π°Π΅Ρ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΄Π΅Ρ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΡΠΎΠΌΡ pod’Ρ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, pod Π±ΡΠ΄Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ, Π³Π΄Π΅ ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ.
Π§ΡΠΎ ΠΆΠ΅ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄ΡΡ, Π΅ΡΠ»ΠΈ Π½Π΅ ΡΠΊΠ°Π·Π°Π½ request (Ρ.Π΅. Ρ pod’Π° Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π½ΡΠΆΠ½ΡΡ Π΅ΠΌΡ ΡΠ΄Π΅Ρ)? ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΡΠΌΡΡ, ΠΊΠ°ΠΊ Kubernetes Π²ΠΎΠΎΠ±ΡΠ΅ ΡΡΠΈΡΠ°Π΅Ρ ΡΠ΅ΡΡΡΡΡ.
Π£ pod’Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΈ request’Ρ (ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ CFS), ΠΈ Π»ΠΈΠΌΠΈΡΡ (ΠΏΠΎΠΌΠ½ΠΈΡΠ΅ ΡΠ²Π΅ΡΠΎΡΠΎΡ?):
- ΠΡΠ»ΠΈ ΠΎΠ½ΠΈ ΡΠΊΠ°Π·Π°Π½Ρ ΡΠ°Π²Π½ΡΠ΅, ΡΠΎ pod’Ρ Π½Π°Π·Π½Π°ΡΠ°Π΅ΡΡΡ QoS-ΠΊΠ»Π°ΡΡ guaranteed. Π’Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΠ΅Π³Π΄Π° Π΄ΠΎΡΡΡΠΏΠ½ΡΡ Π΄Π»Ρ Π½Π΅Π³ΠΎ ΡΠ΄Π΅Ρ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅ΡΡΡ.
- ΠΡΠ»ΠΈ request ΠΌΠ΅Π½ΡΡΠ΅ Π»ΠΈΠΌΠΈΡΠ° β QoS-ΠΊΠ»Π°ΡΡ burstable. Π’.Π΅. ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌ, ΡΡΠΎ pod, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΠ΅Π³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ 1 ΡΠ΄ΡΠΎ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄Π»Ρ Π½Π΅Π³ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ: ΠΈΠ½ΠΎΠ³Π΄Π° pod ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈ Π±ΠΎΠ»ΡΡΠ΅ (ΠΊΠΎΠ³Π΄Π° Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ Π΅ΡΡΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΠ΅ ΡΠ΅ΡΡΡΡΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ).
- ΠΡΡΡ Π΅ΡΡ QoS-ΠΊΠ»Π°ΡΡ best effort β ΠΊ Π½Π΅ΠΌΡ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΡΠ΅ ΡΠ°ΠΌΡΠ΅ pod’Ρ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ ΡΠΊΠ°Π·Π°Π½ request. Π Π΅ΡΡΡΡΡ ΠΈΠΌ Π²ΡΠ΄Π°ΡΡΡΡ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ.
ΠΠ°ΠΌΡΡΡ
Π‘ ΠΏΠ°ΠΌΡΡΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ ΠΏΠΎΠ΄ΠΎΠ±Π½Π°Ρ, Π½ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½Π°Ρ β Π²ΡΡ-ΡΠ°ΠΊΠΈ ΠΏΡΠΈΡΠΎΠ΄Π° Ρ ΡΡΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ² ΡΠ°Π·Π½Π°Ρ. Π ΡΠ΅Π»ΠΎΠΌ ΠΆΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ ΡΠ°ΠΊΠΎΠ²Π°:
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ Π² ΠΏΠ°ΠΌΡΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΡΡ request’Ρ. ΠΡΡΡΡ pod’Ρ ΠΆΠΈΠ²ΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅, ΠΈΠ·ΠΌΠ΅Π½ΡΡ ΠΏΠΎΡΡΠ΅Π±Π»ΡΠ΅ΠΌΡΡ ΠΏΠ°ΠΌΡΡΡ, ΠΏΠΎΠΊΠ° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ
Π½Π΅ ΡΡΠ°Π½Π΅Ρ ΡΠ°ΠΊΠΈΠΌ Π±ΠΎΠ»ΡΡΠΈΠΌ, ΡΡΠΎ ΠΏΠ°ΠΌΡΡΡ Π·Π°ΠΊΠΎΠ½ΡΠΈΡΡΡ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ OOM killer ΠΈ ΡΠ±ΠΈΠ²Π°Π΅Ρ ΡΠ°ΠΌΡΠΉ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΡΠΎΡΠ΅ΡΡ:
ΠΠ°Ρ ΡΡΠΎ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΡΡΡΡΠ°ΠΈΠ²Π°Π΅Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΅Π³ΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ Π΄Π»Ρ Π½Π°Ρ Π²Π°ΠΆΠ½Ρ ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ±ΠΈΠ²Π°ΡΡΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ oom_score_adj.
ΠΠ΅ΡΠ½ΡΠΌΡΡ ΠΊ QoS-ΠΊΠ»Π°ΡΡΠ°ΠΌ CPU ΠΈ ΠΏΡΠΎΠ²Π΅Π΄ΡΠΌ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ oom_score_adj, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠΌΠΈ Π΄Π»Ρ pod’ΠΎΠ² ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΡ ΠΏΠΎ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ:
- Π‘Π°ΠΌΠΎΠ΅ Π½ΠΈΠ·ΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ oom_score_adj Ρ pod’Π° β -998 β ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠΉ pod Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ±ΠΈΠ²Π°ΡΡΡΡ Π² ΡΠ°ΠΌΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΡΡΠΎ guaranteed.
- Π‘Π°ΠΌΠΎΠ΅ Π²ΡΡΠΎΠΊΠΎΠ΅ β 1000 β ΡΡΠΎ best effort, ΡΠ°ΠΊΠΈΠ΅ pod’Ρ ΡΠ±ΠΈΠ²Π°ΡΡΡΡ ΡΠ°Π½ΡΡΠ΅ Π²ΡΠ΅Ρ .
- ΠΠ»Ρ ΡΠ°ΡΡΡΡΠ° ΠΎΡΡΠ°Π»ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ (burstable) Π΅ΡΡΡ ΡΠΎΡΠΌΡΠ»Π°, ΡΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ ΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ pod Π·Π°ΠΏΡΠΎΡΠΈΠ» ΡΠ΅ΡΡΡΡΠΎΠ², ΡΠ΅ΠΌ ΠΌΠ΅Π½ΡΡΠ΅ ΡΠ°Π½ΡΠΎΠ², ΡΡΠΎ Π΅Π³ΠΎ ΡΠ±ΡΡΡ.
ΠΡΠΎΡΠ°Ρ Β«ΠΊΡΡΡΠΈΠ»ΠΊΠ°Β» β limit_in_bytes β Π΄Π»Ρ Π»ΠΈΠΌΠΈΡΠΎΠ². Π‘ Π½Π΅ΠΉ Π²ΡΡ ΠΏΡΠΎΡΠ΅: ΠΌΡ ΠΏΡΠΎΡΡΠΎ Π½Π°Π·Π½Π°ΡΠ°Π΅ΠΌ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΠ΄Π°Π²Π°Π΅ΠΌΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, ΠΈ Π·Π΄Π΅ΡΡ (Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ CPU) Π½Π΅Ρ Π²ΠΎΠΏΡΠΎΡΠ°, Π² ΡΡΠΌ Π΅Ρ (ΠΏΠ°ΠΌΡΡΡ) ΠΈΠ·ΠΌΠ΅ΡΡΡΡ.
ΠΡΠΎΠ³ΠΎ
ΠΠ°ΠΆΠ΄ΠΎΠΌΡ pod’Ρ Π² Kubernetes Π·Π°Π΄Π°ΡΡΡΡ requests
ΠΈ limits
β ΠΎΠ±Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π΄Π»Ρ CPU ΠΈ Π΄Π»Ρ ΠΏΠ°ΠΌΡΡΠΈ:
- Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ requests ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ Kubernetes, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ pod’Ρ ΠΏΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ°ΠΌ;
- Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ Π²ΡΠ΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ QoS-ΠΊΠ»Π°ΡΡ pod’Π°;
- Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ CPU requests ΡΠ°ΡΡΠΈΡΡΠ²Π°ΡΡΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π²Π΅ΡΠ°;
- Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ CPU requests Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΡΡ CFS-ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ;
- Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ memory requests Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΡΡ OOM killer;
- Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ CPU limits Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΡΡ Β«ΡΠ²Π΅ΡΠΎΡΠΎΡΒ»;
- Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ memory limits Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΡΡ Π»ΠΈΠΌΠΈΡ Π½Π° cgroup’Ρ.
Π ΡΠ΅Π»ΠΎΠΌ ΡΡΠ° ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ° ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π½Π° Π²ΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠ°ΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ Π² Kubernetes.
ΠΠ²ΡΠΎΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
K8s cluster-autoscaler
ΠΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ ΡΠ΅Π±Π΅, ΡΡΠΎ Π²Π΅ΡΡ ΠΊΠ»Π°ΡΡΠ΅Ρ ΡΠΆΠ΅ Π·Π°Π½ΡΡ ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠΎΠ·Π΄Π°Π½ Π½ΠΎΠ²ΡΠΉ pod. ΠΠΎΠΊΠ° pod Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΠ²ΠΈΡΡΡΡ, ΠΎΠ½ Π²ΠΈΡΠΈΡ Π² ΡΡΠ°ΡΡΡΠ΅ Pending. Π§ΡΠΎΠ±Ρ ΠΎΠ½ Π²ΡΡ-ΡΠ°ΠΊΠΈ ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ ΠΊ ΠΊΠ»Π°ΡΡΠ΅ΡΡ ΠΈΠ»ΠΈ ΠΆΠ΅β¦ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ cluster-autoscaler, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΄Π΅Π»Π°Π΅Ρ ΡΡΠΎ Π·Π° Π½Π°Ρ: Π·Π°ΠΊΠ°ΠΆΠ΅Ρ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΠΌΠ°ΡΠΈΠ½Ρ Ρ ΠΎΠ±Π»Π°ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠ° (Π·Π°ΠΏΡΠΎΡΠΎΠΌ ΠΏΠΎ API) ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡ Π΅Ρ ΠΊ ΠΊΠ»Π°ΡΡΠ΅ΡΡ, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ pod Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½.
ΠΡΠΎ ΠΈ Π΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Kubernetes, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ (ΠΏΠΎ Π½Π°ΡΠ΅ΠΌΡ ΠΎΠΏΡΡΡ) ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΠ΄Π½Π°ΠΊΠΎ, ΠΊΠ°ΠΊ ΠΈ Π²Π΅Π·Π΄Π΅, Π·Π΄Π΅ΡΡ Π½Π΅ Π±Π΅Π· Π½ΡΠ°Π½ΡΠΎΠ²β¦
ΠΠΎΠΊΠ° ΠΌΡ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π»ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°, Π²ΡΡ Π±ΡΠ»ΠΎ Ρ ΠΎΡΠΎΡΠΎ, Π½ΠΎ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΊΠ»Π°ΡΡΠ΅Ρ ΡΡΠ°Π» ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΡΡΡΡ? ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΌΠΈΠ³ΡΠΈΡΠΎΠ²Π°ΡΡ pod’Ρ (Π΄Π»Ρ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Ρ ΠΎΡΡΠΎΠ²) ΠΎΡΠ΅Π½Ρ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΈ Π΄ΠΎΡΠΎΠ³ΠΎ ΠΏΠΎ ΡΠ΅ΡΡΡΡΠ°ΠΌ. Π Kubernetes ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ²ΡΠ΅ΠΌ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠ»Π°ΡΡΠ΅Ρ ΠΈΠ· 3 ΡΠ΅ΡΠ²Π΅ΡΠΎΠ², Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π΅ΡΡΡ Deployment. Π£ Π½Π΅Π³ΠΎ 6 pod’ΠΎΠ²: ΡΠ΅ΠΉΡΠ°Ρ ΡΡΠΎ ΠΏΠΎ 2 Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ. ΠΡ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΏΡΠΈΡΠΈΠ½Π΅ Π·Π°Ρ
ΠΎΡΠ΅Π»ΠΈ Π²ΡΠΊΠ»ΡΡΠΈΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ΅ΡΠ²Π΅ΡΠΎΠ². ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ kubectl drain
, ΠΊΠΎΡΠΎΡΠ°Ρ:
- Π·Π°ΠΏΡΠ΅ΡΠΈΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π½ΠΎΠ²ΡΠ΅ pod’Ρ Π½Π° ΡΡΠΎΡ ΡΠ΅ΡΠ²Π΅Ρ;
- ΡΠ΄Π°Π»ΠΈΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ pod’Ρ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Kubernetes ΡΠ»Π΅Π΄ΠΈΡ Π·Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ΠΌ ΡΠΈΡΠ»Π° pod’ΠΎΠ² (6), ΠΎΠ½ ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅ΡΠΎΠ·Π΄Π°ΡΡ ΠΈΡ Π½Π° Π΄ΡΡΠ³ΠΈΡ ΡΠ·Π»Π°Ρ , Π½ΠΎ Π½Π΅ Π½Π° ΠΎΡΠΊΠ»ΡΡΠ°Π΅ΠΌΠΎΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ ΡΠΆΠ΅ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ ΠΊΠ°ΠΊ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½ΡΠΉ Π΄Π»Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π½ΠΎΠ²ΡΡ pod’ΠΎΠ². ΠΡΠΎ ΠΎΡΠ½ΠΎΠ²ΠΎΠΏΠΎΠ»Π°Π³Π°ΡΡΠ°Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠΊΠ° Π΄Π»Ρ Kubernetes.
ΠΠ΄Π½Π°ΠΊΠΎ ΠΈ Π·Π΄Π΅ΡΡ Π΅ΡΡΡ Π½ΡΠ°Π½Ρ. Π Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ Π΄Π»Ρ StatefulSet (Π²ΠΌΠ΅ΡΡΠΎ Deployment) Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π±ΡΠ΄ΡΡ ΠΈΠ½ΡΠΌΠΈ. Π’Π΅ΠΏΠ΅ΡΡ Ρ Π½Π°Ρ ΡΠΆΠ΅ stateful-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΈ pod’Π° Ρ MongoDB, Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ
Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΊΠ°ΠΊΠ°Ρ-ΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° (Π΄Π°Π½Π½ΡΠ΅ ΠΈΡΠΏΠΎΡΡΠΈΠ»ΠΈΡΡ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ°, Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ°Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡΡΡ pod’Ρ). Π ΠΌΡ ΡΠ½ΠΎΠ²Π° ΡΠ΅ΡΠ°Π΅ΠΌ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ΅ΡΠ²Π΅Ρ. Π§ΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄ΡΡ?
MongoDB ΠΌΠΎΠ³ Π±Ρ ΡΠΌΠ΅ΡΠ΅ΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΅ΠΌΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌ ΠΊΠ²ΠΎΡΡΠΌ: Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° ΠΈΠ· ΡΡΡΡ
ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΈΠΉ Ρ
ΠΎΡΡ Π±Ρ Π΄Π²Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎΠ³ΠΎ Π½Π΅ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ β Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ PodDisruptionBudget. ΠΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ
pod’ΠΎΠ². ΠΠ½Π°Ρ, ΡΡΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· pod’ΠΎΠ² Ρ MongoDB ΡΠΆΠ΅ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΈ ΡΠ²ΠΈΠ΄Π΅Π², ΡΡΠΎ Π΄Π»Ρ MongoDB Π² PodDisruptionBudget ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ minAvailable: 2
, Kubernetes Π½Π΅ Π΄Π°ΡΡ ΡΠ΄Π°Π»ΠΈΡΡ pod.
ΠΡΠΎΠ³: Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ (Π° Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ β ΠΏΠ΅ΡΠ΅ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅) pod’ΠΎΠ² ΠΏΡΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ PodDisruptionBudget.
ΠΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΄ΡΡΠ³ΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ. ΠΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π·Π°ΠΏΡΡΠ΅Π½Π½ΠΎΠ΅ ΠΊΠ°ΠΊ Deployment Π² Kubernetes. ΠΠ° Π΅Π³ΠΎ pod’Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΡ ΡΡΠΈ) ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΡΡΠ°ΡΠΈΠΊ, Π° ΠΌΡ Π² Π½ΠΈΡ Π·Π°ΠΌΠ΅ΡΡΠ΅ΠΌ Π½Π΅ΠΊΠΈΠΉ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Ρ (ΡΠΊΠ°ΠΆΠ΅ΠΌ, Π½Π°Π³ΡΡΠ·ΠΊΡ Π½Π° CPU). ΠΠΎΠ³Π΄Π° Π½Π°Π³ΡΡΠ·ΠΊΠ° Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π΅Ρ, ΠΌΡ ΡΡΠΎ ΡΠΈΠΊΡΠΈΡΡΠ΅ΠΌ ΠΏΠΎ Π³ΡΠ°ΡΠΈΠΊΡ ΠΈ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ pod’ΠΎΠ² Π΄Π»Ρ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ².
Π‘Π΅Π³ΠΎΠ΄Π½Ρ Π² Kubernetes ΡΡΠΎ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ Π²ΡΡΡΠ½ΡΡ: Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅/ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° pod’ΠΎΠ² Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π·Π°ΠΌΠ΅ΡΡΠ΅ΠΌΡΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ.
ΠΠ»Π°Π²Π½ΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ Π·Π΄Π΅ΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΠ·ΠΌΠ΅ΡΡΡΡ ΠΈ ΠΊΠ°ΠΊ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ (Π΄Π»Ρ ΠΏΡΠΈΠ½ΡΡΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠΈΡΠ»Π° pod’ΠΎΠ²). ΠΠ·ΠΌΠ΅ΡΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎΠ΅:
ΠΠ°ΠΊ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΈ β ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΠΌΠ΅ΡΡΠΈΠΊΠΈ ΠΈ Ρ.ΠΏ. β Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π» Π² Π΄ΠΎΠΊΠ»Π°Π΄Π΅ ΠΏΡΠΎ
ΠΡΡΡ
ΠΠΌΠ΅ΡΡΠΎ Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ
Π£ Π΄ΠΎΠΊΠ»Π°Π΄Π° Π΅ΡΡΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅: ΠΏΡΠΎ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΡΠΎ ΡΠΎ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΏΠΎΠ΄Π±ΠΈΡΠ°ΡΡ ΡΠ΅ΡΡΡΡΡ. ΠΠ± ΡΡΠΎΠΌ Ρ ΡΠ°ΡΡΠΊΠ°ΠΆΡ Π² Π±ΡΠ΄ΡΡΠΈΡ
ΡΠΎΠ»ΠΈΠΊΠ°Ρ
Π½Π°
ΠΠΈΠ΄Π΅ΠΎ ΠΈ ΡΠ»Π°ΠΉΠ΄Ρ
ΠΠΈΠ΄Π΅ΠΎ Ρ Π²ΡΡΡΡΠΏΠ»Π΅Π½ΠΈΡ (44 ΠΌΠΈΠ½ΡΡΡ):
ΠΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΡ Π΄ΠΎΠΊΠ»Π°Π΄Π°:
P.S.
ΠΡΡΠ³ΠΈΠ΅ Π΄ΠΎΠΊΠ»Π°Π΄Ρ ΠΏΡΠΎ Kubernetes Π² Π½Π°ΡΠ΅ΠΌ Π±Π»ΠΎΠ³Π΅:
- Β«
Π Π°ΡΡΠΈΡΡΠ΅ΠΌ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΡΠ΅ΠΌ Kubernetes Β» (ΠΠ½Π΄ΡΠ΅ΠΉ ΠΠΎΠ»ΠΎΠ²ΠΎΠ²; 8 Π°ΠΏΡΠ΅Π»Ρ 2019 Π½Π° Saint HighLoad++); - Β«
ΠΠ°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΈ Kubernetes Β» (ΠΠΌΠΈΡΡΠΈΠΉ Π‘ΡΠΎΠ»ΡΡΠΎΠ²; 8 Π½ΠΎΡΠ±ΡΡ 2018 Π½Π° HighLoad++); - Β«
ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΠΈ Kubernetes Β» (ΠΠΌΠΈΡΡΠΈΠΉ Π‘ΡΠΎΠ»ΡΡΠΎΠ²; 28 ΠΌΠ°Ρ 2018 Π½Π° RootConf); - Β«
ΠΡΡΡΠΈΠ΅ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ CI/CD Ρ Kubernetes ΠΈ GitLab Β» (ΠΠΌΠΈΡΡΠΈΠΉ Π‘ΡΠΎΠ»ΡΡΠΎΠ²; 7 Π½ΠΎΡΠ±ΡΡ 2017 Π½Π° HighLoad++); - Β«
ΠΠ°Ρ ΠΎΠΏΡΡ Ρ Kubernetes Π² Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ Β» (ΠΠΌΠΈΡΡΠΈΠΉ Π‘ΡΠΎΠ»ΡΡΠΎΠ²; 6 ΠΈΡΠ½Ρ 2017 Π½Π° RootConf).
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com