Π”Π΅Π²Π΅Ρ‚ ΡΡŠΠ²Π΅Ρ‚Π° Π·Π° СфСктивност Π½Π° Kubernetes

Π”Π΅Π²Π΅Ρ‚ ΡΡŠΠ²Π΅Ρ‚Π° Π·Π° СфСктивност Π½Π° Kubernetes

Π—Π΄Ρ€Π°Π²Π΅ΠΉΡ‚Π΅ всички! Казвам сС ОлСг Π‘ΠΈΠ΄ΠΎΡ€Π΅Π½ΠΊΠΎΠ², работя Π² DomClick ΠΊΠ°Ρ‚ΠΎ Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π» Π½Π° инфраструктурСн Π΅ΠΊΠΈΠΏ. ИзползвамС Cube Π·Π° ΠΏΡ€ΠΎΠ΄Π°ΠΆΠ±Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ Ρ‚Ρ€ΠΈ Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΠΈ ΠΏΡ€Π΅Π· Ρ‚ΠΎΠ²Π° Π²Ρ€Π΅ΠΌΠ΅ смС ΠΏΡ€Π΅ΠΆΠΈΠ²Π΅Π»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ интСрСсни ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΈ с Π½Π΅Π³ΠΎ. ДнСс Ρ‰Π΅ Π²ΠΈ ΠΊΠ°ΠΆΠ° ΠΊΠ°ΠΊ, с правилния ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° изстискатС ΠΎΡ‰Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅ производитСлност ΠΎΡ‚ ванилия Kubernetes Π·Π° вашия ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€. Π“ΠΎΡ‚ΠΎΠ²ΠΈ, ΠΏΡ€ΠΈΠ³ΠΎΡ‚Π²ΠΈ сС, старт!

Всички Π·Π½Π°Π΅Ρ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±Ρ€Π΅, Ρ‡Π΅ Kubernetes Π΅ ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠ° систСма с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ Π·Π° оркСстрация Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ; Π΄ΠΎΠ±Ρ€Π΅, ΠΈΠ»ΠΈ 5 Π΄Π²ΠΎΠΈΡ‡Π½ΠΈ Ρ„Π°ΠΉΠ»Π°, ΠΊΠΎΠΈΡ‚ΠΎ правят магия, ΠΊΠ°Ρ‚ΠΎ управляват ТизнСния Ρ†ΠΈΠΊΡŠΠ» Π½Π° Π²Π°ΡˆΠΈΡ‚Π΅ микроуслуги Π² ΡΡŠΡ€Π²ΡŠΡ€Π½Π° срСда. Π’ допълнСниС, Ρ‚ΠΎΠ²Π° Π΅ доста гъвкав инструмСнт, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС сглоби ΠΊΠ°Ρ‚ΠΎ конструктор Lego Π·Π° максимална пСрсонализация Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ.

И всичко ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Π½Π°Ρ€Π΅Π΄: Ρ…Π²ΡŠΡ€Π»Π΅Ρ‚Π΅ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°, ΠΊΠ°Ρ‚ΠΎ Π΄ΡŠΡ€Π²Π° Π·Π° ΠΎΠ³Ρ€Π΅Π² Π² ΠΎΠ³Π½ΠΈΡ‰Π΅ ΠΈ Π½Π΅ ΠΏΠΎΠ·Π½Π°Π²Π°ΠΉΡ‚Π΅ ΡΠΊΡ€ΡŠΠ±Ρ‚Π°. Но Π°ΠΊΠΎ стС Π·Π° ΠΎΠΊΠΎΠ»Π½Π°Ρ‚Π° срСда, Ρ‚ΠΎΠ³Π°Π²Π° Ρ‰Π΅ си помислитС: "Как ΠΌΠΎΠ³Π° Π΄Π° ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°ΠΌ огъня Π² ΠΏΠ΅Ρ‡ΠΊΠ°Ρ‚Π° ΠΈ Π΄Π° съТалявам Π·Π° Π³ΠΎΡ€Π°Ρ‚Π°?". Π‘ Π΄Ρ€ΡƒΠ³ΠΈ Π΄ΡƒΠΌΠΈ, ΠΊΠ°ΠΊ Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΠΌ Π½Π°Ρ‡ΠΈΠ½ΠΈ Π·Π° подобряванС Π½Π° инфраструктурата ΠΈ намаляванС Π½Π° Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈΡ‚Π΅.

1. Π‘Π»Π΅Π΄Π΅Ρ‚Π΅ рСсурситС Π½Π° Π΅ΠΊΠΈΠΏΠ° ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ

Π”Π΅Π²Π΅Ρ‚ ΡΡŠΠ²Π΅Ρ‚Π° Π·Π° СфСктивност Π½Π° Kubernetes

Π•Π΄ΠΈΠ½ ΠΎΡ‚ Π½Π°ΠΉ-Π±Π°Π½Π°Π»Π½ΠΈΡ‚Π΅, Π½ΠΎ Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π΅ Π²ΡŠΠ²Π΅ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° заявки/Π»ΠΈΠΌΠΈΡ‚ΠΈ. Π Π°Π·Π΄Π΅Π»Π΅Ρ‚Π΅ прилоТСнията ΠΏΠΎ пространства ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° ΠΈ пространства ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° ΠΏΠΎ Π΅ΠΊΠΈΠΏΠΈ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°. Π—Π°Π΄Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° Π²Π½Π΅Π΄Ρ€ΠΈΡ‚Π΅ стойности Π·Π° ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° процСсорно Π²Ρ€Π΅ΠΌΠ΅, ΠΏΠ°ΠΌΠ΅Ρ‚, ΠΊΡ€Π°Ρ‚ΠΊΠΎΡ‚Ρ€Π°ΠΉΠ½ΠΎ ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅.

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 иска Π΄Π° Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈ pods, ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ консумират ΠΎΡ‰Π΅ 10 процСсора, Ρ‚ΠΎΠ³Π°Π²Π° ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‡ΠΈΠΊΡŠΡ‚ няма Π΄Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Ρ‚ΠΎΠ²Π° Π΄Π° бъдС Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΎ ΠΈ Ρ‰Π΅ ΠΈΠ·Π΄Π°Π΄Π΅ Π³Ρ€Π΅ΡˆΠΊΠ°:

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

Π’ΡƒΠΊ Π±ΠΈΡ… искал Π΄Π° засСгна Ρ‚Π΅ΠΌΠ°Ρ‚Π° Π·Π° постояннитС Ρ‚ΠΎΠΌΠΎΠ²Π΅ ΠΈ дисковата подсистСма Π½Π° Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΡ‚Π΅ възли Π½Π° Kubernetes. Надявам сС, Ρ‡Π΅ Π½ΠΈΠΊΠΎΠΉ Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° "Cube" Π½Π° HDD Π² производството, Π½ΠΎ понякога Π΄ΠΎΡ€ΠΈ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ SSD Π²Π΅Ρ‡Π΅ Π½Π΅ Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π΅Π½. Π‘Π±Π»ΡŠΡΠΊΠ°Ρ…ΠΌΠ΅ сС с Ρ‚Π°ΠΊΡŠΠ² ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Ρ‡Π΅ рСгистрационнитС Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΡƒΠ±ΠΈΠ²Π°Ρ…Π° диска Ρ‡Ρ€Π΅Π· I / O ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ Ρ‚ΡƒΠΊ няма ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ:

  • Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ високопроизводитСлни SSD ΠΈΠ»ΠΈ ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅Ρ‚Π΅ към NVMe (Π°ΠΊΠΎ управляватС собствСния си Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€).

  • НамалСтС Π½ΠΈΠ²ΠΎΡ‚ΠΎ Π½Π° рСгистриранС.

  • НаправСтС "ΠΈΠ½Ρ‚Π΅Π»ΠΈΠ³Π΅Π½Ρ‚Π½ΠΎ" балансиранС Π½Π° ΡˆΡƒΡˆΡƒΠ»ΠΊΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ изнасилват диска (podAntiAffinity).

Π•ΠΊΡ€Π°Π½Π½Π°Ρ‚Π° снимка ΠΏΠΎ-Π³ΠΎΡ€Π΅ ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΊΠ°ΠΊΠ²ΠΎ сС случва ΠΏΠΎΠ΄ nginx-ingress-controller с диск, ΠΊΠΎΠ³Π°Ρ‚ΠΎ access_logs Π΅ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ (~12k logs/sec). Π’Π°ΠΊΠΎΠ²Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅, Ρ€Π°Π·Π±ΠΈΡ€Π° сС, ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ влошаванС Π½Π° всички прилоТСния Π½Π° Ρ‚ΠΎΠ·ΠΈ възСл.

ΠšΠΎΠ»ΠΊΠΎΡ‚ΠΎ Π΄ΠΎ PV, ΡƒΠ²ΠΈ, Π½Π΅ съм ΠΏΡ€ΠΎΠ±Π²Π°Π» всичко. Π²ΠΈΠ΄ΠΎΠ²Π΅ ΠŸΠΎΡΡ‚ΠΎΡΠ½Π½ΠΈ ΠΎΠ±Π΅ΠΌΠΈ. Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ Π½Π°ΠΉ-добрия Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, ΠΊΠΎΠΉΡ‚ΠΎ Π²ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠΆΠ΄Π°. Π˜ΡΡ‚ΠΎΡ€ΠΈΡ‡Π΅ΡΠΊΠΈ сС Π΅ случило Π² Π½Π°ΡˆΠ°Ρ‚Π° страна, Ρ‡Π΅ ΠΌΠ°Π»ΠΊΠ° част ΠΎΡ‚ услугитС сС нуТдаят ΠΎΡ‚ RWX Ρ‚ΠΎΠΌΠΎΠ²Π΅ ΠΈ ΠΏΡ€Π΅Π΄ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Ρ‚Π΅ Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ…Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ NFS ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π·Π° Ρ‚Π°Π·ΠΈ Π·Π°Π΄Π°Ρ‡Π°. Π•Π²Ρ‚ΠΈΠ½ΠΎ ΠΈ ... Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ. Π Π°Π·Π±ΠΈΡ€Π° сС, ядохмС Π»Π°ΠΉΠ½Π° с Π½Π΅Π³ΠΎ - Π±ΡŠΠ΄Π΅Ρ‚Π΅ Π·Π΄Ρ€Π°Π²ΠΈ, Π½ΠΎ сС Π½Π°ΡƒΡ‡ΠΈΡ…ΠΌΠ΅ ΠΊΠ°ΠΊ Π΄Π° Π³ΠΎ настройвамС ΠΈ Π³Π»Π°Π²Π°Ρ‚Π° Π²Π΅Ρ‡Π΅ Π½Π΅ Π³ΠΎ Π±ΠΎΠ»ΠΈ. И Π°ΠΊΠΎ Π΅ възмоТно, ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅Ρ‚Π΅ към ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈ S3.

3. Π‘ΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½ΠΈ изобраТСния

Π”Π΅Π²Π΅Ρ‚ ΡΡŠΠ²Π΅Ρ‚Π° Π·Π° СфСктивност Π½Π° Kubernetes

Най-Π΄ΠΎΠ±Ρ€Π΅ Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ изобраТСния, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½ΠΈ Π·Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Kubernetes Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΈ ΠΈΠ·Π²Π»ΠΈΡ‡Π° ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ ΠΈ Π΄Π° Π³ΠΈ изпълнява ΠΏΠΎ-Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ. 

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡΡ‚Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ изобраТСнията:

  • ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‚ само Π΅Π΄Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ само Π΅Π΄Π½Π° функция;

  • малък Ρ€Π°Π·ΠΌΠ΅Ρ€, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈΡ‚Π΅ изобраТСния сС ΠΏΡ€Π΅Π΄Π°Π²Π°Ρ‚ ΠΏΠΎ-лошо ΠΏΠΎ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°;

  • ΠΈΠΌΠ°Ρ‚ ΠΊΡ€Π°ΠΉΠ½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ Π·Π° Π·Π΄Ρ€Π°Π²Π΅ ΠΈ готовност, ΠΊΠΎΠΈΡ‚ΠΎ Kubernetes ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°, Π·Π° Π΄Π° ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠ΅ΠΌΠ΅ дСйствия Π² случай Π½Π° ΠΏΡ€Π΅ΠΊΡŠΡΠ²Π°Π½Π΅;

  • ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΈ Π·Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ систСми (ΠΊΠ°Ρ‚ΠΎ Alpine ΠΈΠ»ΠΈ CoreOS), ΠΊΠΎΠΈΡ‚ΠΎ са ΠΏΠΎ-устойчиви Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ Π² конфигурацията;

  • ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎΠ΅Ρ‚Π°ΠΏΠ½ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Ρ‚Π΅ само ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½ΠΈ прилоТСния, Π° Π½Π΅ ΠΏΡ€ΠΈΠ΄Ρ€ΡƒΠΆΠ°Π²Π°Ρ‰ΠΈΡ‚Π΅ ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΡ†ΠΈ.

Има ΠΌΠ½ΠΎΠ³ΠΎ инструмСнти ΠΈ услуги, ΠΊΠΎΠΈΡ‚ΠΎ Π²ΠΈ позволяват Π΄Π° провСряватС ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ изобраТСния Π² Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅. Π’Π°ΠΆΠ½ΠΎ Π΅ Π²ΠΈΠ½Π°Π³ΠΈ Π΄Π° Π³ΠΈ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»Π½ΠΈ ΠΈ Π² бСзопасност. Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ²Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚Π΅:

  1. НамалСно ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΎ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅ Π½Π° цСлия ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€.

  2. НамалСно Π²Ρ€Π΅ΠΌΠ΅ Π·Π° стартиранС Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.

  3. По-малък Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π° цСлия Π²ΠΈ Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€ Π½Π° Docker.

4. Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ DNS кСш

Π”Π΅Π²Π΅Ρ‚ ΡΡŠΠ²Π΅Ρ‚Π° Π·Π° СфСктивност Π½Π° Kubernetes

Ако Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π·Π° високи натоварвания, Ρ‚ΠΎΠ³Π°Π²Π° Π±Π΅Π· настройка Π½Π° DNS систСмата Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°, ΠΆΠΈΠ²ΠΎΡ‚ΡŠΡ‚ Π΅ доста ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚Π΅Π»Π΅Π½. Имало Π΅Π΄Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° Kubernetes ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ…Π° своСто kube-dns Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. Π’ΠΎΠΉ ΡΡŠΡ‰ΠΎ бСшС Π²Π½Π΅Π΄Ρ€Π΅Π½ Π² Π½Π°ΡˆΠ°Ρ‚Π° страна, Π½ΠΎ Ρ‚ΠΎΠ·ΠΈ софтуСр Π½Π΅ сС настрои особСно ΠΈ Π½Π΅ Π΄Π°Π΄Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ°Ρ‚Π° производитСлност, Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π° Π΅ проста. Π’ΠΎΠ³Π°Π²Π° сС появиха coredns, към ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ…ΠΌΠ΅ ΠΈ Π½Π΅ Π·Π½Π°Π΅Ρ…ΠΌΠ΅ ΡΠΊΡ€ΡŠΠ±Ρ‚Π°, ΠΏΠΎ-късно стана DNS услугата ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π² K8s. Π’ Π΅Π΄ΠΈΠ½ ΠΌΠΎΠΌΠ΅Π½Ρ‚ нараснахмС Π΄ΠΎ 40 хиляди rps към DNS систСмата ΠΈ Ρ‚ΠΎΠ²Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΡΡŠΡ‰ΠΎ Π½Π΅ бСшС Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ. Но ΠΏΠΎ щастлива случайност сС появи Nodelocaldns, извСстСн ΠΎΡ‰Π΅ ΠΊΠ°Ρ‚ΠΎ Π»ΠΎΠΊΠ°Π»Π΅Π½ кСш Π½Π° възСл, извСстСн ΠΎΡ‰Π΅ ΠΊΠ°Ρ‚ΠΎ NodeLocal DNSCache.

Π—Π°Ρ‰ΠΎ Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅? Има Π³Ρ€Π΅ΡˆΠΊΠ° Π² ядрото Π½Π° Linux, която ΠΏΡ€ΠΈ мноТСство Π΄ΠΎΡΡ‚ΡŠΠΏΠΈ ΠΏΡ€Π΅Π· conntrack NAT ΠΏΡ€Π΅Π· UDP Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ Π½Π° ΡΡŠΡΡ‚Π΅Π·Π°Π½ΠΈΠ΅ Π·Π° запис Π² conntrack Ρ‚Π°Π±Π»ΠΈΡ†ΠΈΡ‚Π΅ ΠΈ част ΠΎΡ‚ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΏΡ€Π΅Π· NAT сС Π³ΡƒΠ±ΠΈ (всяко ΠΏΡŠΡ‚ΡƒΠ²Π°Π½Π΅ ΠΏΡ€Π΅Π· услугата Π΅ NAT). Nodelocaldns Ρ€Π΅ΡˆΠ°Π²Π° Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΊΠ°Ρ‚ΠΎ сС ΠΎΡ‚ΡŠΡ€Π²Π°Π²Π° ΠΎΡ‚ NAT ΠΈ надстройва Π΄ΠΎ TCP ΡΠ²ΡŠΡ€Π·Π°Π½ΠΎΡΡ‚ към DNS Π½Π°Π³ΠΎΡ€Π΅ ΠΏΠΎ Π²Π΅Ρ€ΠΈΠ³Π°Ρ‚Π°, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ Π»ΠΎΠΊΠ°Π»Π½ΠΎ ΠΊΠ΅ΡˆΠΈΡ€Π° DNS заявки Π½Π°Π³ΠΎΡ€Π΅ ΠΏΠΎ Π²Π΅Ρ€ΠΈΠ³Π°Ρ‚Π° (Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΊΡ€Π°Ρ‚ΡŠΠΊ 5 сСкундСн ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»Π΅Π½ кСш).

5. ΠœΠ°Ρ‰Π°Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ капсулитС Ρ…ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»Π½ΠΎ ΠΈ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»Π½ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ

Π”Π΅Π²Π΅Ρ‚ ΡΡŠΠ²Π΅Ρ‚Π° Π·Π° СфСктивност Π½Π° Kubernetes

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π»ΠΈ Π΄Π° ΠΊΠ°ΠΆΠ΅Ρ‚Π΅ с увСрСност, Ρ‡Π΅ всичкитС Π²ΠΈ микроуслуги са Π³ΠΎΡ‚ΠΎΠ²ΠΈ Π·Π° Π΄Π²Ρƒ- Π΄ΠΎ Ρ‚Ρ€ΠΈΠΊΡ€Π°Ρ‚Π½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ? Как ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ Π΄Π° разпрСдСлятС рСсурси Π·Π° Π²Π°ΡˆΠΈΡ‚Π΅ прилоТСния? ΠŸΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½Π΅Ρ‚ΠΎ Π½Π° няколко ΠΏΠΎΠ΄ΠΎΠ²Π΅, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΈ Π½Π°Π΄ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ, ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС излишно, Π° ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½Π΅Ρ‚ΠΎ ΠΈΠΌ Π΅Π΄ΠΈΠ½ Π΄ΠΎ Π΄Ρ€ΡƒΠ³ рискува ΠΏΡ€Π΅ΠΊΡŠΡΠ²Π°Π½Π΅ ΠΎΡ‚ Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° към услугата. Π—Π»Π°Ρ‚Π½Π°Ρ‚Π° срСда ΠΏΠΎΠΌΠ°Π³Π° Π΄Π° сС постигнС Π·Π°ΠΊΠ»ΠΈΠ½Π°Π½ΠΈΠ΅ Π·Π° ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΈΠ²Π° услуги ΠΊΠ°Ρ‚ΠΎ Horizontal Pod Autoscaler ΠΈ АвтоматичСн скалСр Π·Π° Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»Π΅Π½ ΠΏΠΎΠ΄.

Π‘Π”ΠŸ Π²ΠΈ позволява Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π΄Π° ΠΏΠΎΠ²ΠΈΡˆΠ°Π²Π°Ρ‚Π΅ заявкитС/Π»ΠΈΠΌΠΈΡ‚ΠΈΡ‚Π΅ Π½Π° Π²Π°ΡˆΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ Π² ΠΏΠΎΠ΄ въз основа Π½Π° дСйствитСлното ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅. Π‘ ΠΊΠ°ΠΊΠ²ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΏΠΎΠ»Π΅Π·Π½ΠΎ? Ако ΠΈΠΌΠ°Ρ‚Π΅ Pods, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎ някаква ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° Π½Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½ΠΈ Ρ…ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»Π½ΠΎ (ΠΊΠΎΠ΅Ρ‚ΠΎ Π½Π΅ Π΅ напълно Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎ), Ρ‚ΠΎΠ³Π°Π²Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΎΠΏΠΈΡ‚Π°Ρ‚Π΅ Π΄Π° сС Π΄ΠΎΠ²Π΅Ρ€ΠΈΡ‚Π΅ Π½Π° VPA, Π·Π° Π΄Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ рСсурситС си. НСговата функция Π΅ систСма Π·Π° ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΠΊΠΈ, Π±Π°Π·ΠΈΡ€Π°Π½Π° Π½Π° историчСски ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈ Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ metric-server, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π°ΠΊΠΎ Π½Π΅ искатС Π΄Π° промСнятС Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ заявкитС/Π»ΠΈΠΌΠΈΡ‚ΠΈΡ‚Π΅, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто Π΄Π° Π½Π°Π±Π»ΡŽΠ΄Π°Π²Π°Ρ‚Π΅ ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π°Π½ΠΈΡ‚Π΅ рСсурси Π·Π° Π²Π°ΡˆΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ ΠΈ Π΄Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ настройкитС, Π·Π° Π΄Π° спСститС CPU ΠΈ ΠΏΠ°ΠΌΠ΅Ρ‚ Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°.

Π”Π΅Π²Π΅Ρ‚ ΡΡŠΠ²Π΅Ρ‚Π° Π·Π° СфСктивност Π½Π° KubernetesΠ˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΅ Π²Π·Π΅Ρ‚ΠΎ ΠΎΡ‚ https://levelup.gitconnected.com/kubernetes-autoscaling-101-cluster-autoscaler-horizontal-pod-autoscaler-and-vertical-pod-2a441d9ad231

ΠŸΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‡ΠΈΠΊΡŠΡ‚ Π² Kubernetes Π²ΠΈΠ½Π°Π³ΠΈ сС основава Π½Π° заявки. ΠšΠ°ΠΊΠ²Π°Ρ‚ΠΎ ΠΈ стойност Π΄Π° поставитС Ρ‚Π°ΠΌ, ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‡ΠΈΠΊΡŠΡ‚ Ρ‰Π΅ Ρ‚ΡŠΡ€ΡΠΈ подходящ възСл въз основа Π½Π° нСя. Π“Ρ€Π°Π½ΠΈΡ‡Π½Π°Ρ‚Π° стойност Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° Π½Π° kublet, Π·Π° Π΄Π° Π·Π½Π°Π΅ ΠΊΠΎΠ³Π° Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈ ΠΈΠ»ΠΈ ΡƒΠ±ΠΈΠ΅ капсула. И Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ СдинствСният Π²Π°ΠΆΠ΅Π½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ Π΅ стойността Π½Π° заявкитС, VPA Ρ‰Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ с Π½Π΅Π³ΠΎ. ВсСки ΠΏΡŠΡ‚, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Ρ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ си Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»Π½ΠΎ, Π²ΠΈΠ΅ опрСдСлятС ΠΊΠ°ΠΊΠ²ΠΈ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ заявкитС. И ΠΊΠ°ΠΊΠ²ΠΎ Ρ‰Π΅ станС с Π»ΠΈΠΌΠΈΡ‚ΠΈΡ‚Π΅ Ρ‚ΠΎΠ³Π°Π²Π°? Π’ΠΎΠ·ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ ΡΡŠΡ‰ΠΎ Ρ‰Π΅ бъдС ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»Π½ΠΎ ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½.

НапримСр, Ρ‚ΡƒΠΊ са Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΈΡ‚Π΅ настройки Π½Π° ΠΏΠΎΠ΄:

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

ΠšΠ°ΠΊΡ‚ΠΎ Π±Π΅ спомСнато ΠΏΠΎ-Π³ΠΎΡ€Π΅, Ρ‚ΠΎΠ²Π° Π΅ ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»Π½ΠΎ ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½Π΅ въз основа Π½Π° ΡΡŠΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ заявки/Π»ΠΈΠΌΠΈΡ‚ΠΈ Π² манифСста:

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

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

ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Π½Π° HPA, Ρ‚ΠΎΠ³Π°Π²Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡŠΡ‚ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π΅ ΠΏΠΎ-ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π΅Π½. Π—Π°Π΄Π°Π²Π°Ρ‚ сС ΠΏΡ€Π°Π³ΠΎΠ²Π΅ Π·Π° ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΊΠ°Ρ‚ΠΎ процСсор ΠΈ ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΈ Π°ΠΊΠΎ срСдната стойност Π½Π° всички Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ надвиши ΠΏΡ€Π°Π³Π°, Ρ‚ΠΎΠ³Π°Π²Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ сС ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π° с +1 ΠΏΠΎΠ΄, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ стойността ΠΏΠ°Π΄Π½Π΅ ΠΏΠΎΠ΄ ΠΏΡ€Π°Π³Π° ΠΈΠ»ΠΈ Π΄ΠΎΠΊΠ°Ρ‚ΠΎ сС достигнС максималния Π±Ρ€ΠΎΠΉ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ.

Π”Π΅Π²Π΅Ρ‚ ΡΡŠΠ²Π΅Ρ‚Π° Π·Π° СфСктивност Π½Π° KubernetesΠ˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΅ Π²Π·Π΅Ρ‚ΠΎ ΠΎΡ‚ https://levelup.gitconnected.com/kubernetes-autoscaling-101-cluster-autoscaler-horizontal-pod-autoscaler-and-vertical-pod-2a441d9ad231

Π’ допълнСниС към ΠΎΠ±ΠΈΡ‡Π°ΠΉΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΊΠ°Ρ‚ΠΎ CPU ΠΈ ΠΏΠ°ΠΌΠ΅Ρ‚, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ ΠΏΡ€Π°Π³ΠΎΠ²Π΅ Π½Π° пСрсонализиранитС ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Prometheus ΠΈ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈΡ‚Π΅ с тях, Π°ΠΊΠΎ смятатС, Ρ‡Π΅ Ρ‚ΠΎΠ²Π° Π΅ Π½Π°ΠΉ-точният Π½Π°Ρ‡ΠΈΠ½ Π΄Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ ΠΊΠΎΠ³Π° Π΄Π° ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Ρ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ си. Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ сС стабилизира ΠΏΠΎΠ΄ опрСдСлСния ΠΏΡ€Π°Π³ Π½Π° ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ°, HPA Ρ‰Π΅ Π·Π°ΠΏΠΎΡ‡Π½Π΅ Π΄Π° ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π° Pods Π΄ΠΎ минималния Π±Ρ€ΠΎΠΉ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ ΠΈΠ»ΠΈ Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ достигнС ΠΏΡ€Π°Π³Π°.

6. НС забравяйтС Π·Π° Π°Ρ„ΠΈΠ½ΠΈΡ‚Π΅Ρ‚Π° Π½Π° Π²ΡŠΠ·Π»ΠΈΡ‚Π΅ ΠΈ Π°Ρ„ΠΈΠ½ΠΈΡ‚Π΅Ρ‚Π° Π½Π° ΠΏΠΎΠ΄

Π”Π΅Π²Π΅Ρ‚ ΡΡŠΠ²Π΅Ρ‚Π° Π·Π° СфСктивност Π½Π° Kubernetes

НС всички възли работят Π½Π° Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€ ΠΈ Π½Π΅ всички ΠΏΠΎΠ΄ΠΎΠ²Π΅ трябва Π΄Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ прилоТСния с ΠΈΠ½Ρ‚Π΅Π½Π·ΠΈΠ²Π½ΠΈ изчислСния. Kubernetes Π²ΠΈ позволява Π΄Π° ΡƒΠΊΠ°ΠΆΠ΅Ρ‚Π΅ спСциализацията Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡ‚Π΅ възли ΠΈ pods АфинитСт Π½Π° възСл ΠΈ Под Π°Ρ„ΠΈΠ½ΠΈΡ‚Π΅Ρ‚.

Ако ΠΈΠΌΠ°Ρ‚Π΅ възли, подходящи Π·Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΠΈΠ½Ρ‚Π΅Π½Π·ΠΈΠ²Π½ΠΈ изчислСния, Ρ‚ΠΎΠ³Π°Π²Π° Π·Π° максимална СфСктивност Π΅ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ Π΄Π° ΠΎΠ±Π²ΡŠΡ€ΠΆΠ΅Ρ‚Π΅ прилоТСния към подходящитС възли. Π—Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ nodeSelector с Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ Π½Π° възСл.

Π”Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ΅ΠΌ, Ρ‡Π΅ ΠΈΠΌΠ°Ρ‚Π΅ Π΄Π²Π° възСла: Π΅Π΄ΠΈΠ½ с CPUType=HIGHFREQ ΠΈ голям Π±Ρ€ΠΎΠΉ Π±ΡŠΡ€Π·ΠΈ ядра, Π΄Ρ€ΡƒΠ³ с MemoryType=HIGHMEMORY ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΈ ΠΏΠΎ-Π±ΡŠΡ€Π·Π° производитСлност. Най-лСсният Π½Π°Ρ‡ΠΈΠ½ Π΅ Π΄Π° присвоитС внСдряванС Π½Π° pod към възСл HIGHFREQΡ‡Ρ€Π΅Π· добавянС към Ρ€Π°Π·Π΄Π΅Π»Π° spec сСлСктор ΠΊΠ°Ρ‚ΠΎ Ρ‚ΠΎΠ·ΠΈ:

…
nodeSelector:
	CPUType: HIGHFREQ

По-скъп ΠΈ спСцифичСн Π½Π°Ρ‡ΠΈΠ½ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π° Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ nodeAffinity Π² ΠΏΠΎΠ»Π΅Ρ‚ΠΎ affinity Ρ€Π°Π·Π΄Π΅Π» spec. Има Π΄Π²Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ:

  • requiredDuringSchedulingIgnoredDuringExecution: Ρ‚Π²ΡŠΡ€Π΄Π° настройка (ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‡ΠΈΠΊΡŠΡ‚ Ρ‰Π΅ Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈ ΠΏΠΎΠ΄ΠΎΠ²Π΅ само Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ възли (ΠΈ никъдС Π΄Ρ€ΡƒΠ³Π°Π΄Π΅));

  • preferredDuringSchedulingIgnoredDuringExecution: ΠΌΠ΅ΠΊΠ° настройка (ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‡ΠΈΠΊΡŠΡ‚ Ρ‰Π΅ сС ΠΎΠΏΠΈΡ‚Π° Π΄Π° Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈ към ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ възли ΠΈ Π°ΠΊΠΎ Π½Π΅ успСС, Ρ‰Π΅ сС ΠΎΠΏΠΈΡ‚Π° Π΄Π° Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈ към слСдващия Π½Π°Π»ΠΈΡ‡Π΅Π½ възСл).

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ синтаксис Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ Π½Π° възли, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, In, NotIn, Exists, DoesNotExist, Gt ΠΈΠ»ΠΈ Lt. НС забравяйтС ΠΎΠ±Π°Ρ‡Π΅, Ρ‡Π΅ слоТнитС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π² Π΄ΡŠΠ»Π³ΠΈΡ‚Π΅ ΡΠΏΠΈΡΡŠΡ†ΠΈ с Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ Ρ‰Π΅ забавят Π²Π·Π΅ΠΌΠ°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π² ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΈ ситуации. Π‘ Π΄Ρ€ΡƒΠ³ΠΈ Π΄ΡƒΠΌΠΈ, Π½Π΅ услоТнявайтС.

ΠšΠ°ΠΊΡ‚ΠΎ Π±Π΅ спомСнато ΠΏΠΎ-Π³ΠΎΡ€Π΅, Kubernetes Π²ΠΈ позволява Π΄Π° Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ ΠΎΠ±Π²ΡŠΡ€Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ‚Π΅ ΠΏΠΎΠ΄ΠΎΠ²Π΅. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΊΠ°Ρ€Π°Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΏΠΎΠ΄ΠΎΠ²Π΅ Π΄Π° работят Π·Π°Π΅Π΄Π½ΠΎ с Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΠΎΠ΄ΠΎΠ²Π΅ Π² ΡΡŠΡ‰Π°Ρ‚Π° Π·ΠΎΠ½Π° Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΎΡΡ‚ (ΠΎΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π·Π° ΠΎΠ±Π»Π°Ρ†ΠΈΡ‚Π΅) ΠΈΠ»ΠΈ възли.

Π’ podAffinity ΠΏΠΎΠ»Π΅Ρ‚Π° affinity Ρ€Π°Π·Π΄Π΅Π» spec Π½Π°Π»ΠΈΡ‡Π½ΠΈ са ΡΡŠΡ‰ΠΈΡ‚Π΅ ΠΏΠΎΠ»Π΅Ρ‚Π°, ΠΊΠ°ΠΊΡ‚ΠΎ Π² случая Π½Π° nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution ΠΈ preferredDuringSchedulingIgnoredDuringExecution. ЕдинствСната Ρ€Π°Π·Π»ΠΈΠΊΠ° Π΅, Ρ‡Π΅ matchExpressions Ρ‰Π΅ ΠΎΠ±Π²ΡŠΡ€ΠΆΠ΅ pods към възСл, ΠΊΠΎΠΉΡ‚ΠΎ Π²Π΅Ρ‡Π΅ изпълнява pod с Ρ‚ΠΎΠ·ΠΈ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚.

ΠžΡ‰Π΅ Kubernetes ΠΏΡ€Π΅Π΄Π»Π°Π³Π° ΠΏΠΎΠ»Π΅ podAntiAffinity, ΠΊΠΎΠ΅Ρ‚ΠΎ, Π·Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΎΡ‚ Ρ‚ΠΎΠ²Π°, Π½Π΅ ΡΠ²ΡŠΡ€Π·Π²Π° pod към възСл с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ pods.

ΠžΡ‚Π½ΠΎΡΠ½ΠΎ ΠΈΠ·Ρ€Π°Π·ΠΈΡ‚Π΅ nodeAffinity Π‘ΡŠΡ‰ΠΈΡΡ‚ ΡΡŠΠ²Π΅Ρ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π΄Π°Π΄Π΅Π½: ΠΎΠΏΠΈΡ‚Π°ΠΉΡ‚Π΅ сС Π΄Π° ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° прости ΠΈ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΈ, Π½Π΅ сС ΠΎΠΏΠΈΡ‚Π²Π°ΠΉΡ‚Π΅ Π΄Π° ΠΏΡ€Π΅Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Ρ‚Π΅ спСцификацията Π½Π° pod със слоТСн Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π°. Много Π΅ лСсно Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ Π½Π΅ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π° Π½Π° условията Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π° ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‡ΠΈΠΊΠ° ΠΈ влошава цялостната производитСлност.

7. ΠŸΠ΅Ρ‚Π½Π° ΠΈ толСрантности

Има ΠΈ Π΄Ρ€ΡƒΠ³ Π½Π°Ρ‡ΠΈΠ½ Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‡ΠΈΠΊΠ°. Ако ΠΈΠΌΠ°Ρ‚Π΅ голям ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ със стотици възли ΠΈ хиляди микроуслуги, Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π΄Π° ΠΏΠΎΠΏΡ€Π΅Ρ‡ΠΈΡ‚Π΅ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΏΠΎΠ΄ΠΎΠ²Π΅ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ хоствани ΠΎΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ възли.

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡŠΡ‚ Π½Π° ΠΏΠ΅Ρ‚Π½Π° - забраняващитС ΠΏΡ€Π°Π²ΠΈΠ»Π° - ΠΏΠΎΠΌΠ°Π³Π° Π·Π° Ρ‚ΠΎΠ²Π°. НапримСр, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΠΎΠΏΡ€Π΅Ρ‡ΠΈΡ‚Π΅ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ възли Π΄Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ ΠΏΠΎΠ΄ΠΎΠ²Π΅ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ сцСнарии. Π—Π° Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΡ‚Π΅ ΠΏΠ΅Ρ‚Π½Π° към ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ възСл, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ опцията taint Π² kubectl. ΠŸΠΎΡΠΎΡ‡Π΅Ρ‚Π΅ ΠΊΠ»ΡŽΡ‡ ΠΈ стойност ΠΈ слСд Ρ‚ΠΎΠ²Π° ΠΎΠΏΠ΅Ρ‚Π½Π΅Ρ‚Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ NoSchedule ΠΈΠ»ΠΈ NoExecute:

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

Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° си струва Π΄Π° сС ΠΎΡ‚Π±Π΅Π»Π΅ΠΆΠΈ, Ρ‡Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡŠΡ‚ Π·Π° Π·Π°ΠΌΡŠΡ€ΡΡΠ²Π°Π½Π΅ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Ρ‚Ρ€ΠΈ основни Π΅Ρ„Π΅ΠΊΡ‚Π°: NoSchedule, NoExecute ΠΈ PreferNoSchedule.

  • NoSchedule ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ Π΄ΠΎΠΊΠ°Ρ‚ΠΎ ΠΈΠΌΠ° ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π΅Π½ запис Π² спСцификацията Π½Π° pod tolerations, Ρ‚ΠΎΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Ρ€Π°Π·Π³ΡŠΡ€Π½Π°Ρ‚ Π½Π° възСла (Π² Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ node10).

  • PreferNoSchedule - опростСна вСрсия NoSchedule. Π’ Ρ‚ΠΎΠ·ΠΈ случай ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‡ΠΈΠΊΡŠΡ‚ Ρ‰Π΅ сС ΠΎΠΏΠΈΡ‚Π° Π΄Π° Π½Π΅ разпрСдСля ΠΏΠΎΠ΄ΠΎΠ²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ нямат ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π°Ρ‰ запис. tolerations Π½Π° възСл, Π½ΠΎ Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ Ρ‚Π²ΡŠΡ€Π΄ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅. Ако няма рСсурси Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°, Ρ‚ΠΎΠ³Π°Π²Π° ΠΏΠΎΠ΄ΠΎΠ²Π΅Ρ‚Π΅ Ρ‰Π΅ Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ‚ Π΄Π° сС Ρ€Π°Π·ΠΏΠΎΠ»Π°Π³Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ·ΠΈ възСл.

  • NoExecute - Ρ‚ΠΎΠ·ΠΈ Π΅Ρ„Π΅ΠΊΡ‚ задСйства Π½Π΅Π·Π°Π±Π°Π²Π½Π° Свакуация Π½Π° капсули, ΠΊΠΎΠΈΡ‚ΠΎ нямат ΡΡŠΠ²ΠΏΠ°Π΄Π°Ρ‰ запис tolerations.

Π›ΡŽΠ±ΠΎΠΏΠΈΡ‚Π½ΠΎ Π΅, Ρ‡Π΅ Ρ‚ΠΎΠ²Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π·Π° Ρ‚ΠΎΠ»Π΅Ρ€Π°Ρ†ΠΈΠΈ. Π’ΠΎΠ²Π° Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠΌΠ° β€žΠ·Π°Π±Ρ€Π°Π½Π΅Π½β€œ възСл ΠΈ трябва Π΄Π° поставитС само инфраструктурни услуги Π²ΡŠΡ€Ρ…Ρƒ Π½Π΅Π³ΠΎ. Как Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ? Π Π°Π·Ρ€Π΅ΡˆΠ΅Ρ‚Π΅ само Ρ‚Π΅Π·ΠΈ ΡˆΡƒΡˆΡƒΠ»ΠΊΠΈ, Π·Π° ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠΌΠ° подходящ толСранс.

Π•Ρ‚ΠΎ ΠΊΠ°ΠΊ Π±ΠΈ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°Π»Π° спСцификацията Π½Π° pod:

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

Π’ΠΎΠ²Π° Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° слСдващото прСнасочванС ΠΏΠΎΠ΄ΡŠΡ‚ Ρ‰Π΅ ΡƒΠ΄Π°Ρ€ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚ΠΎΠ·ΠΈ възСл, Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡŠΡ‚ Π·Π° Π°Ρ„ΠΈΠ½ΠΈΡ‚Π΅Ρ‚ Π½Π° възСл ΠΈ nodeSelector. Но ΠΊΠ°Ρ‚ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Ρ‚Π΅ няколко Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° постигнСтС ΠΌΠ½ΠΎΠ³ΠΎ гъвкава настройка Π½Π° ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‡ΠΈΠΊΠ°.

8. Π—Π°Π΄Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π½Π° Ρ€Π°Π·ΠΏΠΎΠ»Π°Π³Π°Π½Π΅ Π½Π° Pod

Π’ΠΎΠ²Π°, Ρ‡Π΅ стС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π»ΠΈ ΡΠ²ΡŠΡ€Π·Π²Π°Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΠ΄ΠΎΠ²Π΅ ΠΈ възли, Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ всички ΠΏΠΎΠ΄ΠΎΠ²Π΅ трябва Π΄Π° сС Ρ‚Ρ€Π΅Ρ‚ΠΈΡ€Π°Ρ‚ с Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚. НапримСр, ΠΌΠΎΠΆΠ΅ Π΄Π° искатС Π΄Π° Π²Π½Π΅Π΄Ρ€ΠΈΡ‚Π΅ някои Pods ΠΏΡ€Π΅Π΄ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ.

Kubernetes ΠΏΡ€Π΅Π΄Π»Π°Π³Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π½Π°Ρ‡ΠΈΠ½ΠΈ Π·Π° Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° Priority ΠΈ Preemption Π½Π° Pod. ΠžΠ±ΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ°Ρ‚Π° сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚ няколко части: ΠΎΠ±Π΅ΠΊΡ‚ 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, ΠΈ Ρ‚ΠΎΠ³Π°Π²Π° няма Π΄Π° ΠΈΠΌΠ° ΠΈΠ·ΠΏΡ€Π΅Π²Π°Ρ€Π²Π°Π½Π΅, pod Ρ‰Π΅ бъдС ΠΏΡŠΡ€Π²ΠΈΡΡ‚ Π² ΠΎΠΏΠ°ΡˆΠΊΠ°Ρ‚Π° ΠΈ Ρ‰Π΅ Ρ‡Π°ΠΊΠ° ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‡ΠΈΠΊΡŠΡ‚ Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈ свободни рСсурси Π·Π° Π½Π΅Π³ΠΎ.

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° създавамС ΠΏΠΎΠ΄, Π² ΠΊΠΎΠΉΡ‚ΠΎ посочвамС ΠΈΠΌΠ΅Ρ‚ΠΎ 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 ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°Ρ€Π΅Ρ‡Π΅ ΠΌΠΎΠ·ΡŠΠΊΡŠΡ‚ Π½Π° цСлия ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€. Много Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° Ρ‚Π°Π·ΠΈ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ Π½Π° високо Π½ΠΈΠ²ΠΎ, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ скоростта Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ Π² "Cube" зависи ΠΎΡ‚ Ρ‚ΠΎΠ²Π°. Доста стандартно ΠΈ Π² ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π΄ΠΎΠ±Ρ€ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π±ΠΈ Π±ΠΈΠ»ΠΎ Π΄Π° Π·Π°ΠΏΠ°Π·ΠΈΡ‚Π΅ ETCD ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ Π½Π° Π³Π»Π°Π²Π½ΠΈΡ‚Π΅ възли, Π·Π° Π΄Π° ΠΈΠΌΠ°Ρ‚Π΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΎ забавянС към kube-apiserver. Ако Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ възмоТно, поставСтС ETCD възмоТно Π½Π°ΠΉ-Π±Π»ΠΈΠ·ΠΎ, с Π΄ΠΎΠ±Ρ€Π° чСстотна Π»Π΅Π½Ρ‚Π° ΠΌΠ΅ΠΆΠ΄Ρƒ участницитС. Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° ΠΎΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ»ΠΊΠΎ възли ΠΎΡ‚ ETCD ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΈΠ·ΠΏΠ°Π΄Π½Π°Ρ‚ Π±Π΅Π· ΡƒΠ²Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°.

Π”Π΅Π²Π΅Ρ‚ ΡΡŠΠ²Π΅Ρ‚Π° Π·Π° СфСктивност Π½Π° Kubernetes

Π˜ΠΌΠ°ΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄, Ρ‡Π΅ ΠΏΡ€Π΅ΠΊΠΎΠΌΠ΅Ρ€Π½ΠΎΡ‚ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° броя Π½Π° участницитС Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈ устойчивостта Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ Π·Π° смСтка Π½Π° производитСлността, всичко трябва Π΄Π° бъдС ΡƒΠΌΠ΅Ρ€Π΅Π½ΠΎ.

Ако Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π·Π° настройка Π½Π° услугата, Ρ‚ΠΎΠ³Π°Π²Π° ΠΈΠΌΠ° няколко ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΠΊΠΈ:

  1. Π˜ΠΌΠ°ΠΉΡ‚Π΅ Π΄ΠΎΠ±ΡŠΡ€ Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€, въз основа Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° (ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ Ρ‚ΡƒΠΊ).

  2. ΠŸΡ€ΠΎΠΌΠ΅Π½Π΅Ρ‚Π΅ няколко ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€Π°, Π°ΠΊΠΎ стС разпространили ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Π²ΠΎΠΉΠΊΠ° DC ΠΈΠ»ΠΈ Π²Π°ΡˆΠ°Ρ‚Π° ΠΌΡ€Π΅ΠΆΠ° ΠΈ дисковС оставят ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π° сС ΠΆΠ΅Π»Π°Π΅ (ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ Ρ‚ΡƒΠΊ).

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

Π’Π°Π·ΠΈ статия описва Ρ‚ΠΎΡ‡ΠΊΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π°ΡˆΠΈΡΡ‚ Π΅ΠΊΠΈΠΏ сС ΠΎΠΏΠΈΡ‚Π²Π° Π΄Π° спазва. Π’ΠΎΠ²Π° Π½Π΅ Π΅ описаниС ΡΡ‚ΡŠΠΏΠΊΠ° ΠΏΠΎ ΡΡ‚ΡŠΠΏΠΊΠ° Π½Π° дСйствията, Π° ΠΎΠΏΡ†ΠΈΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΈ Π·Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ€Π΅ΠΆΠΈΠΉΠ½ΠΈΡ‚Π΅ Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈ Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€. Ясно Π΅, Ρ‡Π΅ всСки ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ Π΅ ΡƒΠ½ΠΈΠΊΠ°Π»Π΅Π½ ΠΏΠΎ свой собствСн Π½Π°Ρ‡ΠΈΠ½ ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΡ‚Π° Π·Π° настройка ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π²Π°Ρ€ΠΈΡ€Π°Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π±ΠΈ Π±ΠΈΠ»ΠΎ интСрСсно Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΎΠ±Ρ€Π°Ρ‚Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠ° ΠΎΡ‚ вас: ΠΊΠ°ΠΊ Π½Π°Π±Π»ΡŽΠ΄Π°Π²Π°Ρ‚Π΅ вашия ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ Kubernetes, ΠΊΠ°ΠΊ подобряватС Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° производитСлност. Π‘ΠΏΠΎΠ΄Π΅Π»Π΅Ρ‚Π΅ ΠΎΠΏΠΈΡ‚Π° си Π² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΡ‚Π΅, Ρ‰Π΅ бъдС интСрСсно Π΄Π° Π³ΠΎ Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅.

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