Π’Ρ€ΠΈ уровня Π°Π²Ρ‚ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π² Kubernetes: ΠΊΠ°ΠΊ ΠΈΡ… эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ

Π’Ρ€ΠΈ уровня Π°Π²Ρ‚ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π² Kubernetes: ΠΊΠ°ΠΊ ΠΈΡ… эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ
Для ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ освоСния Kubernetes Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ способы ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ кластСрных рСсурсов: ΠΏΠΎ словам Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² систСмы, это ΠΎΠ΄Π½Π° ΠΈΠ· Π³Π»Π°Π²Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ Kubernetes. ΠœΡ‹ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠ»ΠΈ высокоуровнСвый ΠΎΠ±Π·ΠΎΡ€ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈ измСнСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° кластСров, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ, ΠΊΠ°ΠΊ ΠΈΡ… эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

Π‘Ρ‚Π°Ρ‚ΡŒΡŽ Kubernetes Autoscaling 101: Cluster Autoscaler, Horizontal Autoscaler, and Vertical Pod Autoscaler ΠΏΠ΅Ρ€Π΅Π²Π΅Π»Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°, которая Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»Π° Π°Π²Ρ‚ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Kubernetes aaS ΠΎΡ‚ Mail.ru.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

Kubernetes β€” инструмСнт для управлСния рСсурсами ΠΈ оркСстровки. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ ΠΏΠΎΠ²ΠΎΠ·ΠΈΡ‚ΡŒΡΡ с классными функциями развСртывания, ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΈ управлСния ΠΏΠΎΠ΄Π°ΠΌΠΈ (ΠΌΠΎΠ΄ΡƒΠ»ΡŒ pod β€” Π³Ρ€ΡƒΠΏΠΏΠ° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², запускаСмых Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° запрос).

Однако слСдуСт ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΈ ΠΎ Ρ‚Π°ΠΊΠΈΡ… вопросах:

  1. Как ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ прилоТСния?
  2. Как ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΈ эффСктивном состоянии?
  3. Как Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° постоянныС измСнСния Π² ΠΊΠΎΠ΄Π΅ ΠΈ Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ°Ρ… ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ?

Настройка кластСров Kubernetes для балансировки рСсурсов ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ слоТной Π·Π°Π΄Π°Ρ‡Π΅ΠΉ, ΠΎΠ½Π° Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ экспСртных Π·Π½Π°Π½ΠΈΠΉ ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ Kubernetes. Рабочая Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½Π° вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ сСрвисы ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠΎΠ»Π΅Π±Π°Ρ‚ΡŒΡΡ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ дня ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ часа, поэтому балансировку Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠ°ΠΊ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½Ρ‹ΠΉ процСсс.

Π£Ρ€ΠΎΠ²Π½ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Kubernetes

Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ Π°Π²Ρ‚ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ†ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя уровнями:

  1. Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ pod’ΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ (Horizontal Pod Autoscaler, HPA) ΠΈ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ Π°Π²Ρ‚ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (Vertical Pod Autoscaler, VPA). Π­Ρ‚ΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ рСсурсов для Π²Π°ΡˆΠΈΡ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ².
  2. Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ кластСра, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ управляСт систСма Π°Π²Ρ‚ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ кластСра (Cluster Autoscaler, CA), ΠΎΠ½Π° ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΈΠ»ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ количСство ΡƒΠ·Π»ΠΎΠ² Π²Π½ΡƒΡ‚Ρ€ΠΈ кластСра.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ (HPA)

Как слСдуСт ΠΈΠ· названия, HPA ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅Ρ‚ количСство Ρ€Π΅ΠΏΠ»ΠΈΠΊ pod’ΠΎΠ². Π’ качСствС Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ΠΎΠ² для измСнСния количСства Ρ€Π΅ΠΏΠ»ΠΈΠΊ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ дСвопсов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° процСссор ΠΈ ΠΏΠ°ΠΌΡΡ‚ΡŒ. Однако ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ систСму Π½Π° основС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ, ΠΈΡ… сочСтания ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ.

ВысокоуровнСвая схСма Ρ€Π°Π±ΠΎΡ‚Ρ‹ HPA:

  1. HPA Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎ провСряСт значСния ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈ установкС, с ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 30 сСкунд.
  2. HPA пытаСтся ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ количСство ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, Ссли достигнут Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΡ€ΠΎΠ³.
  3. HPA обновляСт количСство Ρ€Π΅ΠΏΠ»ΠΈΠΊ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° развСртывания/Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ.
  4. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ развСртывания/Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π·Π°Ρ‚Π΅ΠΌ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ.

Π’Ρ€ΠΈ уровня Π°Π²Ρ‚ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π² Kubernetes: ΠΊΠ°ΠΊ ΠΈΡ… эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ
HPA запускаСт процСсс развСртывания ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΏΡ€ΠΈ достиТСнии ΠΏΠΎΡ€ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ значСния ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ

ΠŸΡ€ΠΈ использовании HPA ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

  • Π˜Π½Ρ‚Π΅Ρ€Π²Π°Π» ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ HPA ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ составляСт 30 сСкунд. Он устанавливаСтся Ρ„Π»Π°Π³ΠΎΠΌ horizontal-pod-autoscaler-sync-period Π² диспСтчСрС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°.
  • ΠžΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ составляСт 10%.
  • ПослС послСднСго увСличСния количСства ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ HPA ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ стабилизации ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π΅Ρ… ΠΌΠΈΠ½ΡƒΡ‚. Π­Ρ‚ΠΎΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» устанавливаСтся Ρ„Π»Π°Π³ΠΎΠΌ horizontal-pod-autoscaler-upscale-delay.
  • ПослС послСднСго ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ количСства ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ HPA ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ стабилизации Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ пяти ΠΌΠΈΠ½ΡƒΡ‚. Π­Ρ‚ΠΎΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» устанавливаСтся Ρ„Π»Π°Π³ΠΎΠΌ horizontal-pod-autoscaler-downscale-delay.
  • HPA Π»ΡƒΡ‡ΡˆΠ΅ всСго Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ развСртывания, Π° Π½Π΅ с ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°ΠΌΠΈ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ. Π“ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ Π°Π²Ρ‚ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ нСсовмСстимо с ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ (rolling update), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°ΠΌΠΈ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠ΅ количСство Ρ€Π΅ΠΏΠ»ΠΈΠΊ зависит нСпосрСдствСнно ΠΎΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² развСртывания.

Π’Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ Π°Π²Ρ‚ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ pod’ΠΎΠ²

Π’Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ Π°Π²Ρ‚ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (VPA) выдСляСт большС (ΠΈΠ»ΠΈ мСньшС) Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ процСссора ΠΈΠ»ΠΈ памяти для ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… pod’ΠΎΠ². ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для pod’ΠΎΠ² с сохранСниСм состояния (stateful) ΠΈΠ»ΠΈ Π±Π΅Π· Π½Π΅Π³ΠΎ (stateless), Π½ΠΎ Π² основном ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΎ для stateful-сСрвисов. Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ VPA ΠΈ для ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π±Π΅Π· сохранСния состояния, Ссли Π½ΡƒΠΆΠ½ΠΎ автоматичСски ΡΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ объСм ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… рСсурсов.

VPA Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π° события OOM (out of memory, нСдостаточно памяти). Для измСнСния процСссорного Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ объСма памяти трСбуСтся пСрСзапуск pod’ΠΎΠ². ΠŸΡ€ΠΈ пСрСзапускС VPA ΡΠΎΠ±Π»ΡŽΠ΄Π°Π΅Ρ‚ Π±ΡŽΠ΄ΠΆΠ΅Ρ‚ распрСдСлСния (pods distribution budget, PDB), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ минимально Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ количСство ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ объСм рСсурсов для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ модуля. Π’Π°ΠΊ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ объСм выдСляСмой памяти ΠΏΡ€Π΅Π΄Π΅Π»ΠΎΠΌ Π² 8 Π“Π‘. Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ссли Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ ΡƒΠ·Π»Ρ‹ Ρ‚ΠΎΡ‡Π½ΠΎ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ 8 Π“Π‘ памяти Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ спСцификации ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ описаны Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ Π²ΠΈΠΊΠΈ VPA.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρƒ VPA Π΅ΡΡ‚ΡŒ интСрСсная функция Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ (VPA Recommender). Она отслСТиваСт использованиС рСсурсов ΠΈ события OOM всСх ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ значСния памяти ΠΈ процСссорного Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° основС ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ историчСских ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ. Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ API-интСрфСйс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ дСскриптор pod ΠΈ ΠΎΡ‚Π΄Π°Π΅Ρ‚ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹Π΅ значСния рСсурсов.

Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ VPA Recommender Π½Π΅ отслСТиваСт Β«Π»ΠΈΠΌΠΈΡ‚Β» рСсурсов. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΌΠΎΠ½ΠΎΠΏΠΎΠ»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ рСсурсы Π²Π½ΡƒΡ‚Ρ€ΠΈ ΡƒΠ·Π»ΠΎΠ². Π›ΡƒΡ‡ΡˆΠ΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ пространства ΠΈΠΌΠ΅Π½, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ³ΠΎ расхода памяти ΠΈΠ»ΠΈ процСссорного Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

ВысокоуровнСвая схСма Ρ€Π°Π±ΠΎΡ‚Ρ‹ VPA:

  1. VPA Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎ провСряСт значСния ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈ установкС, с ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 10 сСкунд.
  2. Если достигнут Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΡ€ΠΎΠ³, VPA пытаСтся ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ количСство рСсурсов.
  3. VPA обновляСт количСство рСсурсов Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° развСртывания/Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ.
  4. ΠŸΡ€ΠΈ пСрСзапускС ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ всС Π½ΠΎΠ²Ρ‹Π΅ рСсурсы ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΊ созданным инстансам.

Π’Ρ€ΠΈ уровня Π°Π²Ρ‚ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π² Kubernetes: ΠΊΠ°ΠΊ ΠΈΡ… эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ
VPA добавляСт Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ количСство рСсурсов

Π£Ρ‡ΠΈΡ‚Ρ‹Π²Π°ΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΡ€ΠΈ использовании VPA:

  • ΠœΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ пСрСзапуска pod’Π°. Π­Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ послС внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Для надСТности ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ ΠΈ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΠΏΠΎ ΡƒΠ·Π»Π°ΠΌ Π½Π° основС Π½ΠΎΠ²Ρ‹Ρ… Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… рСсурсов.
  • VPA ΠΈ HPA ΠΏΠΎΠΊΠ° нСсовмСстимы Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° ΠΎΠ΄Π½ΠΈΡ… ΠΈ Ρ‚Π΅Ρ… ΠΆΠ΅ pod’Π°Ρ…. Если Π²Ρ‹ примСняСтС Π² ΠΎΠ΄Π½ΠΎΠΌ кластСрС ΠΎΠ±Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ настройки Π½Π΅ позволят ΠΈΠΌ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° ΠΎΠ΄Π½ΠΈΡ… ΠΈ Ρ‚Π΅Ρ… ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ….
  • VPA настраиваСт запросы ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Π½Π° рСсурсы, исходя Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΈΡ… использования. Он Π½Π΅ устанавливаСт Π»ΠΈΠΌΠΈΡ‚Ρ‹ использования рСсурсов. ΠœΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Ρ‡Π½ΡƒΡ‚ Π·Π°Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ всС большС рСсурсов, это ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Kubernetes Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ Π΄Π°Π½Π½Ρ‹ΠΉ pod.
  • VPA ΠΏΠΎΠΊΠ° Π½Π° Ρ€Π°Π½Π½Π΅ΠΉ стадии Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π‘ΡƒΠ΄ΡŒΡ‚Π΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹, Ρ‡Ρ‚ΠΎ Π² блиТайшСС врСмя систСма ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Ρ‚Π΅Ρ€ΠΏΠ΅Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ измСнСния. МоТно ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ± извСстных ограничСниях ΠΈ ΠΏΠ»Π°Π½Π°Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π’Π°ΠΊ, Π² ΠΏΠ»Π°Π½Π°Ρ… Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ VPA ΠΈ HPA, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ вмСстС с ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΎΠΉ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ для Π½ΠΈΡ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ ΠΌΠ΅Ρ‚ΠΊΠ° ‘requires VPA’).

ΠΠ²Ρ‚ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ кластСра Kubernetes

ΠΠ²Ρ‚ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ кластСра (Cluster Autoscaler, CA) измСняСт количСство ΡƒΠ·Π»ΠΎΠ², исходя ΠΈΠ· количСства ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ pod. БистСма пСриодичСски провСряСт Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ β€” ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ кластСра, Ссли трСбуСтся большС рСсурсов ΠΈ Ссли кластСр Π½Π΅ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ установлСнных Π»ΠΈΠΌΠΈΡ‚ΠΎΠ². CA взаимодСйствуСт с поставщиком ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… услуг, Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ Ρƒ Π½Π΅Π³ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΡƒΠ·Π»Ρ‹ ΠΈΠ»ΠΈ освобоТдаСт Π±Π΅Π·Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅. ΠŸΠ΅Ρ€Π²Π°Ρ общСдоступная вСрсия CA Π±Ρ‹Π»Π° прСдставлСна Π² Kubernetes 1.8.

ВысокоуровнСвая схСма Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π‘A:

  1. CA провСряСт Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π² состоянии оТидания с ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 10 сСкунд.
  2. Если ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ находятся Π² состоянии оТидания ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π² кластСрС нСдостаточно доступных рСсурсов для ΠΈΡ… распрСдСлСния, ΠΎΠ½ пытаСтся ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΡƒΠ·Π»ΠΎΠ².
  3. Когда поставщик ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… услуг выдСляСт Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ ΡƒΠ·Π΅Π», Ρ‚ΠΎΡ‚ присоСдиняСтся ΠΊ кластСру ΠΈ Π³ΠΎΡ‚ΠΎΠ² ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ pod.
  4. ΠŸΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ Kubernetes распрСдСляСт ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ ΡƒΠ·Π΅Π». Если послС этого Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ всС Ρ€Π°Π²Π½ΠΎ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π² состоянии оТидания, процСсс повторяСтся β€” ΠΈ Π² кластСр Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ Π½ΠΎΠ²Ρ‹Π΅ ΡƒΠ·Π»Ρ‹.

Π’Ρ€ΠΈ уровня Π°Π²Ρ‚ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π² Kubernetes: ΠΊΠ°ΠΊ ΠΈΡ… эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ
АвтоматичСскоС Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡƒΠ·Π»ΠΎΠ² кластСра Π² ΠΎΠ±Π»Π°ΠΊΠ΅

Π£Ρ‡ΠΈΡ‚Ρ‹Π²Π°ΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΏΡ€ΠΈ использовании Π‘A:

  • CA Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρƒ всСх ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π² кластСрС Π΅ΡΡ‚ΡŒ мСсто для запуска, нСзависимо ΠΎΡ‚ уровня Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° процСссор. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ½ пытаСтся Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² кластСрС Π½Π΅Ρ‚ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Ρ… ΡƒΠ·Π»ΠΎΠ².
  • CA рСгистрируСт Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‡Π΅Ρ€Π΅Π· 30 сСкунд.
  • ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΡƒΠ·Π΅Π» становится Π½Π΅Π½ΡƒΠΆΠ½Ρ‹ΠΌ, CA ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ 10 ΠΌΠΈΠ½ΡƒΡ‚, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ систСму.
  • Π’ систСмС Π°Π²Ρ‚ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π΅ΡΡ‚ΡŒ понятиС Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚Π΅Π»Π΅ΠΉ (expanders). Π­Ρ‚ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ стратСгии для Π²Ρ‹Π±ΠΎΡ€Π° Π³Ρ€ΡƒΠΏΠΏΡ‹ ΡƒΠ·Π»ΠΎΠ², Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π±ΡƒΠ΄ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅.
  • ΠžΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎ примСняйтС ΠΎΠΏΡ†ΠΈΡŽ cluster-autoscaler.kubernetes.io/safe-to-evict (true). Если ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ pod’ΠΎΠ² ΠΈΠ»ΠΈ Ссли ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ… Π±ΡƒΠ΄ΡƒΡ‚ разбросаны ΠΏΠΎ всСм ΡƒΠ·Π»Π°ΠΌ, Π²Ρ‹ Π² Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ стСпСни потСряСтС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ ΠΌΠ°ΡΡˆΡ‚Π°Π± кластСра.
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ PodDisruptionBudgets, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ pod’ΠΎΠ², ΠΈΠ·-Π·Π° Ρ‡Π΅Π³ΠΎ Ρ‡Π°ΡΡ‚ΡŒ вашСго прилоТСния ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· строя.

Как систСмы Π°Π²Ρ‚ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Kubernetes Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ собой

Для идСальной Π³Π°Ρ€ΠΌΠΎΠ½ΠΈΠΈ слСдуСт ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π°Π²Ρ‚ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ pod’ΠΎΠ² (HPA/VPA), ΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ кластСра. Они ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ просто Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ собой:

  1. HPA ΠΈΠ»ΠΈ VPA ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ pod’ΠΎΠ² ΠΈΠ»ΠΈ рСсурсы, Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ для ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… pod’ΠΎΠ².
  2. Если для Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ ΡƒΠ·Π»ΠΎΠ², CA Π·Π°ΠΌΠ΅Ρ‡Π°Π΅Ρ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ pod’ΠΎΠ² Π² состоянии оТидания.
  3. CA выдСляСт Π½ΠΎΠ²Ρ‹Π΅ ΡƒΠ·Π»Ρ‹.
  4. ΠœΠΎΠ΄ΡƒΠ»ΠΈ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎ Π½ΠΎΠ²Ρ‹ΠΌ ΡƒΠ·Π»Π°ΠΌ.

Π’Ρ€ΠΈ уровня Π°Π²Ρ‚ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π² Kubernetes: ΠΊΠ°ΠΊ ΠΈΡ… эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ
БовмСстная систСма систСм ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Kubernetes

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки Π² Π°Π²Ρ‚ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Kubernetes

БущСствуСт нСсколько Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ дСвопсы ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π°Π²Ρ‚ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅.

HPA ΠΈ VPA зависят ΠΎΡ‚ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… историчСских Π΄Π°Π½Π½Ρ‹Ρ…. Если Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΎ нСдостаточно рСсурсов, ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ свСрнуты ΠΈ Π½Π΅ смогут Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ. Π’ этом случаС Π°Π²Ρ‚ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ состоится.

Π‘Π°ΠΌΠ° опСрация ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Π° ΠΊΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Нам хочСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ кластСр ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ быстро β€” Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ замСтят ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ сбои. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ слСдуСт ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ срСднСС врСмя ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ pod’ΠΎΠ² ΠΈ кластСра.

Π˜Π΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ сцСнарий β€” 4 ΠΌΠΈΠ½ΡƒΡ‚Ρ‹:

  1. 30 сСкунд. ОбновлСниС Ρ†Π΅Π»Π΅Π²Ρ‹Ρ… ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ: 30βˆ’60 сСкунд.
  2. 30 сСкунд. HPA провСряСт значСния ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ: 30 сСкунд.
  3. МСнСС 2 сСкунд. ΠœΠΎΠ΄ΡƒΠ»ΠΈ pod созданы ΠΈ пСрСходят Π² состояниС оТидания: 1 сСкунда.
  4. МСнСС 2 сСкунд. CA Π²ΠΈΠ΄ΠΈΡ‚ ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ отправляСт Π²Ρ‹Π·ΠΎΠ²Ρ‹ Π½Π° ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΡƒ ΡƒΠ·Π»ΠΎΠ²: 1 сСкунда.
  5. 3 ΠΌΠΈΠ½ΡƒΡ‚Ρ‹. ΠžΠ±Π»Π°Ρ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ выдСляСт ΡƒΠ·Π»Ρ‹. K8s ΠΆΠ΄Π΅Ρ‚, ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΈ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π³ΠΎΡ‚ΠΎΠ²Ρ‹: Π΄ΠΎ 10 ΠΌΠΈΠ½ΡƒΡ‚ (зависит ΠΎΡ‚ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ²).

Π₯ΡƒΠ΄ΡˆΠΈΠΉ (Π±ΠΎΠ»Π΅Π΅ рСалистичный) сцСнарий β€” 12 ΠΌΠΈΠ½ΡƒΡ‚:

  1. 30 сСкунд. ОбновлСниС Ρ†Π΅Π»Π΅Π²Ρ‹Ρ… ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ.
  2. 30 сСкунд. HPA провСряСт значСния ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ.
  3. МСнСС 2 сСкунд. ΠœΠΎΠ΄ΡƒΠ»ΠΈ pod созданы ΠΈ пСрСходят Π² состояниС оТидания.
  4. МСнСС 2 сСкунд. CA Π²ΠΈΠ΄ΠΈΡ‚ ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ отправляСт Π²Ρ‹Π·ΠΎΠ²Ρ‹ Π½Π° ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΡƒ ΡƒΠ·Π»ΠΎΠ².
  5. 10 ΠΌΠΈΠ½ΡƒΡ‚. ΠžΠ±Π»Π°Ρ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ выдСляСт ΡƒΠ·Π»Ρ‹. K8s ΠΆΠ΄Π΅Ρ‚, ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΈ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π³ΠΎΡ‚ΠΎΠ²Ρ‹. ВрСмя оТидания зависит ΠΎΡ‚ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° поставщика, Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° ОБ, Ρ€Π°Π±ΠΎΡ‚Π° Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… инструмСнтов.

НС ΠΏΡƒΡ‚Π°ΠΉΡ‚Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ΠΎΠ² с нашСй CA. ПослСдняя Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π²Π½ΡƒΡ‚Ρ€ΠΈ кластСра Kubernetes, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΎΠ±Π»Π°Ρ‡Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° основС распрСдСлСния ΡƒΠ·Π»ΠΎΠ². Он Π½Π΅ Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ происходит с вашими pod’Π°ΠΌΠΈ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Π­Ρ‚ΠΈ систСмы Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ.

Как ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π² Kubernetes

  1. Kubernetes β€” инструмСнт управлСния рСсурсами ΠΈ оркСстровки. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ pod’Π°ΠΌΠΈ ΠΈ рСсурсами кластСра β€” ΠΊΠ»ΡŽΡ‡Π΅Π²Π°Ρ Π²Π΅Ρ…Π° Π² освоСнии Kubernetes.
  2. УсвойтС Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΠΈ pod’ΠΎΠ² с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ HPA ΠΈ VPA.
  3. CA стоит ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли Π²Ρ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅ потрСбности своих pod’ΠΎΠ² ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ².
  4. Для ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ настройки кластСра Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ систСмы ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ вмСстС.
  5. ΠŸΡ€ΠΈ ΠΎΡ†Π΅Π½ΠΊΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ Ρ…ΡƒΠ΄ΡˆΠΈΠΉ ΠΈ Π»ΡƒΡ‡ΡˆΠΈΠΉ сцСнарии.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com