ΠΠ΄ΡΠ°Π²Π΅ΠΉΡΠ΅ Π²ΡΠΈΡΠΊΠΈ! ΠΠ°Π·Π²Π°ΠΌ ΡΠ΅ ΠΠ»Π΅Π³ Π‘ΠΈΠ΄ΠΎΡΠ΅Π½ΠΊΠΎΠ², ΡΠ°Π±ΠΎΡΡ Π² DomClick ΠΊΠ°ΡΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΠΈΡΠ΅Π» Π½Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ΅Π½ Π΅ΠΊΠΈΠΏ. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Cube Π·Π° ΠΏΡΠΎΠ΄Π°ΠΆΠ±Π° ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ ΡΡΠΈ Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΠΈ ΠΏΡΠ΅Π· ΡΠΎΠ²Π° Π²ΡΠ΅ΠΌΠ΅ ΡΠΌΠ΅ ΠΏΡΠ΅ΠΆΠΈΠ²Π΅Π»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΈ ΠΌΠΎΠΌΠ΅Π½ΡΠΈ Ρ Π½Π΅Π³ΠΎ. ΠΠ½Π΅Ρ ΡΠ΅ Π²ΠΈ ΠΊΠ°ΠΆΠ° ΠΊΠ°ΠΊ, Ρ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΡΡΠΈΡΠΊΠ°ΡΠ΅ ΠΎΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ ΠΎΡ Π²Π°Π½ΠΈΠ»ΠΈΡ Kubernetes Π·Π° Π²Π°ΡΠΈΡ ΠΊΠ»ΡΡΡΠ΅Ρ. ΠΠΎΡΠΎΠ²ΠΈ, ΠΏΡΠΈΠ³ΠΎΡΠ²ΠΈ ΡΠ΅, ΡΡΠ°ΡΡ!
ΠΡΠΈΡΠΊΠΈ Π·Π½Π°Π΅ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±ΡΠ΅, ΡΠ΅ Kubernetes Π΅ ΠΌΠ°ΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ Π·Π° ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΡ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ; Π΄ΠΎΠ±ΡΠ΅, ΠΈΠ»ΠΈ 5 Π΄Π²ΠΎΠΈΡΠ½ΠΈ ΡΠ°ΠΉΠ»Π°, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ°Π²ΡΡ ΠΌΠ°Π³ΠΈΡ, ΠΊΠ°ΡΠΎ ΡΠΏΡΠ°Π²Π»ΡΠ²Π°Ρ ΠΆΠΈΠ·Π½Π΅Π½ΠΈΡ ΡΠΈΠΊΡΠ» Π½Π° Π²Π°ΡΠΈΡΠ΅ ΠΌΠΈΠΊΡΠΎΡΡΠ»ΡΠ³ΠΈ Π² ΡΡΡΠ²ΡΡΠ½Π° ΡΡΠ΅Π΄Π°. Π Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, ΡΠΎΠ²Π° Π΅ Π΄ΠΎΡΡΠ° Π³ΡΠ²ΠΊΠ°Π² ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠ³Π»ΠΎΠ±ΠΈ ΠΊΠ°ΡΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Lego Π·Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½Π° ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π·Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π·Π°Π΄Π°ΡΠΈ.
Π Π²ΡΠΈΡΠΊΠΎ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Π½Π°ΡΠ΅Π΄: Ρ Π²ΡΡΠ»Π΅ΡΠ΅ ΡΡΡΠ²ΡΡΠΈ Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ°, ΠΊΠ°ΡΠΎ Π΄ΡΡΠ²Π° Π·Π° ΠΎΠ³ΡΠ΅Π² Π² ΠΎΠ³Π½ΠΈΡΠ΅ ΠΈ Π½Π΅ ΠΏΠΎΠ·Π½Π°Π²Π°ΠΉΡΠ΅ ΡΠΊΡΡΠ±ΡΠ°. ΠΠΎ Π°ΠΊΠΎ ΡΡΠ΅ Π·Π° ΠΎΠΊΠΎΠ»Π½Π°ΡΠ° ΡΡΠ΅Π΄Π°, ΡΠΎΠ³Π°Π²Π° ΡΠ΅ ΡΠΈ ΠΏΠΎΠΌΠΈΡΠ»ΠΈΡΠ΅: "ΠΠ°ΠΊ ΠΌΠΎΠ³Π° Π΄Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°ΠΌ ΠΎΠ³ΡΠ½Ρ Π² ΠΏΠ΅ΡΠΊΠ°ΡΠ° ΠΈ Π΄Π° ΡΡΠΆΠ°Π»ΡΠ²Π°ΠΌ Π·Π° Π³ΠΎΡΠ°ΡΠ°?". Π‘ Π΄ΡΡΠ³ΠΈ Π΄ΡΠΌΠΈ, ΠΊΠ°ΠΊ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΠΌ Π½Π°ΡΠΈΠ½ΠΈ Π·Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° ΠΈ Π½Π°ΠΌΠ°Π»ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π·Ρ ΠΎΠ΄ΠΈΡΠ΅.
1. Π‘Π»Π΅Π΄Π΅ΡΠ΅ ΡΠ΅ΡΡΡΡΠΈΡΠ΅ Π½Π° Π΅ΠΊΠΈΠΏΠ° ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ
ΠΠ΄ΠΈΠ½ ΠΎΡ Π½Π°ΠΉ-Π±Π°Π½Π°Π»Π½ΠΈΡΠ΅, Π½ΠΎ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π΅ Π²ΡΠ²Π΅ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ/Π»ΠΈΠΌΠΈΡΠΈ. Π Π°Π·Π΄Π΅Π»Π΅ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° ΠΏΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΎΡ ΠΈΠΌΠ΅Π½Π° ΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΎΡ ΠΈΠΌΠ΅Π½Π° ΠΏΠΎ Π΅ΠΊΠΈΠΏΠΈ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°. ΠΠ°Π΄Π°ΠΉΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΏΡΠ΅Π΄ΠΈ Π΄Π° Π²Π½Π΅Π΄ΡΠΈΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ Π·Π° ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ½ΠΎ Π²ΡΠ΅ΠΌΠ΅, ΠΏΠ°ΠΌΠ΅Ρ, ΠΊΡΠ°ΡΠΊΠΎΡΡΠ°ΠΉΠ½ΠΎ ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅.
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. ΠΠ°Π΄ΡΠ²Π°ΠΌ ΡΠ΅, ΡΠ΅ Π½ΠΈΠΊΠΎΠΉ Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° "Cube" Π½Π° HDD Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ, Π½ΠΎ ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° Π΄ΠΎΡΠΈ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ SSD Π²Π΅ΡΠ΅ Π½Π΅ Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ΅Π½. Π‘Π±Π»ΡΡΠΊΠ°Ρ ΠΌΠ΅ ΡΠ΅ Ρ ΡΠ°ΠΊΡΠ² ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΡΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΡΠ±ΠΈΠ²Π°Ρ Π° Π΄ΠΈΡΠΊΠ° ΡΡΠ΅Π· I / O ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈ ΡΡΠΊ Π½ΡΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ:
-
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ Π²ΠΈΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΈ SSD ΠΈΠ»ΠΈ ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΡΠ΅ ΠΊΡΠΌ NVMe (Π°ΠΊΠΎ ΡΠΏΡΠ°Π²Π»ΡΠ²Π°ΡΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈΡ ΡΠΈ Ρ Π°ΡΠ΄ΡΠ΅Ρ).
-
ΠΠ°ΠΌΠ°Π»Π΅ΡΠ΅ Π½ΠΈΠ²ΠΎΡΠΎ Π½Π° ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°Π½Π΅.
-
ΠΠ°ΠΏΡΠ°Π²Π΅ΡΠ΅ "ΠΈΠ½ΡΠ΅Π»ΠΈΠ³Π΅Π½ΡΠ½ΠΎ" Π±Π°Π»Π°Π½ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΡΡΠ»ΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·Π½Π°ΡΠΈΠ»Π²Π°Ρ Π΄ΠΈΡΠΊΠ° (
podAntiAffinity
).
ΠΠΊΡΠ°Π½Π½Π°ΡΠ° ΡΠ½ΠΈΠΌΠΊΠ° ΠΏΠΎ-Π³ΠΎΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΊΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΡΠ»ΡΡΠ²Π° ΠΏΠΎΠ΄ nginx-ingress-controller Ρ Π΄ΠΈΡΠΊ, ΠΊΠΎΠ³Π°ΡΠΎ access_logs Π΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ (~12k logs/sec). Π’Π°ΠΊΠΎΠ²Π° ΡΡΡΡΠΎΡΠ½ΠΈΠ΅, ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ΅, ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π²Π»ΠΎΡΠ°Π²Π°Π½Π΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΠΎΠ·ΠΈ Π²ΡΠ·Π΅Π».
ΠΠΎΠ»ΠΊΠΎΡΠΎ Π΄ΠΎ PV, ΡΠ²ΠΈ, Π½Π΅ ΡΡΠΌ ΠΏΡΠΎΠ±Π²Π°Π» Π²ΡΠΈΡΠΊΠΎ.
3. Π‘ΡΠ·Π΄Π°ΠΉΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
ΠΠ°ΠΉ-Π΄ΠΎΠ±ΡΠ΅ Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π·Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ, ΡΠ°ΠΊΠ° ΡΠ΅ Kubernetes Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΈ ΠΈΠ·Π²Π»ΠΈΡΠ° ΠΏΠΎ-Π±ΡΡΠ·ΠΎ ΠΈ Π΄Π° Π³ΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΠΏΠΎ-Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ.
ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΡΠ° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΡΠ°:
-
ΡΡΠ΄ΡΡΠΆΠ°Ρ ΡΠ°ΠΌΠΎ Π΅Π΄Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ ΡΠ°ΠΌΠΎ Π΅Π΄Π½Π° ΡΡΠ½ΠΊΡΠΈΡ;
-
ΠΌΠ°Π»ΡΠΊ ΡΠ°Π·ΠΌΠ΅Ρ, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ΅ ΠΏΡΠ΅Π΄Π°Π²Π°Ρ ΠΏΠΎ-Π»ΠΎΡΠΎ ΠΏΠΎ ΠΌΡΠ΅ΠΆΠ°ΡΠ°;
-
ΠΈΠΌΠ°Ρ ΠΊΡΠ°ΠΉΠ½ΠΈ ΡΠΎΡΠΊΠΈ Π·Π° Π·Π΄ΡΠ°Π²Π΅ ΠΈ Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡ, ΠΊΠΎΠΈΡΠΎ Kubernetes ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°, Π·Π° Π΄Π° ΠΏΡΠ΅Π΄ΠΏΡΠΈΠ΅ΠΌΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π² ΡΠ»ΡΡΠ°ΠΉ Π½Π° ΠΏΡΠ΅ΠΊΡΡΠ²Π°Π½Π΅;
-
ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΡΠ΄ΠΎΠ±Π½ΠΈ Π·Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ (ΠΊΠ°ΡΠΎ Alpine ΠΈΠ»ΠΈ CoreOS), ΠΊΠΎΠΈΡΠΎ ΡΠ° ΠΏΠΎ-ΡΡΡΠΎΠΉΡΠΈΠ²ΠΈ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ°;
-
ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ΡΠ°ΠΏΠ½ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΠΈ, ΡΠ°ΠΊΠ° ΡΠ΅ Π΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ°Π·Π³ΡΡΡΠ°ΡΠ΅ ΡΠ°ΠΌΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π° Π½Π΅ ΠΏΡΠΈΠ΄ΡΡΠΆΠ°Π²Π°ΡΠΈΡΠ΅ ΠΈΠ·ΡΠΎΡΠ½ΠΈΡΠΈ.
ΠΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ ΠΈ ΡΡΠ»ΡΠ³ΠΈ, ΠΊΠΎΠΈΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΡΠ΅ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅. ΠΠ°ΠΆΠ½ΠΎ Π΅ Π²ΠΈΠ½Π°Π³ΠΈ Π΄Π° Π³ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°ΡΠ΅ Π°ΠΊΡΡΠ°Π»Π½ΠΈ ΠΈ Π² Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ. Π ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΎΠ²Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΡΠ΅:
-
ΠΠ°ΠΌΠ°Π»Π΅Π½ΠΎ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΎ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅Π»ΠΈΡ ΠΊΠ»ΡΡΡΠ΅Ρ.
-
ΠΠ°ΠΌΠ°Π»Π΅Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅ Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°.
-
ΠΠΎ-ΠΌΠ°Π»ΡΠΊ ΡΠ°Π·ΠΌΠ΅Ρ Π½Π° ΡΠ΅Π»ΠΈΡ Π²ΠΈ ΡΠ΅Π³ΠΈΡΡΡΡ Π½Π° Docker.
4. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ DNS ΠΊΠ΅Ρ
ΠΠΊΠΎ Π³ΠΎΠ²ΠΎΡΠΈΠΌ Π·Π° Π²ΠΈΡΠΎΠΊΠΈ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½ΠΈΡ, ΡΠΎΠ³Π°Π²Π° Π±Π΅Π· Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° DNS ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ°, ΠΆΠΈΠ²ΠΎΡΡΡ Π΅ Π΄ΠΎΡΡΠ° ΠΎΡΠ²ΡΠ°ΡΠΈΡΠ΅Π»Π΅Π½. ΠΠΌΠ°Π»ΠΎ Π΅Π΄Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π° Kubernetes ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ
Π° ΡΠ²ΠΎΠ΅ΡΠΎ kube-dns ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. Π’ΠΎΠΉ ΡΡΡΠΎ Π±Π΅ΡΠ΅ Π²Π½Π΅Π΄ΡΠ΅Π½ Π² Π½Π°ΡΠ°ΡΠ° ΡΡΡΠ°Π½Π°, Π½ΠΎ ΡΠΎΠ·ΠΈ ΡΠΎΡΡΡΠ΅Ρ Π½Π΅ ΡΠ΅ Π½Π°ΡΡΡΠΎΠΈ ΠΎΡΠΎΠ±Π΅Π½ΠΎ ΠΈ Π½Π΅ Π΄Π°Π΄Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠ°ΡΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ, Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Π·Π°Π΄Π°ΡΠ°ΡΠ° Π΅ ΠΏΡΠΎΡΡΠ°. Π’ΠΎΠ³Π°Π²Π° ΡΠ΅ ΠΏΠΎΡΠ²ΠΈΡ
Π° coredns, ΠΊΡΠΌ ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠΈΡ
ΠΌΠ΅ ΠΈ Π½Π΅ Π·Π½Π°Π΅Ρ
ΠΌΠ΅ ΡΠΊΡΡΠ±ΡΠ°, ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ ΡΡΠ°Π½Π° DNS ΡΡΠ»ΡΠ³Π°ΡΠ° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π² K8s. Π Π΅Π΄ΠΈΠ½ ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π°ΡΠ°ΡΠ½Π°Ρ
ΠΌΠ΅ Π΄ΠΎ 40 Ρ
ΠΈΠ»ΡΠ΄ΠΈ rps ΠΊΡΠΌ DNS ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΠΈ ΡΠΎΠ²Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠΎ Π½Π΅ Π±Π΅ΡΠ΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ. ΠΠΎ ΠΏΠΎ ΡΠ°ΡΡΠ»ΠΈΠ²Π° ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΡΡ ΡΠ΅ ΠΏΠΎΡΠ²ΠΈ Nodelocaldns, ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΠΎΡΠ΅ ΠΊΠ°ΡΠΎ Π»ΠΎΠΊΠ°Π»Π΅Π½ ΠΊΠ΅Ρ Π½Π° Π²ΡΠ·Π΅Π», ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΠΎΡΠ΅ ΠΊΠ°ΡΠΎ
ΠΠ°ΡΠΎ Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅? ΠΠΌΠ° Π³ΡΠ΅ΡΠΊΠ° Π² ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux, ΠΊΠΎΡΡΠΎ ΠΏΡΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π΄ΠΎΡΡΡΠΏΠΈ ΠΏΡΠ΅Π· conntrack NAT ΠΏΡΠ΅Π· UDP Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π° ΡΡΡΡΠ΅Π·Π°Π½ΠΈΠ΅ Π·Π° Π·Π°ΠΏΠΈΡ Π² conntrack ΡΠ°Π±Π»ΠΈΡΠΈΡΠ΅ ΠΈ ΡΠ°ΡΡ ΠΎΡ ΡΡΠ°ΡΠΈΠΊΠ° ΠΏΡΠ΅Π· NAT ΡΠ΅ Π³ΡΠ±ΠΈ (Π²ΡΡΠΊΠΎ ΠΏΡΡΡΠ²Π°Π½Π΅ ΠΏΡΠ΅Π· ΡΡΠ»ΡΠ³Π°ΡΠ° Π΅ NAT). Nodelocaldns ΡΠ΅ΡΠ°Π²Π° ΡΠΎΠ·ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΠΊΠ°ΡΠΎ ΡΠ΅ ΠΎΡΡΡΠ²Π°Π²Π° ΠΎΡ NAT ΠΈ Π½Π°Π΄ΡΡΡΠΎΠΉΠ²Π° Π΄ΠΎ TCP ΡΠ²ΡΡΠ·Π°Π½ΠΎΡΡ ΠΊΡΠΌ DNS Π½Π°Π³ΠΎΡΠ΅ ΠΏΠΎ Π²Π΅ΡΠΈΠ³Π°ΡΠ°, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π»ΠΎΠΊΠ°Π»Π½ΠΎ ΠΊΠ΅ΡΠΈΡΠ° DNS Π·Π°ΡΠ²ΠΊΠΈ Π½Π°Π³ΠΎΡΠ΅ ΠΏΠΎ Π²Π΅ΡΠΈΠ³Π°ΡΠ° (Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΊΡΠ°ΡΡΠΊ 5 ΡΠ΅ΠΊΡΠ½Π΄Π΅Π½ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»Π΅Π½ ΠΊΠ΅Ρ).
5. ΠΠ°ΡΠ°Π±ΠΈΡΠ°ΠΉΡΠ΅ ΠΊΠ°ΠΏΡΡΠ»ΠΈΡΠ΅ Ρ ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»Π½ΠΎ ΠΈ Π²Π΅ΡΡΠΈΠΊΠ°Π»Π½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ
ΠΠΎΠΆΠ΅ΡΠ΅ Π»ΠΈ Π΄Π° ΠΊΠ°ΠΆΠ΅ΡΠ΅ Ρ ΡΠ²Π΅ΡΠ΅Π½ΠΎΡΡ, ΡΠ΅ Π²ΡΠΈΡΠΊΠΈΡΠ΅ Π²ΠΈ ΠΌΠΈΠΊΡΠΎΡΡΠ»ΡΠ³ΠΈ ΡΠ° Π³ΠΎΡΠΎΠ²ΠΈ Π·Π° Π΄Π²Ρ- Π΄ΠΎ ΡΡΠΈΠΊΡΠ°ΡΠ½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ? ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ Π΄Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»ΡΡΠ΅ ΡΠ΅ΡΡΡΡΠΈ Π·Π° Π²Π°ΡΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ? ΠΠΎΠ΄Π΄ΡΡΠΆΠ°Π½Π΅ΡΠΎ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΠΎΠ΄ΠΎΠ²Π΅, ΡΠ°Π±ΠΎΡΠ΅ΡΠΈ Π½Π°Π΄ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ, ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·Π»ΠΈΡΠ½ΠΎ, Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½Π΅ΡΠΎ ΠΈΠΌ Π΅Π΄ΠΈΠ½ Π΄ΠΎ Π΄ΡΡΠ³ ΡΠΈΡΠΊΡΠ²Π° ΠΏΡΠ΅ΠΊΡΡΠ²Π°Π½Π΅ ΠΎΡ Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΠΊΠ° ΠΊΡΠΌ ΡΡΠ»ΡΠ³Π°ΡΠ°. ΠΠ»Π°ΡΠ½Π°ΡΠ° ΡΡΠ΅Π΄Π° ΠΏΠΎΠΌΠ°Π³Π° Π΄Π° ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π½Π΅ Π·Π°ΠΊΠ»ΠΈΠ½Π°Π½ΠΈΠ΅ Π·Π° ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΈΠ²Π° ΡΡΠ»ΡΠ³ΠΈ ΠΊΠ°ΡΠΎ
Π‘ΠΠ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π΄Π° ΠΏΠΎΠ²ΠΈΡΠ°Π²Π°ΡΠ΅ Π·Π°ΡΠ²ΠΊΠΈΡΠ΅/Π»ΠΈΠΌΠΈΡΠΈΡΠ΅ Π½Π° Π²Π°ΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ Π² ΠΏΠΎΠ΄ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΎΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅. Π‘ ΠΊΠ°ΠΊΠ²ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ? ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ Pods, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎ Π½ΡΠΊΠ°ΠΊΠ²Π° ΠΏΡΠΈΡΠΈΠ½Π° Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°Π½ΠΈ Ρ ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»Π½ΠΎ (ΠΊΠΎΠ΅ΡΠΎ Π½Π΅ Π΅ Π½Π°ΠΏΡΠ»Π½ΠΎ Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎ), ΡΠΎΠ³Π°Π²Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΎΠΏΠΈΡΠ°ΡΠ΅ Π΄Π° ΡΠ΅ Π΄ΠΎΠ²Π΅ΡΠΈΡΠ΅ Π½Π° VPA, Π·Π° Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΡΠ΅ΡΡΡΡΠΈΡΠ΅ ΡΠΈ. ΠΠ΅Π³ΠΎΠ²Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π΅ ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΠΏΡΠ΅ΠΏΠΎΡΡΠΊΠΈ, Π±Π°Π·ΠΈΡΠ°Π½Π° Π½Π° ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈ ΡΠ΅ΠΊΡΡΠΈ Π΄Π°Π½Π½ΠΈ ΠΎΡ metric-server, ΡΠ°ΠΊΠ° ΡΠ΅ Π°ΠΊΠΎ Π½Π΅ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΡΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π·Π°ΡΠ²ΠΊΠΈΡΠ΅/Π»ΠΈΠΌΠΈΡΠΈΡΠ΅, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎ Π΄Π° Π½Π°Π±Π»ΡΠ΄Π°Π²Π°ΡΠ΅ ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ°Π½ΠΈΡΠ΅ ΡΠ΅ΡΡΡΡΠΈ Π·Π° Π²Π°ΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ ΠΈ Π΄Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΡΠ΅, Π·Π° Π΄Π° ΡΠΏΠ΅ΡΡΠΈΡΠ΅ CPU ΠΈ ΠΏΠ°ΠΌΠ΅Ρ Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ°.
ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π΅ Π²Π·Π΅ΡΠΎ ΠΎΡ 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 ΠΏΠΎΠ΄, Π΄ΠΎΠΊΠ°ΡΠΎ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° ΠΏΠ°Π΄Π½Π΅ ΠΏΠΎΠ΄ ΠΏΡΠ°Π³Π° ΠΈΠ»ΠΈ Π΄ΠΎΠΊΠ°ΡΠΎ ΡΠ΅ Π΄ΠΎΡΡΠΈΠ³Π½Π΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΈΡ Π±ΡΠΎΠΉ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ.
ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π΅ Π²Π·Π΅ΡΠΎ ΠΎΡ https://levelup.gitconnected.com/kubernetes-autoscaling-101-cluster-autoscaler-horizontal-pod-autoscaler-and-vertical-pod-2a441d9ad231
Π Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΡΠΌ ΠΎΠ±ΠΈΡΠ°ΠΉΠ½ΠΈΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΊΠ°ΡΠΎ CPU ΠΈ ΠΏΠ°ΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ ΠΏΡΠ°Π³ΠΎΠ²Π΅ Π½Π° ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π½Π° Prometheus ΠΈ Π΄Π° ΡΠ°Π±ΠΎΡΠΈΡΠ΅ Ρ ΡΡΡ , Π°ΠΊΠΎ ΡΠΌΡΡΠ°ΡΠ΅, ΡΠ΅ ΡΠΎΠ²Π° Π΅ Π½Π°ΠΉ-ΡΠΎΡΠ½ΠΈΡΡ Π½Π°ΡΠΈΠ½ Π΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΠΊΠΎΠ³Π° Π΄Π° ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠΈ. Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠ΅ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ° ΠΏΠΎΠ΄ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΡΠ°Π³ Π½Π° ΠΌΠ΅ΡΡΠΈΠΊΠ°, HPA ΡΠ΅ Π·Π°ΠΏΠΎΡΠ½Π΅ Π΄Π° ΠΌΠ°ΡΠ°Π±ΠΈΡΠ° Pods Π΄ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈΡ Π±ΡΠΎΠΉ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ ΠΈΠ»ΠΈ Π΄ΠΎΠΊΠ°ΡΠΎ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ Π΄ΠΎΡΡΠΈΠ³Π½Π΅ ΠΏΡΠ°Π³Π°.
6. ΠΠ΅ Π·Π°Π±ΡΠ°Π²ΡΠΉΡΠ΅ Π·Π° Π°ΡΠΈΠ½ΠΈΡΠ΅ΡΠ° Π½Π° Π²ΡΠ·Π»ΠΈΡΠ΅ ΠΈ Π°ΡΠΈΠ½ΠΈΡΠ΅ΡΠ° Π½Π° ΠΏΠΎΠ΄
ΠΠ΅ Π²ΡΠΈΡΠΊΠΈ Π²ΡΠ·Π»ΠΈ ΡΠ°Π±ΠΎΡΡΡ Π½Π° Π΅Π΄ΠΈΠ½ ΠΈ ΡΡΡ Ρ Π°ΡΠ΄ΡΠ΅Ρ ΠΈ Π½Π΅ Π²ΡΠΈΡΠΊΠΈ ΠΏΠΎΠ΄ΠΎΠ²Π΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΈΠ½ΡΠ΅Π½Π·ΠΈΠ²Π½ΠΈ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡ. 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
ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ Π΄ΠΎΠΊΠ°ΡΠΎ ΠΈΠΌΠ° ΡΡΠΎΡΠ²Π΅ΡΠ΅Π½ Π·Π°ΠΏΠΈΡ Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° Π½Π° podtolerations
, ΡΠΎΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΠ°Π·Π³ΡΡΠ½Π°Ρ Π½Π° Π²ΡΠ·Π΅Π»Π° (Π² ΡΠΎΠ·ΠΈ ΠΏΡΠΈΠΌΠ΅Ρ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 ΠΊΠ»ΡΡΡΠ΅Ρ
ETCD ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΡΠ΅ΡΠ΅ ΠΌΠΎΠ·ΡΠΊΡΡ Π½Π° ΡΠ΅Π»ΠΈΡ ΠΊΠ»ΡΡΡΠ΅Ρ. ΠΠ½ΠΎΠ³ΠΎ Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΡΠ°Π·ΠΈ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ Π½Π° Π²ΠΈΡΠΎΠΊΠΎ Π½ΠΈΠ²ΠΎ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠΊΠΎΡΠΎΡΡΡΠ° Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ Π² "Cube" Π·Π°Π²ΠΈΡΠΈ ΠΎΡ ΡΠΎΠ²Π°. ΠΠΎΡΡΠ° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎ ΠΈ Π² ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ Π΄ΠΎΠ±ΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π±ΠΈ Π±ΠΈΠ»ΠΎ Π΄Π° Π·Π°ΠΏΠ°Π·ΠΈΡΠ΅ ETCD ΠΊΠ»ΡΡΡΠ΅Ρ Π½Π° Π³Π»Π°Π²Π½ΠΈΡΠ΅ Π²ΡΠ·Π»ΠΈ, Π·Π° Π΄Π° ΠΈΠΌΠ°ΡΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΎ Π·Π°Π±Π°Π²ΡΠ½Π΅ ΠΊΡΠΌ kube-apiserver. ΠΠΊΠΎ ΡΠΎΠ²Π° Π½Π΅ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠΎΡΡΠ°Π²Π΅ΡΠ΅ ETCD Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉ-Π±Π»ΠΈΠ·ΠΎ, Ρ Π΄ΠΎΠ±ΡΠ° ΡΠ΅ΡΡΠΎΡΠ½Π° Π»Π΅Π½ΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠ°ΡΡΠ½ΠΈΡΠΈΡΠ΅. Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° ΠΎΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ»ΠΊΠΎ Π²ΡΠ·Π»ΠΈ ΠΎΡ ETCD ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΈΠ·ΠΏΠ°Π΄Π½Π°Ρ Π±Π΅Π· ΡΠ²ΡΠ΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ°.
ΠΠΌΠ°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄, ΡΠ΅ ΠΏΡΠ΅ΠΊΠΎΠΌΠ΅ΡΠ½ΠΎΡΠΎ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° Π±ΡΠΎΡ Π½Π° ΡΡΠ°ΡΡΠ½ΠΈΡΠΈΡΠ΅ Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ²Π΅Π»ΠΈΡΠΈ ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡΠ° Π½Π° Π³ΡΠ΅ΡΠΊΠΈ Π·Π° ΡΠΌΠ΅ΡΠΊΠ° Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°, Π²ΡΠΈΡΠΊΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΡΠΌΠ΅ΡΠ΅Π½ΠΎ.
ΠΠΊΠΎ Π³ΠΎΠ²ΠΎΡΠΈΠΌ Π·Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° ΡΡΠ»ΡΠ³Π°ΡΠ°, ΡΠΎΠ³Π°Π²Π° ΠΈΠΌΠ° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΠ΅ΠΏΠΎΡΡΠΊΠΈ:
-
ΠΠΌΠ°ΠΉΡΠ΅ Π΄ΠΎΠ±ΡΡ Ρ Π°ΡΠ΄ΡΠ΅Ρ, Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ° (ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅
ΡΡΠΊ ). -
ΠΡΠΎΠΌΠ΅Π½Π΅ΡΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ°, Π°ΠΊΠΎ ΡΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΠΈΠ»ΠΈ ΠΊΠ»ΡΡΡΠ΅Ρ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΠΎΠΉΠΊΠ° DC ΠΈΠ»ΠΈ Π²Π°ΡΠ°ΡΠ° ΠΌΡΠ΅ΠΆΠ° ΠΈ Π΄ΠΈΡΠΊΠΎΠ²Π΅ ΠΎΡΡΠ°Π²ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π° ΡΠ΅ ΠΆΠ΅Π»Π°Π΅ (ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅
ΡΡΠΊ ).
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π’Π°Π·ΠΈ ΡΡΠ°ΡΠΈΡ ΠΎΠΏΠΈΡΠ²Π° ΡΠΎΡΠΊΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ Π½Π°ΡΠΈΡΡ Π΅ΠΊΠΈΠΏ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π° Π΄Π° ΡΠΏΠ°Π·Π²Π°. Π’ΠΎΠ²Π° Π½Π΅ Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΡΠΏΠΊΠ° ΠΏΠΎ ΡΡΡΠΏΠΊΠ° Π½Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡΡΠ°, Π° ΠΎΠΏΡΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΈ Π·Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅ΠΆΠΈΠΉΠ½ΠΈΡΠ΅ ΡΠ°Π·Ρ ΠΎΠ΄ΠΈ Π½Π° ΠΊΠ»ΡΡΡΠ΅Ρ. Π―ΡΠ½ΠΎ Π΅, ΡΠ΅ Π²ΡΠ΅ΠΊΠΈ ΠΊΠ»ΡΡΡΠ΅Ρ Π΅ ΡΠ½ΠΈΠΊΠ°Π»Π΅Π½ ΠΏΠΎ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½ Π½Π°ΡΠΈΠ½ ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡΡΠ° Π·Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΠΌΠΎΠ³Π°Ρ Π΄Π° Π²Π°ΡΠΈΡΠ°Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ, ΡΠ°ΠΊΠ° ΡΠ΅ Π±ΠΈ Π±ΠΈΠ»ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΎΠ±ΡΠ°ΡΠ½Π° Π²ΡΡΠ·ΠΊΠ° ΠΎΡ Π²Π°Ρ: ΠΊΠ°ΠΊ Π½Π°Π±Π»ΡΠ΄Π°Π²Π°ΡΠ΅ Π²Π°ΡΠΈΡ ΠΊΠ»ΡΡΡΠ΅Ρ Kubernetes, ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°ΡΠ΅ Π½Π΅Π³ΠΎΠ²Π°ΡΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ. Π‘ΠΏΠΎΠ΄Π΅Π»Π΅ΡΠ΅ ΠΎΠΏΠΈΡΠ° ΡΠΈ Π² ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ΅, ΡΠ΅ Π±ΡΠ΄Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ Π΄Π° Π³ΠΎ Π½Π°ΡΡΠΈΡΠ΅.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com