Π”Π΅Π²ΡΡ‚ΡŒ совСтов ΠΏΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Kubernetes

Π”Π΅Π²ΡΡ‚ΡŒ совСтов ΠΏΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Kubernetes

ВсСм ΠΏΡ€ΠΈΠ²Π΅Ρ‚! МСня Π·ΠΎΠ²ΡƒΡ‚ ОлСг Π‘ΠΈΠ΄ΠΎΡ€Π΅Π½ΠΊΠΎΠ², я Ρ€Π°Π±ΠΎΡ‚Π°ΡŽ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π”ΠΎΠΌΠšΠ»ΠΈΠΊ Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ инфраструктуры. ΠœΡ‹ эксплуатируСм Β«ΠšΡƒΠ±ΠΈΠΊΒ» Π² ΠΏΡ€ΠΎΠ΄Π΅ ΡƒΠΆΠ΅ большС Ρ‚Ρ€Ρ‘Ρ… Π»Π΅Ρ‚, ΠΈ Π·Π° это врСмя ΠΏΠ΅Ρ€Π΅ΠΆΠΈΠ»ΠΈ с Π½ΠΈΠΌ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π½Ρ‹Ρ… интСрСсных ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ². БСгодня я повСдаю Π²Π°ΠΌ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΆΠ°Ρ‚ΡŒ ΠΈΠ· «ванильного» Kubernetes Π΅Ρ‰Ρ‘ большС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ для вашСго кластСра. Ready steady go!

ВсС Π²Ρ‹ прСкрасно Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Kubernetes β€” это ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠ°Ρ систСма с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ для оркСстрации ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ; Π½Ρƒ, ΠΈΠ»ΠΈ 5 Π±ΠΈΠ½Π°Ρ€Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ творят магию, управляя ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ Π²Π°ΡˆΠΈΡ… микросСрвисов Π² сСрвСрной срСдС. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, это довольно Π³ΠΈΠ±ΠΊΠΈΠΉ инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ конструктор Lego, для максимальной кастомизации ΠΏΠΎΠ΄ Ρ€Π°Π·Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ.

И Π²Ρ€ΠΎΠ΄Π΅ Π±Ρ‹ всё Ρ…ΠΎΡ€ΠΎΡˆΠΎ: Π·Π°ΠΊΠΈΠ΄Ρ‹Π²Π°ΠΉ сСрваки Π² кластСр, ΠΊΠ°ΠΊ Π΄Ρ€ΠΎΠ²ΠΈΡˆΠΊΠΈ Π² Ρ‚ΠΎΠΏΠΊΡƒ, ΠΈ горя Π½Π΅ Π·Π½Π°ΠΉ. Но Ссли Ρ‚Ρ‹ Π·Π° экологию, Ρ‚ΠΎ Π·Π°Π΄ΡƒΠΌΠ°Π΅ΡˆΡŒΡΡ: «Как я ΠΌΠΎΠ³Ρƒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ огонь Π² ΠΏΠ΅Ρ‡ΠΊΠ΅ ΠΈ лСс ΠΏΠΎΠΆΠ°Π»Π΅Ρ‚ΡŒ?Β». Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΊΠ°ΠΊ Π½Π°ΠΉΡ‚ΠΈ способы ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ инфраструктуры ΠΈ сниТСния Π·Π°Ρ‚Ρ€Π°Ρ‚.

1. Π‘Π»Π΅Π΄ΠΈΡ‚Π΅ Π·Π° рСсурсами ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ

Π”Π΅Π²ΡΡ‚ΡŒ совСтов ΠΏΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Kubernetes

Один ΠΈΠ· самых Π±Π°Π½Π°Π»ΡŒΠ½Ρ‹Ρ…, Π½ΠΎ дСйствСнных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² β€” Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ requests/limits. РаздСляйтС прилоТСния ΠΏΠΎ нСймспСйсам, Π° нСймспСйсы ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π—Π°Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ ΠΏΠ΅Ρ€Π΅Π΄ Π΄Π΅ΠΏΠ»ΠΎΠ΅ΠΌ значСния ΠΏΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΡŽ процСссорного Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, памяти, эфСмСрного Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°.

resources:
   requests:
     memory: 2Gi
     cpu: 250m
   limits:
     memory: 4Gi
     cpu: 500m

ΠžΠΏΡ‹Ρ‚Π½Ρ‹ΠΌ ΠΏΡƒΡ‚Ρ‘ΠΌ ΠΌΡ‹ ΠΏΡ€ΠΈΡˆΠ»ΠΈ ΠΊ Π²Ρ‹Π²ΠΎΠ΄Ρƒ: Π½Π΅ стоит Ρ€Π°Π·Π΄ΡƒΠ²Π°Ρ‚ΡŒ рСквСсты ΠΎΡ‚ Π»ΠΈΠΌΠΈΡ‚ΠΎΠ² Π±ΠΎΠ»Π΅Π΅, Ρ‡Π΅ΠΌ Π² Π΄Π²Π° Ρ€Π°Π·Π°. ΠžΠ±ΡŠΡ‘ΠΌ кластСра рассчитываСтся исходя ΠΈΠ· рСквСстов, ΠΈ Ссли Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСниям Ρ€Π°Π·Π½ΠΈΡ†Ρƒ Π² рСсурсах, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² 5-10 Ρ€Π°Π·, Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ станСт с вашСй Π½ΠΎΠ΄ΠΎΠΉ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° заполнится ΠΏΠΎΠ΄Π°ΠΌΠΈ ΠΈ Ρ€Π΅Π·ΠΊΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ. НичСго Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ. Как ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, Ρ‚Ρ€ΠΎΡ‚Ρ‚Π»ΠΈΠ½Π³, Π° ΠΊΠ°ΠΊ максимум, ΠΏΠΎΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚Π΅ΡΡŒ с Π²ΠΎΡ€ΠΊΠ΅Ρ€ΠΎΠΌ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π½ΡƒΡŽ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π½ΠΎΠ΄Ρ‹ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Ρ‹ Π½Π°Ρ‡Π½ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΅Π·ΠΆΠ°Ρ‚ΡŒ.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ limitranges Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π° стартС Π·Π°Π΄Π°Ρ‚ΡŒ для ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° значСния ΠΏΠΎ рСсурсам β€” ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅, ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ:

➜  ~ kubectl describe limitranges --namespace ops
Name:       limit-range
Namespace:  ops
Type        Resource           Min   Max   Default Request  Default Limit  Max Limit/Request Ratio
----        --------           ---   ---   ---------------  -------------  -----------------------
Container   cpu                50m   10    100m             100m           2
Container   ephemeral-storage  12Mi  8Gi   128Mi            4Gi            -
Container   memory             64Mi  40Gi  128Mi            128Mi          2

НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ рСсурсы нСймспСйса, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π΅ смогла Π·Π°Π±Ρ€Π°Ρ‚ΡŒ всС рСсурсы кластСра:

➜  ~ kubectl describe resourcequotas --namespace ops
Name:                   resource-quota
Namespace:              ops
Resource                Used          Hard
--------                ----          ----
limits.cpu              77250m        80
limits.memory           124814367488  150Gi
pods                    31            45
requests.cpu            53850m        80
requests.memory         75613234944   150Gi
services                26            50
services.loadbalancers  0             0
services.nodeports      0             0

Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· описания resourcequotas, Ссли ΠΊΠΎΠΌΠ°Π½Π΄Π° ops Π·Π°Ρ…ΠΎΡ‡Π΅Ρ‚ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΏΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡ‚ΡŒ Π΅Ρ‰Π΅ 10 cpu, Ρ‚ΠΎ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ Π½Π΅ даст это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈ выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ:

Error creating: pods "nginx-proxy-9967d8d78-nh4fs" is forbidden: exceeded quota: resource-quota, requested: limits.cpu=5,requests.cpu=5, used: limits.cpu=77250m,requests.cpu=53850m, limited: limits.cpu=10,requests.cpu=10

Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ инструмСнт, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°ΠΊ этот, ΡƒΠΌΠ΅ΡŽΡ‰ΠΈΠΉ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΡ‚ΡŒ состояниС рСсурсов ΠΊΠΎΠΌΠ°Π½Π΄.

2. ΠŸΠΎΠ΄Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅

Π”Π΅Π²ΡΡ‚ΡŒ совСтов ΠΏΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Kubernetes

Π—Π΄Π΅ΡΡŒ я Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ ΠΊΠΎΡΠ½ΡƒΡ‚ΡŒΡΡ Ρ‚Π΅ΠΌΡ‹ пСрсистСнтных Ρ‚ΠΎΠΌΠΎΠ² ΠΈ дисковой подсистСмы worker-Π½ΠΎΠ΄ Kubernetes. Π― надСюсь, Ρ‡Ρ‚ΠΎ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Β«ΠšΡƒΠ±Β» Π½Π° HDD Π² ΠΏΡ€ΠΎΠ΄Π΅, Π½ΠΎ ΠΏΠΎΡ€ΠΎΠΉ ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ SSD ΡƒΠΆΠ΅ становится ΠΌΠ°Π»ΠΎ. ΠœΡ‹ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡŒ с Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Ρ‡Ρ‚ΠΎ Π»ΠΎΠ³ΠΈ ΡƒΠ±ΠΈΠ²Π°Π»ΠΈ диск ΠΏΠΎ опСрациям Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°, ΠΈ Ρ‚ΡƒΡ‚ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ:

  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ SSD ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° NVMe (Ссли Π²Ρ‹ сами Ρ€Π°ΡΠΏΠΎΡ€ΡΠΆΠ°Π΅Ρ‚Π΅ΡΡŒ своим ΠΆΠ΅Π»Π΅Π·ΠΎΠΌ).

  • Π£ΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Турналирования.

  • Π”Π΅Π»Π°Ρ‚ΡŒ Β«ΡƒΠΌΠ½ΡƒΡŽΒ» балансировку ΠΏΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°ΡΠΈΠ»ΡƒΡŽΡ‚ диск (podAntiAffinity).

Π‘ΠΊΡ€ΠΈΠ½ Π²Ρ‹ΡˆΠ΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ происходит ΠΏΠΎΠ΄ nginx-ingress-controller с диском, ΠΊΠΎΠ³Π΄Π° Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ ΠΆΡƒΡ€Π½Π°Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ access_logs (~12 тыс. ΠΆΡƒΡ€Π½Π°Π»ΠΎΠ²/сСк.). Π’Π°ΠΊΠΎΠ΅ состояниС, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ Π΄Π΅Π³Ρ€Π°Π΄Π°Ρ†ΠΈΠΈ всСх ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° этой Π½ΠΎΠ΄Π΅.

Π§Ρ‚ΠΎ касаСтся PV, ΡƒΠ²Ρ‹, я Π½Π΅ испробовал всС Π²ΠΈΠ΄Ρ‹ Persistent Volumes. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π»ΡƒΡ‡ΡˆΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Π°ΠΌ. Π£ нас историчСски Ρ‚Π°ΠΊ слоТилось, Ρ‡Ρ‚ΠΎ нСбольшая Ρ‡Π°ΡΡ‚ΡŒ сСрвисов нуТдаСтся Π² RWX-Ρ‚ΠΎΠΌΠ°Ρ…, ΠΈ Π΄Π°Π²Π½Ρ‹ΠΌ-Π΄Π°Π²Π½ΠΎ ΠΏΠΎΠ΄ эту Π·Π°Π΄Π°Ρ‡Ρƒ стали ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ NFS-Ρ…Ρ€Π°Π½ΠΈΠ»ΠΊΡƒ. Π”Ρ‘ΡˆΠ΅Π²ΠΎ ΠΈ… Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΌΡ‹ с Π½ΠΈΠΌ наСлись Π³ΠΎΠ²Π½Π° β€” Π±ΡƒΠ΄ΡŒ Π·Π΄ΠΎΡ€ΠΎΠ², Π½ΠΎ Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ Π΅Π³ΠΎ Ρ‚ΡŽΠ½ΠΈΡ‚ΡŒ, ΠΈ Π³ΠΎΠ»ΠΎΠ²Π° большС Π½Π΅ Π±ΠΎΠ»ΠΈΡ‚. А Ссли Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ S3.

3. Π‘ΠΎΠ±ΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π·Ρ‹

Π”Π΅Π²ΡΡ‚ΡŒ совСтов ΠΏΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Kubernetes

Π›ΡƒΡ‡ΡˆΠ΅ всСго ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ΄ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΎΠ±Ρ€Π°Π·Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Kubernetes ΠΌΠΎΠ³ быстрСС Π΄ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒ ΠΈΡ… ΠΈ эффСктивнСС ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒ. 

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π·Ρ‹:

  • содСрТат Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ;

  • нСбольшого Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ большиС ΠΎΠ±Ρ€Π°Π·Ρ‹ Ρ…ΡƒΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠΎ сСти;

  • ΠΈΠΌΠ΅ΡŽΡ‚ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ работоспособности ΠΈ готовности, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Kubernetes ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ дСйствия Π² случаС простоСв;

  • ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π΄Ρ€ΡƒΠΆΠ΅Π»ΡŽΠ±Π½Ρ‹Π΅ ΠΊ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы (Π²Ρ€ΠΎΠ΄Π΅ Alpine ΠΈΠ»ΠΈ CoreOS), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΠΎΠ»Π΅Π΅ устойчивы ΠΊ ошибкам конфигурирования;

  • ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ многоэтапныС сборки, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ скомпилированныС прилоТСния, Π° Π½Π΅ ΡΠΎΠΏΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ исходники.

Π•ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ инструмСнтов ΠΈ сСрвисов, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π·Ρ‹ Π½Π° Π»Π΅Ρ‚Ρƒ. Π’Π°ΠΆΠ½ΠΎ всСгда ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ состоянии ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌΠΈ Π½Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ. Π’ ΠΈΡ‚ΠΎΠ³Π΅ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅:

  1. Π‘Π½ΠΈΠΆΠ΅Π½ΠΈΠ΅ сСтСвой Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° вСсь кластСр.

  2. УмСньшСниС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ запуска ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.

  3. МСньший ΠΎΠ±ΡŠΡ‘ΠΌ всСго вашСго Docker registry.

4. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ кэш ДНБ

Π”Π΅Π²ΡΡ‚ΡŒ совСтов ΠΏΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Kubernetes

Если Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ высоких Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ°Ρ…, Ρ‚ΠΎ Π±Π΅Π· Ρ‚ΡŽΠ½ΠΈΠ½Π³Π° DNS-систСмы кластСра ΠΆΠΈΡ‚ΡŒ довольно ΠΏΠ°Ρ€ΡˆΠΈΠ²ΠΎ. Когда-Ρ‚ΠΎ Π΄Π°Π²Π½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Kubernetes ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π»ΠΈ своё Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ kube-dns. Оно Π±Ρ‹Π»ΠΎ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΎ ΠΈ Ρƒ нас, Π½ΠΎ эта софтина особо Π½Π΅ Ρ‚ΡŽΠ½ΠΈΠ»Π°ΡΡŒ ΠΈ Π½Π΅ Π²Ρ‹Π΄Π°Π²Π°Π»Π° Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, хотя, Π²Ρ€ΠΎΠ΄Π΅ Π±Ρ‹, Π·Π°Π΄Π°Ρ‡Π° простая. Π—Π°Ρ‚Π΅ΠΌ появился coredns, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΡˆΠ»ΠΈ ΠΈ горя Π½Π΅ Π·Π½Π°Π»ΠΈ, впослСдствии ΠΎΠ½ ΠΆΠ΅ стал DNS-сСрвисом ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² K8s. Π’ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΡ‹ доросли Π΄ΠΎ 40 тыс. rps ΠΊ DNS-систСмС, ΠΈ этого Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ‚ΠΎΠΆΠ΅ стало Π½Π΅ Ρ…Π²Π°Ρ‚Π°Ρ‚ΡŒ. Но, ΠΏΠΎ счастливой случайности, Π²Ρ‹ΡˆΠ΅Π» Nodelocaldns, ΠΎΠ½ ΠΆΠ΅ node local cache, ΠΎΠ½ ΠΆΠ΅ NodeLocal DNSCache.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΌΡ‹ это ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ? Π’ ядрС Linux Π΅ΡΡ‚ΡŒ Π±Π°Π³, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈ мноТСствСнном ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· conntrack NAT ΠΏΠΎ UDP ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ Π³ΠΎΠ½ΠΊΠΈ Π·Π° запись Π² conntrack-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΈ Ρ‡Π°ΡΡ‚ΡŒ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Ρ‡Π΅Ρ€Π΅Π· NAT тСряСтся (ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΡ…ΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· Service β€” это NAT). Nodelocaldns Ρ€Π΅ΡˆΠ°Π΅Ρ‚ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΏΡƒΡ‚Π΅ΠΌ избавлСния ΠΎΡ‚ NAT ΠΈ Π°ΠΏΠ³Ρ€Π΅ΠΉΠ΄Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π΄ΠΎ TCP ΠΊ апстримовым DNS, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ DNS-запросов ΠΊ апстримам (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ 5-сСкундный Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ кэш).

5. ΠœΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΠΎΠ΄Ρ‹ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΈ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ автоматичСски

Π”Π΅Π²ΡΡ‚ΡŒ совСтов ΠΏΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Kubernetes

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ с ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ всС ваши микросСрвисы Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΊ Π΄Π²ΡƒΡ…-Ρ‚Ρ€Ρ‘ΠΊΡ€Π°Ρ‚Π½ΠΎΠΌΡƒ росту Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ? Как ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ рСсурсы своим прилоТСниям? Π”Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Ρƒ ΠΏΠΎΠ΄ΠΎΠ² свСрх Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ, Π° Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π²ΠΏΡ€ΠΈΡ‚Ρ‹ΠΊ β€” рискуСтС ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ простой ΠΎΡ‚ Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎΠ³ΠΎ роста Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π½Π° сСрвис. Π—ΠΎΠ»ΠΎΡ‚ΠΎΠΉ сСрСдины ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ заклятиС умноТСния Ρ‚Π°ΠΊΠΈΠ΅ сСрвисы, ΠΊΠ°ΠΊ Horizontal Pod Autoscaler ΠΈ Vertical Pod Autoscaler.

VPA позволяСт автоматичСски ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Ρ‚ΡŒ requests/limits Π²Π°ΡˆΠΈΡ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Π² ΠΏΠΎΠ΄Π΅ Π² зависимости ΠΎΡ‚ фактичСского использования. Π§Π΅ΠΌ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π΅Π½? Если Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нСльзя ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΎΡ‚ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ (Ρ‡Ρ‚ΠΎ Π½Π΅ совсСм Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎ), Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ рСсурсов VPA. Π•Π³ΠΎ Ρ„ΠΈΡˆΠΊΠ° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² систСмС Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ Π½Π° основС историчСских ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· metric-server, поэтому, Ссли Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ автоматичСски ΠΌΠ΅Π½ΡΡ‚ΡŒ requests/limits, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹Π΅ рСсурсы для Π²Π°ΡˆΠΈΡ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ настройки для экономии процСссора ΠΈ памяти Π² кластСрС.

Π”Π΅Π²ΡΡ‚ΡŒ совСтов ΠΏΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ KubernetesΠ˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ взято с https://levelup.gitconnected.com/kubernetes-autoscaling-101-cluster-autoscaler-horizontal-pod-autoscaler-and-vertical-pod-2a441d9ad231

ΠŸΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ Π² Kubernetes всСгда основываСтся Π½Π° requests. КакоС Π±Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Ρ‹ Ρ‚ΡƒΠ΄Π° Π½Π΅ поставили, ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΡΡ‰ΡƒΡŽ Π½ΠΎΠ΄Ρƒ, исходя ΠΈΠ· Π½Π΅Π³ΠΎ. ЗначСния limits Π½ΡƒΠΆΠ½Ρ‹ ΠΊΡƒΠ±Π»Π΅Ρ‚Ρƒ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° Ρ‚Ρ€ΠΎΡ‚Ρ‚Π»ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ±ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄. И ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ СдинствСнный Π²Π°ΠΆΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ β€” Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ requests, VPA Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½ΠΈΠΌ. Всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π·Π°Π΄Π°Ρ‘Ρ‚Π΅ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ прилоТСния, Π²Ρ‹ опрСдСляСтС, ΠΊΠ°ΠΊΠΈΠΌΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ requests. А Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠ³Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ с limits? Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ ΠΎΡ‚ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½.

К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π²ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ настройки ΠΏΠΎΠ΄Π°:

resources:
   requests:
     memory: 250Mi
     cpu: 200m
   limits:
     memory: 500Mi
     cpu: 350m

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ опрСдСляСт, Ρ‡Ρ‚ΠΎ Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ для Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ трСбуСтся 300m CPU ΠΈ 500Mi. Π’Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΈΠ΅ настройки:

resources:
   requests:
     memory: 500Mi
     cpu: 300m
   limits:
     memory: 1000Mi
     cpu: 525m

Как ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Π²Ρ‹ΡˆΠ΅, это ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ исходя ΠΈΠ· ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ requests/limits Π² манифСстС:

  • CPU: 200m β†’ 300m: ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ 1:1.75;

  • Memory: 250Mi β†’ 500Mi: ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ 1:2.

Π§Ρ‚ΠΎ касаСтся HPA, Ρ‚ΠΎ Ρ‚ΡƒΡ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Π΅ΠΉ. Π’Ρ‹ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎΡ€ΠΎΠ³ΠΎΠ²Ρ‹Π΅ значСния ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, процСссора ΠΈ памяти, ΠΈ Ссли срСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ всСх Ρ€Π΅ΠΏΠ»ΠΈΠΊ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ ΠΏΠΎΡ€ΠΎΠ³ΠΎΠ²ΠΎΠ΅, Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ Π½Π° +1 ΠΏΠΎΠ΄ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ ΡƒΠΏΠ°Π΄Π΅Ρ‚ Π½ΠΈΠΆΠ΅ ΠΏΠΎΡ€ΠΎΠ³Π°, Π»ΠΈΠ±ΠΎ ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ достигнуто максимальноС количСство Ρ€Π΅ΠΏΠ»ΠΈΠΊ.

Π”Π΅Π²ΡΡ‚ΡŒ совСтов ΠΏΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ KubernetesΠ˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ взято с https://levelup.gitconnected.com/kubernetes-autoscaling-101-cluster-autoscaler-horizontal-pod-autoscaler-and-vertical-pod-2a441d9ad231

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

6. НС Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎ Node Affinity ΠΈ Pod Affinity

Π”Π΅Π²ΡΡ‚ΡŒ совСтов ΠΏΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Kubernetes

НС всС ΡƒΠ·Π»Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΌ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ, Π½Π΅ всСм ΠΏΠΎΠ΄Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒ прилоТСния, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠ΅ интСнсивных вычислСний. Kubernetes позволяСт Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π½ΠΎΠ΄ ΠΈ ΠΏΠΎΠ΄ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Node Affinity ΠΈ Pod Affinity.

Если Ρƒ вас Π΅ΡΡ‚ΡŒ Π½ΠΎΠ΄Ρ‹, подходящиС для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с интСнсивными вычислСниями, Ρ‚ΠΎ для максимальной эффСктивности Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΡ€ΠΈΠ²ΡΠ·Π°Ρ‚ΡŒ прилоТСния ΠΊ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ Π½ΠΎΠ΄Π°ΠΌ. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ nodeSelector с ΠΌΠ΅Ρ‚ΠΊΠΎΠΉ ΡƒΠ·Π»Π°.

Допустим, Ρƒ вас Π΄Π²Π΅ Π½ΠΎΠ΄Ρ‹: ΠΎΠ΄Π½Π° с CPUType=HIGHFREQ ΠΈ большим количСством быстрых ядСр, другая с MemoryType=HIGHMEMORY большим количСством памяти ΠΈ Π±ΠΎΠ»Π΅Π΅ высоким быстродСйствиСм. ΠŸΡ€ΠΎΡ‰Π΅ всСго Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π° Π½ΠΎΠ΄Π΅ HIGHFREQ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π² Ρ€Π°Π·Π΄Π΅Π» spec Ρ‚Π°ΠΊΠΎΠΉ сСлСктор:

…
nodeSelector:
	CPUType: HIGHFREQ

Π‘ΠΎΠ»Π΅Π΅ Π·Π°Ρ‚Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΈ спСцифичный способ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ nodeAffinity Π² ΠΏΠΎΠ»Π΅ affinity Ρ€Π°Π·Π΄Π΅Π»Π° spec. Π•ΡΡ‚ΡŒ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°:

  • requiredDuringSchedulingIgnoredDuringExecution: Тёсткая настройка (ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Π½ΠΎΠ΄Π°Ρ… (ΠΈ Π½ΠΈΠ³Π΄Π΅ большС));

  • preferredDuringSchedulingIgnoredDuringExecution: мягкая настройка (ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ попытаСтся Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Π½ΠΎΠ΄Π°Ρ…, Π° Ссли Π½Π΅ получится, Ρ‚ΠΎ попытаСтся Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ доступной Π½ΠΎΠ΄Π΅).

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΉ синтаксис управлСния ΠΌΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ ΡƒΠ·Π»ΠΎΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, In, NotIn, Exists, DoesNotExist, Gt ΠΈΠ»ΠΈ Lt. Однако ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ слоТныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… списках ΠΌΠ΅Ρ‚ΠΎΠΊ замСдлят принятиС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Π² критичСских ситуациях. Π˜Π½Ρ‹ΠΌΠΈ словами, Π½Π΅ услоТняйтС.

Как ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Π²Ρ‹ΡˆΠ΅, Kubernetes позволяСт Π·Π°Π΄Π°Ρ‚ΡŒ привязку Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ… ΠΏΠΎΠ΄ΠΎΠ². Π’ΠΎ Π΅ΡΡ‚ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ вмСстС с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΠΎΠ΄Π°ΠΌΠΈ Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ Π·ΠΎΠ½Π΅ доступности (Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ для ΠΎΠ±Π»Π°ΠΊΠΎΠ²) ΠΈΠ»ΠΈ Π½ΠΎΠ΄Π°Ρ….

Π’ podAffinity поля affinity Ρ€Π°Π·Π΄Π΅Π»Π° spec доступны Ρ‚Π΅ ΠΆΠ΅ поля, Ρ‡Ρ‚ΠΎ ΠΈ Π² случаС с nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution ΠΈ preferredDuringSchedulingIgnoredDuringExecution. ЕдинствСнноС ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ matchExpressions привяТСт ΠΏΠΎΠ΄Ρ‹ ΠΊ Π½ΠΎΠ΄Π΅, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΡƒΠΆΠ΅ исполняСтся ΠΏΠΎΠ΄ с Ρ‚Π°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΊΠΎΠΉ.

Π•Ρ‰Ρ‘ Kubernetes ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΏΠΎΠ»Π΅ podAntiAffinity, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅, Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ², Π½Π΅ привязываСт ΠΏΠΎΠ΄ ΠΊ Π½ΠΎΠ΄Π΅ с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌΠΈ ΠΏΠΎΠ΄Π°ΠΌΠΈ.

Насчёт Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ nodeAffinity ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΆΠ΅ совСт: ΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ простоту ΠΈ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ», Π½Π΅ Π½Π°Π΄ΠΎ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΏΠΎΠ΄ΠΎΠ² слоТным Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΏΡ€Π°Π²ΠΈΠ». ΠžΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ условиям кластСра, создав лишнюю Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ ΠΈ снизив ΠΎΠ±Ρ‰ΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

7. Taints & Tolerations

Π•ΡΡ‚ΡŒ Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ способ управлСния ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠΌ. Если Ρƒ вас большой кластСр с сотнями Π½ΠΎΠ΄ ΠΈ тысячами микросСрвисов, Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ слоТно Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌ ΠΏΠΎΠ΄Π°ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… Π½ΠΎΠ΄Π°Ρ….

Π’ этом ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ taints β€” Π·Π°ΠΏΡ€Π΅Ρ‰Π°ΡŽΡ‰ΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ». НапримСр, ΠΌΠΎΠΆΠ½ΠΎ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… сцСнариях Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Π½ΠΎΠ΄Π°ΠΌ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Ρƒ сСбя ΠΏΠΎΠ΄Ρ‹. Для примСнСния taint ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ ΡƒΠ·Π»Ρƒ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ†ΠΈΡŽ taint Π² kubectl. Π£ΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΊΠ»ΡŽΡ‡ ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π° Π·Π°Ρ‚Π΅ΠΌ taint Π²Ρ€ΠΎΠ΄Π΅ NoSchedule ΠΈΠ»ΠΈ NoExecute:

$ kubectl taint nodes node10 node-role.kubernetes.io/ingress=true:NoSchedule

Π’Π°ΠΊΠΆΠ΅ стоит ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ taint ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚Ρ€ΠΈ основных эффСкта: NoSchedule, NoExecute ΠΈ PreferNoSchedule.

  • NoSchedule ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΊΠ° Π² спСцификации ΠΏΠΎΠ΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ записи tolerations, ΠΎΠ½ Π½Π΅ смоТСт Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ Π½Π° Π½ΠΎΠ΄Π΅ (Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ node10).

  • PreferNoSchedule β€” упрощённая вСрсия NoSchedule. Π’ этом случаС ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ попытаСтся Π½Π΅ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΏΠΎΠ΄Ρ‹, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ записи tolerations Π½Π° Π½ΠΎΠ΄Ρƒ, Π½ΠΎ это Π½Π΅ ТёсткоС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅. Если Π² кластСрС Π½Π΅ окаТСтся рСсурсов, Ρ‚ΠΎ ΠΏΠΎΠ΄Ρ‹ Π½Π°Ρ‡Π½ΡƒΡ‚ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π½Π° этой Π½ΠΎΠ΄Π΅.

  • NoExecute β€” этот эффСкт запускаСт Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡƒΡŽ ΡΠ²Π°ΠΊΡƒΠ°Ρ†ΠΈΡŽ ΠΏΠΎΠ΄ΠΎΠ², Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ записи tolerations.

Π›ΡŽΠ±ΠΎΠΏΡ‹Ρ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° tolerations. Π­Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π΅ΡΡ‚ΡŒ «запрСщСнная» Π½ΠΎΠ΄Π° ΠΈ Π²Π°ΠΌ понадобилось Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π½Π° Π½Π΅ΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ инфраструктурныС сСрвисы. Как это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ? Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ ΠΏΠΎΠ΄Ρ‹, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅ΡΡ‚ΡŒ подходящий toleration.

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ спСцификация ΠΏΠΎΠ΄Π°:

spec:
   tolerations:
     - key: "node-role.kubernetes.io/ingress"
        operator: "Equal"
        value: "true"
        effect: "NoSchedule"

Π­Ρ‚ΠΎ Π½Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π΅Π΄Π΅ΠΏΠ»ΠΎΠ΅ ΠΏΠΎΠ΄ ΠΏΠΎΠΏΠ°Π΄Π΅Ρ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° эту Π½ΠΎΠ΄Ρƒ, это Π½Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Node Affinity ΠΈ nodeSelector. Но комбинируя нСсколько Ρ„ΠΈΡ‡, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΎΡ‡Π΅Π½ΡŒ Π³ΠΈΠ±ΠΊΠΎΠΉ настройки ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ°.

8. НастройтС ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ развСртывания ΠΏΠΎΠ΄ΠΎΠ²

Π’ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ настроили привязку ΠΏΠΎΠ΄ΠΎΠ² ΠΊ Π½ΠΎΠ΄Π°ΠΌ, Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ всС ΠΏΠΎΠ΄Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ. НапримСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Ρ…ΠΎΡ‚Π΅Ρ‚ΡŒ Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΏΠΎΠ΄Ρ‹ Ρ€Π°Π½ΡŒΡˆΠ΅ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ….

Kubernetes ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Ρ€Π°Π·Π½Ρ‹Π΅ способы настройки приоритСтности ΠΏΠΎΠ΄ΠΎΠ² (Pod Priority and Preemption). Настройка состоит ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… частСй: ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° PriorityClass ΠΈ описания поля priorityClassName Π² спСцификации ΠΏΠΎΠ΄Π°. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
  name: high-priority
value: 99999
globalDefault: false
description: "This priority class should be used for very important pods only"

ΠœΡ‹ создаСм PriorityClass, Π·Π°Π΄Π°Π΅ΠΌ Π΅ΠΌΡƒ имя, описаниС ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π§Π΅ΠΌ Π²Ρ‹ΡˆΠ΅ value, Ρ‚Π΅ΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹ΠΌ 32-Π±ΠΈΡ‚Π½Ρ‹ΠΌ Ρ†Π΅Π»Ρ‹ΠΌ числом, мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½Ρ‹ΠΌ 1 000 000 000. Π‘ΠΎΠ»Π΅Π΅ высокиС значСния Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ для критичСски Π²Π°ΠΆΠ½Ρ‹Ρ… систСмных ΠΏΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ вытСснСны. ВытСснСниС Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли высокоприоритСтному ΠΏΠΎΠ΄Ρƒ Π½Π΅Π³Π΄Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ, Ρ‚ΠΎΠ³Π΄Π° Ρ‡Π°ΡΡ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ² с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π½ΠΎΠ΄Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ эвакуированы. Если для вас этот ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ слишком Тёсткий, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΎΠΏΡ†ΠΈΡŽ preemptionPolicy: Never, ΠΈ Ρ‚ΠΎΠ³Π΄Π° вытСснСния Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚, ΠΏΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‚ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΈ ΠΆΠ΄Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ Π½Π°ΠΉΠ΄Ρ‘Ρ‚ для Π½Π΅Π³ΠΎ свободныС рСсурсы.

Π”Π°Π»Π΅Π΅ ΠΌΡ‹ создаСм ΠΏΠΎΠ΄, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ имя priorityClassName:

apiVersion: v1
kind: Pod
metadata:
  name: static-web
  labels:
    role: myrole
 spec:
  containers:
    - name: web
      image: nginx
      ports:
        - name: web
          containerPort: 80
          protocol: TCP
  priorityClassName: high-priority
          

МоТно ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ сколько ΡƒΠ³ΠΎΠ΄Π½ΠΎ классов приоритСтности, хотя рСкомСндуСтся Π½Π΅ ΡƒΠ²Π»Π΅ΠΊΠ°Ρ‚ΡŒΡΡ этим (скаТСм, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒΡΡ Π½ΠΈΠ·ΠΊΠΈΠΌ, срСдним ΠΈ высоким ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ).

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π² случаС нСобходимости Π²Ρ‹ смоТСтС ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ развёртывания ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Ρ… сСрвисов, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ nginx-ingress-controller, coredns ΠΈ Ρ‚.ΠΏ.

9. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ ETCD-кластСр

Π”Π΅Π²ΡΡ‚ΡŒ совСтов ΠΏΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Kubernetes

ETCD ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°Ρ‚ΡŒ ΠΌΠΎΠ·Π³ΠΎΠΌ всСго кластСра. ΠžΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ этой Π‘Π” Π½Π° высоком ΡƒΡ€ΠΎΠ²Π½Π΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΡ‚ Π½Π΅Π΅ зависит ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² Β«ΠšΡƒΠ±Π΅Β». Достаточно стандартным, ΠΈ Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя Π½Π΅ΠΏΠ»ΠΎΡ…ΠΈΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ кластСр ETCD Π½Π° мастСр-Π½ΠΎΠ΄Π°Ρ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ Π΄ΠΎ kube-apiserver. Если Π½Π΅ получаСтся Ρ‚Π°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‚ΠΎ располагайтС ETCD ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±Π»ΠΈΠΆΠ΅, имСя Ρ…ΠΎΡ€ΠΎΡˆΡƒΡŽ ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ½ΡƒΡŽ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ участниками. Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, сколько Π½ΠΎΠ΄ ΠΈΠ· ETCD ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠ°ΡΡ‚ΡŒ Π±Π΅Π· Π²Ρ€Π΅Π΄Π° для кластСра

Π”Π΅Π²ΡΡ‚ΡŒ совСтов ΠΏΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Kubernetes

Π˜ΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎΠ΅ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ количСства участников Π² кластСрС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΎΡ‚ΠΊΠ°Π·ΠΎΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ Π² ΡƒΡ‰Π΅Ρ€Π± ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, всё Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π² ΠΌΠ΅Ρ€Ρƒ.

Если Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ настройкС сСрвиса, Ρ‚ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ:

  1. Π˜ΠΌΠ΅Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ ΠΆΠ΅Π»Π΅Π·ΠΎ, исходя ΠΈΠ· Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² кластСра (ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ‚ΡƒΡ‚).

  2. ΠŸΠΎΠ΄ΠΊΡ€ΡƒΡ‚ΠΈΡ‚ΡŒ нСсколько ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Ссли Π²Ρ‹ Ρ€Π°Π·ΠΌΠ°Π·Π°Π»ΠΈ кластСр ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ°Ρ€ΠΎΠΉ Π”Π¦ ΠΈΠ»ΠΈ ваша ΡΠ΅Ρ‚ΡŒ ΠΈ диски ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΆΠ΅Π»Π°Ρ‚ΡŒ Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ (ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ‚ΡƒΡ‚).

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ описаны ΠΏΡƒΠ½ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ наша ΠΊΠΎΠΌΠ°Π½Π΄Π° стараСтся ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ. Π­Ρ‚ΠΎ Π½Π΅ пошаговоС описаниС дСйствий, Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов Π½Π° кластСр. ΠŸΠΎΠ½ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ кластСр ΠΏΠΎ-своСму ΡƒΠ½ΠΈΠΊΠ°Π»Π΅Π½, ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎ настройкС ΠΌΠΎΠ³ΡƒΡ‚ сильно Ρ€Π°Π·Π½ΠΈΡ‚ΡŒΡΡ, поэтому Π±Ρ‹Π»ΠΎ Π±Ρ‹ интСрСсно ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΡ‚ вас ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ связь: ΠΊΠ°ΠΊ Π²Ρ‹ слСдитС Π·Π° своим кластСром Kubernetes, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‡Π΅Π³ΠΎ Π²Ρ‹ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚Π΅ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρƒ. Π”Π΅Π»ΠΈΡ‚Π΅ΡΡŒ своим ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ Π² коммСнтариях, Π±ΡƒΠ΄Π΅Ρ‚ интСрСсно Π΅Π³ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ.

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