ΠΠ΄ΡΠ°Π²ΠΎ Π½Π° ΡΠΈΡΠ΅! ΠΠ°Ρ ΡΠ΅ Π²ΠΈΠΊΠ°ΠΌ ΠΠ»Π΅Π³ Π‘ΠΈΠ΄ΠΎΡΠ΅Π½ΠΊΠΎΠ², ΡΠ°Π±ΠΎΡΠ°ΠΌ Π²ΠΎ DomClick ΠΊΠ°ΠΊΠΎ ΡΠ΅Ρ Π½Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ½ΠΈΠΎΡ ΡΠΈΠΌ. ΠΡΠ±ΠΈΠΊ Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ Π²ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΠ΄ ΡΡΠΈ Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΠΈ Π·Π° ΠΎΠ²Π° Π²ΡΠ΅ΠΌΠ΅ Π΄ΠΎΠΆΠΈΠ²Π΅Π°Π²ΠΌΠ΅ ΠΌΠ½ΠΎΠ³Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΈ ΠΌΠΎΠΌΠ΅Π½ΡΠΈ ΡΠΎ Π½Π΅Π³ΠΎ. ΠΠ΅Π½Π΅Ρ ΡΠ΅ Π²ΠΈ ΠΊΠ°ΠΆΠ°ΠΌ ΠΊΠ°ΠΊΠΎ, ΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π΅Π½ ΠΏΡΠΈΡΡΠ°ΠΏ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΡΡΠ΅Π΄ΠΈΡΠ΅ ΡΡΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈ ΠΎΠ΄ 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
, Π°ΠΊΠΎ ΠΎΠΏΡ ΡΠΈΠΌΠΎΡ ΡΠ°ΠΊΠ° Π΄Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΠΈ ΠΏΠΎΠ΄Π»ΠΎΠ³ΠΈ ΡΡΠΎ ΡΠ΅ ΡΡΠΎΡΠ°Ρ ΡΡΡΠ΅ 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. Π‘Π΅ Π½Π°Π΄Π΅Π²Π°ΠΌ Π΄Π΅ΠΊΠ° Π½ΠΈΠΊΠΎΡ Π½Π΅ ΡΠ° ΠΊΠΎΡΠΈΡΡΠΈ βΠΠΎΡΠΊΠ°ΡΠ°β Π½Π° HDD Π²ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ, Π½ΠΎ ΠΏΠΎΠ½Π΅ΠΊΠΎΠ³Π°Ρ ΠΎΠ±ΠΈΡΠ½ΠΈΠΎΡ SSD Π²Π΅ΡΠ΅ Π½Π΅ Π΅ Π΄ΠΎΠ²ΠΎΠ»Π΅Π½. ΠΠ°ΠΈΠ΄ΠΎΠ²ΠΌΠ΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΊΠΎΠ³Π° Π΄Π½Π΅Π²Π½ΠΈΡΠΈΡΠ΅ Π³ΠΎ ΡΠ±ΠΈΠ²Π°Π° Π΄ΠΈΡΠΊΠΎΡ ΠΏΠΎΡΠ°Π΄ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ Π½Π° Π/Π ΠΈ Π½Π΅ΠΌΠ° ΠΌΠ½ΠΎΠ³Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡΠ°:
-
ΠΠΎΡΠΈΡΡΠ΅ΡΠ΅ SSD-Π΄ΠΈΡΠΊΠΎΠ²ΠΈ ΡΠΎ Π²ΠΈΡΠΎΠΊΠΈ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈ ΠΈΠ»ΠΈ ΠΏΡΠ΅ΡΡΠ»Π΅ΡΠ΅ ΡΠ΅ Π½Π° NVMe (Π°ΠΊΠΎ ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ ΡΠ²ΠΎΡ Ρ Π°ΡΠ΄Π²Π΅Ρ).
-
ΠΠ°ΠΌΠ°Π»Π΅ΡΠ΅ Π³ΠΎ Π½ΠΈΠ²ΠΎΡΠΎ Π½Π° ΡΠ΅ΡΠ°.
-
ΠΠ°ΠΏΡΠ°Π²Π΅ΡΠ΅ βΠΏΠ°ΠΌΠ΅ΡΠ½ΠΎβ Π±Π°Π»Π°Π½ΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΌΠ΅ΡΡΠ½ΠΊΠΈΡΠ΅ ΡΡΠΎ Π³ΠΎ ΡΠΈΠ»ΡΠ²Π°Π°Ρ Π΄ΠΈΡΠΊΠΎΡ (
podAntiAffinity
).
ΠΠ° Π΅ΠΊΡΠ°Π½ΠΎΡ ΠΏΠΎΠ³ΠΎΡΠ΅ ΡΠ΅ Π³Π»Π΅Π΄Π° ΡΡΠΎ ΡΠ΅ ΡΠ»ΡΡΡΠ²Π° ΠΏΠΎΠ΄ nginx-ingress-controller Π½Π° Π΄ΠΈΡΠΊΠΎΡ ΠΊΠΎΠ³Π° Π΅ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ΠΎ Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ΅ Π½Π° access_logs (~ 12 ΠΈΠ»ΡΠ°Π΄ΠΈ Π΄Π½Π΅Π²Π½ΠΈΡΠΈ/ΡΠ΅ΠΊ). ΠΠ²Π°Π° ΡΠΎΡΡΠΎΡΠ±Π°, ΡΠ΅ ΡΠ°Π·Π±ΠΈΡΠ°, ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π΄Π΅Π³ΡΠ°Π΄Π°ΡΠΈΡΠ° Π½Π° ΡΠΈΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π½Π° ΠΎΠ²ΠΎΡ ΡΠ°Π·ΠΎΠ».
Π¨ΡΠΎ ΡΠ΅ ΠΎΠ΄Π½Π΅ΡΡΠ²Π° Π΄ΠΎ PV, Π·Π° ΠΆΠ°Π», Π½Π΅ ΡΡΠΌ ΠΏΡΠΎΠ±Π°Π» ΡΠ΅
3. Π‘ΠΎΠ±Π΅ΡΠ΅ΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΠ»ΠΈΠΊΠΈ
ΠΠ°ΡΠ΄ΠΎΠ±ΡΠΎ Π΅ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΡΠ»ΠΈΠΊΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π·Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Kubernetes Π΄Π° Π³ΠΈ ΠΏΡΠ΅Π·Π΅ΠΌΠ΅ ΠΏΠΎΠ±ΡΠ·ΠΎ ΠΈ Π΄Π° Π³ΠΈ ΠΈΠ·Π²ΡΡΠΈ ΠΏΠΎΠ΅ΡΠΈΠΊΠ°ΡΠ½ΠΎ.
ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½ΠΎ Π·Π½Π°ΡΠΈ Π΄Π΅ΠΊΠ° ΡΠ»ΠΈΠΊΠΈΡΠ΅:
-
ΡΠΎΠ΄ΡΠΆΠΈ ΡΠ°ΠΌΠΎ Π΅Π΄Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΈΠ»ΠΈ ΠΈΠ·Π²ΡΡΡΠ²Π° ΡΠ°ΠΌΠΎ Π΅Π΄Π½Π° ΡΡΠ½ΠΊΡΠΈΡΠ°;
-
ΠΌΠ°Π»ΠΈ ΠΏΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°, Π±ΠΈΠ΄Π΅ΡΡΠΈ Π³ΠΎΠ»Π΅ΠΌΠΈΡΠ΅ ΡΠ»ΠΈΠΊΠΈ ΡΠ΅ ΠΏΡΠ΅Π½Π΅ΡΡΠ²Π°Π°Ρ ΠΏΠΎΠ»ΠΎΡΠΎ ΠΏΡΠ΅ΠΊΡ ΠΌΡΠ΅ΠΆΠ°ΡΠ°;
-
ΠΈΠΌΠ°Π°Ρ ΠΊΡΠ°ΡΠ½ΠΈ ΡΠΎΡΠΊΠΈ Π·Π° Π·Π΄ΡΠ°Π²ΡΠ΅ ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΎΡΡ ΡΡΠΎ ΠΌΡ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π°Π°Ρ Π½Π° ΠΡΠ±Π΅ΡΠ½Π΅ΡΠΈΡ Π΄Π° ΠΏΡΠ΅Π·Π΅ΠΌΠ΅ Π°ΠΊΡΠΈΡΠ° Π²ΠΎ ΡΠ»ΡΡΠ°Ρ Π½Π° ΠΏΡΠ΅ΠΊΠΈΠ½;
-
ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΈ Π·Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ (ΠΊΠ°ΠΊΠΎ Alpine ΠΈΠ»ΠΈ CoreOS), ΠΊΠΎΠΈ ΡΠ΅ ΠΏΠΎΠΎΡΠΏΠΎΡΠ½ΠΈ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠΊΠΈ Π³ΡΠ΅ΡΠΊΠΈ;
-
ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ΡΡΠ΅ΠΏΠ΅Π½ΠΈ Π³ΡΠ°Π΄Π±ΠΈ Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΠΈΡΠ΅ ΡΠ°ΠΌΠΎ ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°Π½ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ, Π° Π½Π΅ ΠΏΡΠΈΠ΄ΡΡΠΆΠ½ΠΈΡΠ΅ ΠΈΠ·Π²ΠΎΡΠΈ.
ΠΠΎΡΡΠΎΡΠ°Ρ ΠΌΠ½ΠΎΠ³Ρ Π°Π»Π°ΡΠΊΠΈ ΠΈ ΡΡΠ»ΡΠ³ΠΈ ΠΊΠΎΠΈ Π²ΠΈ Π΄ΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Π°Ρ Π΄Π° Π³ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΡΠ΅ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΡΠ»ΠΈΠΊΠΈΡΠ΅ Π²ΠΎ Π»Π΅Ρ. ΠΠ°ΠΆΠ½ΠΎ Π΅ ΡΠ΅ΠΊΠΎΠ³Π°Ρ Π΄Π° Π³ΠΈ ΠΎΠ΄ΡΠΆΡΠ²Π°ΡΠ΅ Π°ΠΆΡΡΠΈΡΠ°Π½ΠΈ ΠΈ ΡΠ΅ΡΡΠΈΡΠ°Π½ΠΈ Π·Π° Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΡ. ΠΠ°ΠΊΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π΄ΠΎΠ±ΠΈΠ²Π°ΡΠ΅:
-
ΠΠ°ΠΌΠ°Π»Π΅Π½ΠΎ ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΌΡΠ΅ΠΆΠ°ΡΠ° Π½Π° ΡΠ΅Π»ΠΈΠΎΡ ΠΊΠ»Π°ΡΡΠ΅Ρ.
-
ΠΠ°ΠΌΠ°Π»ΡΠ²Π°ΡΠ΅ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΡΡΠ°ΡΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΡ.
-
ΠΠΎΠΌΠ°Π»Π° Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π° Π½Π° ΡΠ΅Π»ΠΈΠΎΡ Π²Π°Ρ Docker ΡΠ΅Π³ΠΈΡΡΠ°Ρ.
4. ΠΠΎΡΠΈΡΡΠ΅ΡΠ΅ DNS ΠΊΠ΅Ρ
ΠΠΊΠΎ Π·Π±ΠΎΡΡΠ²Π°ΠΌΠ΅ Π·Π° Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ°, ΡΠΎΠ³Π°Ρ ΠΆΠΈΠ²ΠΎΡΠΎΡ Π΅ ΠΏΡΠΈΠ»ΠΈΡΠ½ΠΎ Π»ΠΎΡ Π±Π΅Π· ΠΏΠΎΠ΄Π΅ΡΡΠ²Π°ΡΠ΅ Π½Π° DNS ΡΠΈΡΡΠ΅ΠΌΠΎΡ Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ. ΠΠ΅ΠΊΠΎΠ³Π°Ρ, ΡΠ°Π·Π²ΠΈΠ²Π°ΡΠΈΡΠ΅ Π½Π° Kubernetes Π³ΠΎ ΠΏΠΎΠ΄Π΄ΡΠΆΠ°Π° Π½ΠΈΠ²Π½ΠΎΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ kube-dns. Π ΡΡΠΊΠ° Π±Π΅ΡΠ΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½, Π½ΠΎ ΠΎΠ²ΠΎΡ ΡΠΎΡΡΠ²Π΅Ρ Π½Π΅ Π±Π΅ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½ΠΎ ΠΏΠΎΠ΄Π΅ΡΠ΅Π½ ΠΈ Π½Π΅ Π³ΠΈ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈΡΠ΅ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈ, ΠΈΠ°ΠΊΠΎ ΡΠ΅ ΡΠΈΠ½Π΅ΡΠ΅ Π΄Π΅ΠΊΠ° Π΅ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½Π° Π·Π°Π΄Π°ΡΠ°. ΠΠΎΡΠΎΠ° ΡΠ΅ ΠΏΠΎΡΠ°Π²ΠΈΡΠ° coredns, Π½Π° ΠΊΠΎΠΈ ΡΠ΅ ΠΏΡΠ΅ΡΡΠ»ΠΈΠ²ΠΌΠ΅ ΠΈ Π½Π΅ΠΌΠ°Π²ΠΌΠ΅ ΡΠ°Π³Π°; ΠΏΠΎΠ΄ΠΎΡΠ½Π° ΡΡΠ°Π½Π° ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½Π° DNS ΡΡΠ»ΡΠ³Π° Π²ΠΎ K8s. ΠΠΎ ΠΎΠ΄ΡΠ΅Π΄Π΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΏΠΎΡΠ°ΡΠ½Π°Π²ΠΌΠ΅ Π΄ΠΎ 40 ΠΈΠ»ΡΠ°Π΄ΠΈ Π²ΡΡΠ΅ΠΆΠΈ Π²ΠΎ ΡΠ΅ΠΊΡΠ½Π΄Π° Π΄ΠΎ ΡΠΈΡΡΠ΅ΠΌΠΎΡ DNS, Π° ΠΎΠ²Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° ΡΡΠ°Π½Π° Π½Π΅Π΄ΠΎΠ²ΠΎΠ»Π½ΠΎ. ΠΠΎ, Π·Π° ΡΡΠ΅ΡΠ°, ΠΈΠ·Π»Π΅Π·Π΅ Nodelocaldns, Π°ΠΊΠ° ΡΠ°Π·ΠΎΠ» Π»ΠΎΠΊΠ°Π»Π΅Π½ ΠΊΠ΅Ρ, Π°ΠΊΠ°
ΠΠΎΡΡΠΎ Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ ΠΎΠ²Π°? ΠΠΎΡΡΠΎΠΈ Π³ΡΠ΅ΡΠΊΠ° Π²ΠΎ ΠΊΠ΅ΡΠ½Π΅Π»ΠΎΡ Π½Π° Linux ΡΡΠΎ, ΠΊΠΎΠ³Π° ΠΏΠΎΠ²Π΅ΡΠ΅ΠΊΡΠ°ΡΠ½ΠΈ ΠΏΠΎΠ²ΠΈΡΠΈ ΠΏΡΠ΅ΠΊΡ conntrack NAT ΠΏΡΠ΅ΠΊΡ UDP, Π΄ΠΎΠ²Π΅Π΄ΡΠ²Π° Π΄ΠΎ ΡΠΎΡΡΠΎΡΠ±Π° Π½Π° ΡΡΠΊΠ° Π·Π° Π·Π°ΠΏΠΈΡΠΈ Π²ΠΎ ΡΠ°Π±Π΅Π»ΠΈΡΠ΅ Π·Π° conntrack, Π° Π΄Π΅Π» ΠΎΠ΄ ΡΠΎΠΎΠ±ΡΠ°ΡΠ°ΡΠΎΡ ΠΏΡΠ΅ΠΊΡ NAT ΡΠ΅ Π³ΡΠ±ΠΈ (ΡΠ΅ΠΊΠΎΠ΅ ΠΏΠ°ΡΡΠ²Π°ΡΠ΅ Π½ΠΈΠ· ΡΡΠ»ΡΠ³Π°ΡΠ° Π΅ NAT). Nodelocaldns Π³ΠΎ ΡΠ΅ΡΠ°Π²Π° ΠΎΠ²ΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΡΠΎ ΠΎΡΠ»ΠΎΠ±ΠΎΠ΄ΡΠ²Π°ΡΠ΅ ΠΎΠ΄ NAT ΠΈ Π½Π°Π΄Π³ΡΠ°Π΄Π±Π° Π½Π° Π²ΡΡΠΊΠ°ΡΠ° ΡΠΎ TCP Π΄ΠΎ ΡΠΏΡΠΎΡΠΈΠ²ΠΎΠ΄Π½ΠΎ DNS, ΠΊΠ°ΠΊΠΎ ΠΈ Π»ΠΎΠΊΠ°Π»Π½ΠΎ ΠΊΠ΅ΡΠΈΡΠ°ΡΠ΅ Π½Π°Π³ΠΎΡΠ΅ DNS ΠΏΡΠ°ΡΠ°ΡΠ° (Π²ΠΊΠ»ΡΡΡΠ²Π°ΡΡΠΈ ΠΊΡΠ°ΡΠΎΠΊ Π½Π΅Π³Π°ΡΠΈΠ²Π΅Π½ ΠΊΠ΅Ρ ΠΎΠ΄ 5 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ).
5. Π‘ΡΠ°Π²Π΅ΡΠ΅ Π³ΠΈ ΠΌΠ΅ΡΡΠ½ΠΊΠΈΡΠ΅ Ρ ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»Π½ΠΎ ΠΈ Π²Π΅ΡΡΠΈΠΊΠ°Π»Π½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΈ
ΠΠΎΠΆΠ΅ΡΠ΅ Π»ΠΈ ΡΠΎ ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ Π΄Π° ΠΊΠ°ΠΆΠ΅ΡΠ΅ Π΄Π΅ΠΊΠ° ΡΠΈΡΠ΅ Π²Π°ΡΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΈ ΡΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈ Π·Π° Π΄Π²Π° Π΄ΠΎ ΡΡΠΈΠΊΡΠ°ΡΠ½ΠΎ Π·Π³ΠΎΠ»Π΅ΠΌΡΠ²Π°ΡΠ΅ Π½Π° ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅ΡΠΎ? ΠΠ°ΠΊΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ Π΄Π° Π³ΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΡΠ΅ΡΡΡΡΠΈΡΠ΅ Π½Π° Π²Π°ΡΠΈΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ? ΠΠ΄ΡΠΆΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΠΏΠΎΠ΄Π»ΠΎΠ³ΠΈ Π΄Π° ΡΠ°Π±ΠΎΡΠ°Ρ Π½Π°Π΄Π²ΠΎΡ ΠΎΠ΄ ΠΎΠ±Π΅ΠΌΠΎΡ Π½Π° ΡΠ°Π±ΠΎΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ ΠΈΠ·Π»ΠΈΡΠ½ΠΎ, Π½ΠΎ Π°ΠΊΠΎ Π³ΠΈ ΡΡΠ²Π°ΡΠ΅ Π΅Π΄Π΅Π½ Π΄ΠΎ Π΄ΡΡΠ³, ΠΏΠΎΡΡΠΎΠΈ ΡΠΈΠ·ΠΈΠΊ ΠΎΠ΄ Π·Π°ΡΡΠΎΡ ΠΎΠ΄ Π½Π΅Π½Π°Π΄Π΅ΡΠ½ΠΎ Π·Π³ΠΎΠ»Π΅ΠΌΡΠ²Π°ΡΠ΅ Π½Π° ΡΠΎΠΎΠ±ΡΠ°ΡΠ°ΡΠΎΡ Π΄ΠΎ ΡΡΠ»ΡΠ³Π°ΡΠ°. Π£ΡΠ»ΡΠ³ΠΈ ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅
ΠΠΠ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΈ Π΄Π° Π³ΠΈ ΠΏΠΎΠ΄ΠΈΠ³Π°ΡΠ΅ Π±Π°ΡΠ°ΡΠ°ΡΠ°/ΠΎΠ³ΡΠ°Π½ΠΈΡΡΠ²Π°ΡΠ°ΡΠ° Π½Π° Π²Π°ΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ Π²ΠΎ ΠΏΠΎΠ΄Π»ΠΎΠ³Π°ΡΠ° Π²ΠΎ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡ ΠΎΠ΄ Π²ΠΈΡΡΠΈΠ½ΡΠΊΠ°ΡΠ° ΡΠΏΠΎΡΡΠ΅Π±Π°. ΠΠ°ΠΊΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ ΠΊΠΎΡΠΈΡΠ½ΠΎ? ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ ΠΌΠ΅ΡΡΠ½ΠΊΠΈ ΠΊΠΎΠΈ ΠΏΠΎΡΠ°Π΄ΠΈ Π½Π΅ΠΊΠΎΡΠ° ΠΏΡΠΈΡΠΈΠ½Π° Π½Π΅ ΠΌΠΎΠΆΠ°Ρ Π΄Π° ΡΠ΅ Π½Π°ΠΌΠ°Π»Π°Ρ Ρ ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»Π½ΠΎ (ΡΡΠΎ Π½Π΅ Π΅ ΡΠ΅Π»ΠΎΡΠ½ΠΎ Π΄ΠΎΠ²Π΅ΡΠ»ΠΈΠ²ΠΎ), ΡΠΎΠ³Π°Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ ΠΎΠ±ΠΈΠ΄Π΅ΡΠ΅ Π΄Π° Π³ΠΈ Π΄ΠΎΠ²Π΅ΡΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π²ΠΎ Π½Π΅Π³ΠΎΠ²ΠΈΡΠ΅ ΡΠ΅ΡΡΡΡΠΈ Π½Π° VPA. ΠΠ΅Π³ΠΎΠ²Π°ΡΠ° ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ° Π΅ ΡΠΈΡΡΠ΅ΠΌ Π·Π° ΠΏΡΠ΅ΠΏΠΎΡΠ°ΠΊΠΈ Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° ΠΈΡΡΠΎΡΠΈΡΠΊΠΈ ΠΈ ΡΠ΅ΠΊΠΎΠ²Π½ΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΎΠ΄ ΠΌΠ΅ΡΡΠΈΡΠΊΠΈΠΎΡ ΡΠ΅ΡΠ²Π΅Ρ, ΠΏΠ° Π°ΠΊΠΎ Π½Π΅ ΡΠ°ΠΊΠ°ΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΈ Π΄Π° Π³ΠΈ ΠΌΠ΅Π½ΡΠ²Π°ΡΠ΅ Π±Π°ΡΠ°ΡΠ°ΡΠ°/ΠΎΠ³ΡΠ°Π½ΠΈΡΡΠ²Π°ΡΠ°ΡΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ Π΄Π° Π³ΠΈ ΡΠ»Π΅Π΄ΠΈΡΠ΅ ΠΏΡΠ΅ΠΏΠΎΡΠ°ΡΠ°Π½ΠΈΡΠ΅ ΡΠ΅ΡΡΡΡΠΈ Π·Π° Π²Π°ΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ ΠΈ Π΄Π° Π³ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈΡΠ΅ Π·Π° Π·Π°ΡΡΠ²ΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΎΡ ΠΈ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ° Π²ΠΎ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ.
Π‘Π»ΠΈΠΊΠ°ΡΠ° Π΅ ΠΏΡΠ΅Π·Π΅ΠΌΠ΅Π½Π° ΠΎΠ΄ https://levelup.gitconnected.com/kubernetes-autoscaling-101-cluster-autoscaler-horizontal-pod-autoscaler-and-vertical-pod-2a441d9ad231
Π Π°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠΎΡ Π²ΠΎ Kubernetes ΡΠ΅ΠΊΠΎΠ³Π°Ρ ΡΠ΅ Π·Π°ΡΠ½ΠΎΠ²Π° Π½Π° Π±Π°ΡΠ°ΡΠ°. ΠΠ΅Π· ΠΎΠ³Π»Π΅Π΄ Π½Π° Π²ΡΠ΅Π΄Π½ΠΎΡΡΠ° ΡΡΠΎ ΡΠ΅ ΡΠ° ΡΡΠ°Π²ΠΈΡΠ΅ ΡΠ°ΠΌΡ, ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠΎΡ ΡΠ΅ Π±Π°ΡΠ° ΡΠΎΠΎΠ΄Π²Π΅ΡΠ΅Π½ ΡΠ°Π·ΠΎΠ» Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° Π½Π΅Π³ΠΎ. ΠΡΠ°Π½ΠΈΡΠ½ΠΈΡΠ΅ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ Π·Π° ΠΊΡΠ±Π΅Π»Π΅ΡΠΎΡ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ ΠΊΠΎΠ³Π° Π΄Π° Π³ΠΎ ΠΏΡΠΈΠ³ΡΡΡΠ²Π° ΠΈΠ»ΠΈ ΡΠ±ΠΈΠ΅ ΠΌΠ΅ΡΡΠ½ΠΎΡ. Π Π±ΠΈΠ΄Π΅ΡΡΠΈ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΈΠΎΡ Π²Π°ΠΆΠ΅Π½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ Π΅ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠ° Π½Π° Π±Π°ΡΠ°ΡΠ°ΡΠ°, VPA ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ ΡΠΎ Π½Π΅Π³ΠΎ. Π‘Π΅ΠΊΠΎΠ³Π°Ρ ΠΊΠΎΠ³Π° ΡΠ΅ ΡΠ° ΡΠ°Π·ΠΌΠ΅ΡΠΈΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π²Π΅ΡΡΠΈΠΊΠ°Π»Π½ΠΎ, Π²ΠΈΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΡΠ΅ ΠΊΠΎΠΈ ΡΡΠ΅Π±Π° Π΄Π° Π±ΠΈΠ΄Π°Ρ Π±Π°ΡΠ°ΡΠ°ΡΠ°. Π¨ΡΠΎ ΡΠ΅ ΡΠ΅ ΡΠ»ΡΡΠΈ ΡΠΎ Π³ΡΠ°Π½ΠΈΡΠΈΡΠ΅ ΡΠΎΠ³Π°Ρ? ΠΠ²ΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ΅ ΡΠ΅ ΡΠΊΠ°Π»ΠΈΡΠ° ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΎΠ½Π°Π»Π½ΠΎ.
ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΊΠ° ΡΠ΅ Π²ΠΎΠΎΠ±ΠΈΡΠ°Π΅Π½ΠΈΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ Π·Π° pod:
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
ΠΠ°ΠΊΠΎ ΡΡΠΎ ΡΠΏΠΎΠΌΠ΅Π½Π°Π²ΠΌΠ΅ ΠΏΠΎΠ³ΠΎΡΠ΅, ΠΎΠ²Π° Π΅ ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΎΠ½Π°Π»Π½ΠΎ ΡΠΊΠ°Π»ΠΈΡΠ°ΡΠ΅ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΠΎΠ΄Π½ΠΎΡΠΎΡ Π±Π°ΡΠ°ΡΠ°/ΠΎΠ³ΡΠ°Π½ΠΈΡΡΠ²Π°ΡΠ° Π²ΠΎ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠΎΡ:
-
ΠΡΠΎΡΠ΅ΡΠΎΡ: 200m β 300m: ΡΠΎΠΎΠ΄Π½ΠΎΡ 1:1.75;
-
ΠΠ΅ΠΌΠΎΡΠΈΡΠ°: 250Mi β 500Mi: ΡΠΎΠΎΠ΄Π½ΠΎΡ 1:2.
Π¨ΡΠΎ ΡΠ΅ ΠΎΠ΄Π½Π΅ΡΡΠ²Π° Π΄ΠΎ Π₯Π₯Π, ΡΠΎΠ³Π°Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΡ Π½Π° ΡΠ°Π±ΠΎΡΠ° Π΅ ΠΏΠΎΡΡΠ°Π½ΡΠΏΠ°ΡΠ΅Π½ΡΠ΅Π½. ΠΠ΅ΡΡΠΈΠΊΠΈΡΠ΅ ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΎΡ ΠΈ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈ, ΠΈ Π°ΠΊΠΎ ΠΏΡΠΎΡΠ΅ΠΊΠΎΡ Π½Π° ΡΠΈΡΠ΅ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ Π³ΠΎ Π½Π°Π΄ΠΌΠΈΠ½Π΅ ΠΏΡΠ°Π³ΠΎΡ, Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° ΡΠ΅ ΡΠΊΠ°Π»ΠΈΡΠ° ΡΠΎ +1 ΠΏΠΎΠ΄ Π΄ΠΎΠ΄Π΅ΠΊΠ° Π²ΡΠ΅Π΄Π½ΠΎΡΡΠ° Π½Π΅ ΠΏΠ°Π΄Π½Π΅ ΠΏΠΎΠ΄ ΠΏΡΠ°Π³ΠΎΡ ΠΈΠ»ΠΈ Π΄ΠΎΠ΄Π΅ΠΊΠ° Π½Π΅ ΡΠ΅ Π΄ΠΎΡΡΠΈΠ³Π½Π΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΈΠΎΡ Π±ΡΠΎΡ Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ.
Π‘Π»ΠΈΠΊΠ°ΡΠ° Π΅ ΠΏΡΠ΅Π·Π΅ΠΌΠ΅Π½Π° ΠΎΠ΄ https://levelup.gitconnected.com/kubernetes-autoscaling-101-cluster-autoscaler-horizontal-pod-autoscaler-and-vertical-pod-2a441d9ad231
ΠΠΎΠΊΡΠ°Ρ Π²ΠΎΠΎΠ±ΠΈΡΠ°Π΅Π½ΠΈΡΠ΅ ΠΌΠ΅ΡΡΠΈΠΊΠΈ ΠΊΠ°ΠΊΠΎ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΎΡ ΠΈ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ ΠΏΡΠ°Π³ΠΎΠ²ΠΈ Π½Π° Π²Π°ΡΠΈΡΠ΅ ΡΠΎΠΏΡΡΠ²Π΅Π½ΠΈ ΠΌΠ΅ΡΡΠΈΠΊΠΈ ΠΎΠ΄ Prometheus ΠΈ Π΄Π° ΡΠ°Π±ΠΎΡΠΈΡΠ΅ ΡΠΎ Π½ΠΈΠ² Π°ΠΊΠΎ ΠΌΠΈΡΠ»ΠΈΡΠ΅ Π΄Π΅ΠΊΠ° ΡΠΎΠ° Π΅ Π½Π°ΡΡΠΎΡΠ½ΠΈΠΎΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π» Π·Π° ΡΠΎΠ° ΠΊΠΎΠ³Π° Π΄Π° ΡΠ° Π·Π³ΠΎΠ»Π΅ΠΌΠΈΡΠ΅ Π²Π°ΡΠ°ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°. Π¨ΡΠΎΠΌ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° ΡΠ΅ ΡΠ΅ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ° ΠΏΠΎΠ΄ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΎΡ ΠΌΠ΅ΡΡΠΈΡΠΊΠΈ ΠΏΡΠ°Π³, HPA ΡΠ΅ ΠΏΠΎΡΠ½Π΅ Π΄Π° Π³ΠΈ Π½Π°ΠΌΠ°Π»ΡΠ²Π° ΠΏΠ°ΡΡΠΈΡΠ°ΡΠ° Π΄ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈΠΎΡ Π±ΡΠΎΡ Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ ΠΈΠ»ΠΈ Π΄ΠΎΠ΄Π΅ΠΊΠ° ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π΅ Π³ΠΎ Π΄ΠΎΡΡΠΈΠ³Π½Π΅ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΎΡ ΠΏΡΠ°Π³.
6. ΠΠ΅ Π·Π°Π±ΠΎΡΠ°Π²Π°ΡΡΠ΅ Π·Π° Node Affinity ΠΈ Pod Affinity
ΠΠ΅ ΡΠΈΡΠ΅ ΡΠ°Π·Π»ΠΈ ΡΠ°Π±ΠΎΡΠ°Ρ Π½Π° ΠΈΡΡ Ρ Π°ΡΠ΄Π²Π΅Ρ, Π° Π½Π΅ ΡΠΈΡΠ΅ ΠΏΠΎΠ΄Π»ΠΎΠ³ΠΈ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ°Π±ΠΎΡΠ°Ρ ΡΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡΠΊΠΈ ΠΈΠ½ΡΠ΅Π½Π·ΠΈΠ²Π½ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ. Kubernetes Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΡΠ° ΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ ΡΠΏΠ΅ΡΠΈΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡΠ°ΡΠ° Π½Π° ΡΠ°Π·Π»ΠΈΡΠ΅ ΠΈ ΠΌΠ΅ΡΡΠ½ΠΊΠΈΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ ΠΡΠΈΠ½ΠΈΡΠ΅Ρ Π½Π° ΡΠ°Π·Π»ΠΈ ΠΈ ΠΡΠΈΠ½ΠΈΡΠ΅Ρ Π½Π° Pod.
ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ ΡΠ°Π·Π»ΠΈ ΠΊΠΎΠΈ ΡΠ΅ ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΈ Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΎ ΠΈΠ½ΡΠ΅Π½Π·ΠΈΠ²Π½Π° ΠΏΡΠ΅ΡΠΌΠ΅ΡΠΊΠ°, ΡΠΎΠ³Π°Ρ Π·Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½Π° Π΅ΡΠΈΠΊΠ°ΡΠ½ΠΎΡΡ ΠΏΠΎΠ΄ΠΎΠ±ΡΠΎ Π΅ Π΄Π° Π³ΠΈ Π²ΡΠ·ΡΠ²Π°ΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅ ΡΠΎ ΡΠΎΠΎΠ΄Π²Π΅ΡΠ½ΠΈΡΠ΅ ΡΠ°Π·Π»ΠΈ. ΠΠ° Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΎΠ²Π° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ 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
ΡΠ΅ Π³ΠΈ ΠΏΠΎΠ²ΡΠ·Π΅ ΠΌΠ΅ΡΡΠ½ΠΊΠΈΡΠ΅ Π·Π° ΡΠ°Π·ΠΎΠ» ΠΊΠΎΡ Π²Π΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ Π½Π° ΠΏΠΎΠ΄Π»ΠΎΠ³Π° ΡΠΎ ΡΠ°Π° ΠΎΠ·Π½Π°ΠΊΠ°.
ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ Π½ΡΠ΄ΠΈ ΠΈ ΠΏΠΎΠ»Π΅ podAntiAffinity
, ΡΡΠΎ, Π½Π°ΠΏΡΠΎΡΠΈΠ², Π½Π΅ Π³ΠΎ Π²ΡΠ·ΡΠ²Π° ΠΌΠ΅ΡΡΠ½ΠΎΡ Π·Π° ΡΠ°Π·ΠΎΠ» ΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈ ΠΌΠ΅ΡΡΠ½ΠΊΠΈ.
ΠΠ° ΠΈΠ·ΡΠ°Π·ΠΈΡΠ΅ nodeAffinity
ΠΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π΄Π°Π΄Π΅ ΠΈΡΡΠΈΠΎΡ ΡΠΎΠ²Π΅Ρ: ΠΎΠ±ΠΈΠ΄Π΅ΡΠ΅ ΡΠ΅ Π΄Π° Π³ΠΈ ΠΎΠ΄ΡΠΆΡΠ²Π°ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΈ ΠΈ Π»ΠΎΠ³ΠΈΡΠ½ΠΈ, Π½Π΅ ΠΎΠ±ΠΈΠ΄ΡΠ²Π°ΡΡΠ΅ ΡΠ΅ Π΄Π° ΡΠ° ΠΏΡΠ΅ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π»ΠΎΠ³Π°ΡΠ° ΡΠΎ ΡΠ»ΠΎΠΆΠ΅Π½ ΡΠ΅Ρ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π°. ΠΠ½ΠΎΠ³Ρ Π΅ Π»Π΅ΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄Π΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΊΠΎΠ΅ Π½Π΅ΠΌΠ° Π΄Π° ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ° Π½Π° ΡΡΠ»ΠΎΠ²ΠΈΡΠ΅ Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ, ΡΠΎΠ·Π΄Π°Π²Π°ΡΡΠΈ Π½Π΅ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅ Π½Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠΎΡ ΠΈ Π½Π°ΠΌΠ°Π»ΡΠ²Π°ΡΡΠΈ Π³ΠΈ Π²ΠΊΡΠΏΠ½ΠΈΡΠ΅ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈ.
7. ΠΠ°ΠΌΠΊΠΈ ΠΈ ΡΠΎΠ»Π΅ΡΠ°Π½ΡΠΈΠΈ
ΠΠΎΡΡΠΎΠΈ ΡΡΡΠ΅ Π΅Π΄Π΅Π½ Π½Π°ΡΠΈΠ½ Π·Π° ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠΎΡ. ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ Π³ΠΎΠ»Π΅ΠΌ ΠΊΠ»Π°ΡΡΠ΅Ρ ΡΠΎ ΡΡΠΎΡΠΈΡΠΈ ΡΠ°Π·Π»ΠΈ ΠΈ ΠΈΠ»ΡΠ°Π΄Π½ΠΈΡΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΈ, ΡΠΎΠ³Π°Ρ Π΅ ΠΌΠ½ΠΎΠ³Ρ ΡΠ΅ΡΠΊΠΎ Π΄Π° Π½Π΅ Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈΡΠ΅ ΠΎΠ΄ΡΠ΅Π΄Π΅Π½ΠΈ ΠΏΠΎΠ΄ΠΎΠ²ΠΈ Π΄Π° Π±ΠΈΠ΄Π°Ρ Ρ ΠΎΡΡΠΈΡΠ°Π½ΠΈ Π½Π° ΠΎΠ΄ΡΠ΅Π΄Π΅Π½ΠΈ ΡΠ°Π·Π»ΠΈ.
ΠΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠΎΡ Π½Π° Π΄Π°ΠΌΠΊΠΈ - ΠΏΡΠ°Π²ΠΈΠ»Π° Π·Π° Π·Π°Π±ΡΠ°Π½Π° - ΠΏΠΎΠΌΠ°Π³Π° Π²ΠΎ ΠΎΠ²Π°. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΎ ΠΎΠ΄ΡΠ΅Π΄Π΅Π½ΠΈ ΡΡΠ΅Π½Π°ΡΠΈΡΠ° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π·Π°Π±ΡΠ°Π½ΠΈΡΠ΅ ΠΎΠ΄ΡΠ΅Π΄Π΅Π½ΠΈ ΡΠ°Π·Π»ΠΈ Π΄Π° ΡΠ°Π±ΠΎΡΠ°Ρ Π½Π° ΠΏΠΎΠ΄Π»ΠΎΠ³ΠΈ. ΠΠ° Π΄Π° ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅ Π΄Π°ΠΌΠΊΠ° Π½Π° ΠΎΠ΄ΡΠ΅Π΄Π΅Π½ ΡΠ°Π·ΠΎΠ», ΡΡΠ΅Π±Π° Π΄Π° ΡΠ° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΠΎΠΏΡΠΈΡΠ°ΡΠ° taint
Π²ΠΎ ΠΊΡΠ±Π΅ΠΊΡΠ». ΠΠ°Π²Π΅Π΄Π΅ΡΠ΅ Π³ΠΎ ΠΊΠ»ΡΡΠΎΡ ΠΈ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠ° ΠΈ ΠΏΠΎΡΠΎΠ° ΠΎΠ±ΠΎΡΡΠ΅ ΠΊΠ°ΠΊΠΎ 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"
ΠΠ²Π° Π½Π΅ Π·Π½Π°ΡΠΈ Π΄Π΅ΠΊΠ° ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ ΠΏΡΠ΅ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ ΡΠ΅ ΠΏΠ°Π΄Π½Π΅ Π½Π° ΠΎΠ²ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ ΡΠ°Π·ΠΎΠ», ΠΎΠ²Π° Π½Π΅ Π΅ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠΎΡ Node Affinity ΠΈ nodeSelector
. ΠΠΎ, ΡΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°ΡΠ΅ Π½Π° Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΡΡΠΈΠ³Π½Π΅ΡΠ΅ ΠΌΠ½ΠΎΠ³Ρ ΡΠ»Π΅ΠΊΡΠΈΠ±ΠΈΠ»Π½ΠΈ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ Π·Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠΎΡ.
8. ΠΠΎΡΡΠ°Π²Π΅ΡΠ΅ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ Π·Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ ΠΏΠΎΠ΄
Π‘Π°ΠΌΠΎ Π·Π°ΡΠΎΠ° ΡΡΠΎ ΠΈΠΌΠ°ΡΠ΅ ΠΏΠΎΠ΄Π»ΠΎΠ³ΠΈ Π΄ΠΎΠ΄Π΅Π»Π΅Π½ΠΈ Π½Π° ΡΠ°Π·Π»ΠΈ Π½Π΅ Π·Π½Π°ΡΠΈ Π΄Π΅ΠΊΠ° ΡΠΈΡΠ΅ ΠΏΠΎΠ΄Π»ΠΎΠ³ΠΈ ΠΌΠΎΡΠ° Π΄Π° ΡΠ΅ ΡΡΠ΅ΡΠΈΡΠ°Π°Ρ ΡΠΎ ΠΈΡΡ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ΅Π±ΠΈ ΡΠ΅ ΡΠ°ΠΊΠ°ΡΠ΅ Π΄Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΠΈΡΠ΅ Π½Π΅ΠΊΠΎΠΈ ΠΏΠΎΠ΄Π»ΠΎΠ³ΠΈ ΠΏΡΠ΅Π΄ Π΄ΡΡΠ³ΠΈ.
Kubernetes Π½ΡΠ΄ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π½Π°ΡΠΈΠ½ΠΈ Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ Π½Π° Pod Priority ΠΈ 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. ΠΠΎΠ²ΠΈΡΠΎΠΊΠΈΡΠ΅ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ ΡΠ΅ ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠ°Π½ΠΈ Π·Π° ΡΠΈΡΡΠ΅ΠΌΡΠΊΠΈ ΠΏΠΎΠ΄Π»ΠΎΠ³ΠΈ ΠΊΠΎΠΈ ΡΠ΅ ΠΊΡΠΈΡΠΈΡΠ½ΠΈ Π·Π° ΠΌΠΈΡΠΈΡΠ°ΡΠ°, ΠΊΠΎΠΈ Π³Π΅Π½Π΅ΡΠ°Π»Π½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ°Ρ Π΄Π° ΡΠ΅ ΠΏΡΠ΅Π²Π΅Π½ΠΈΡΠ°Π°Ρ. ΠΠΎΠΌΠ΅ΡΡΡΠ²Π°ΡΠ΅ΡΠΎ ΡΠ΅ ΡΠ΅ ΡΠ»ΡΡΠΈ ΡΠ°ΠΌΠΎ Π°ΠΊΠΎ ΠΌΠ΅ΡΡΠ½ΠΊΠ°ΡΠ° ΡΠΎ Π²ΠΈΡΠΎΠΊ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ Π½Π΅ΠΌΠ° ΠΊΠ°Π΄Π΅ Π΄Π° ΡΠ΅ ΡΠ²ΡΡΠΈ, ΡΠΎΠ³Π°Ρ Π½Π΅ΠΊΠΎΠΈ ΠΎΠ΄ ΠΌΠ΅ΡΡΠ½ΠΊΠΈΡΠ΅ ΠΎΠ΄ ΠΎΠ΄ΡΠ΅Π΄Π΅Π½ ΡΠ°Π·ΠΎΠ» ΡΠ΅ Π±ΠΈΠ΄Π°Ρ Π΅Π²Π°ΠΊΡΠΈΡΠ°Π½ΠΈ. ΠΠΊΠΎ ΠΎΠ²ΠΎΡ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·Π°ΠΌ Π΅ ΠΏΡΠ΅ΠΌΠ½ΠΎΠ³Ρ ΠΊΡΡΡ Π·Π° Π²Π°Ρ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ° Π΄ΠΎΠ΄Π°Π΄Π΅ΡΠ΅ ΠΎΠΏΡΠΈΡΠ°ΡΠ° 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 ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ
ETCD ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΡΠ΅ΡΠ΅ ΠΌΠΎΠ·ΠΎΠΊ Π½Π° ΡΠ΅Π»ΠΈΠΎΡ ΠΊΠ»Π°ΡΡΠ΅Ρ. ΠΠ½ΠΎΠ³Ρ Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΎΠ΄ΡΠΆΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΠΎΠ²Π°Π° Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π½Π° Π²ΠΈΡΠΎΠΊΠΎ Π½ΠΈΠ²ΠΎ, Π±ΠΈΠ΄Π΅ΡΡΠΈ Π±ΡΠ·ΠΈΠ½Π°ΡΠ° Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ Π²ΠΎ Cube Π·Π°Π²ΠΈΡΠΈ ΠΎΠ΄ ΡΠΎΠ°. ΠΡΠΈΠ»ΠΈΡΠ½ΠΎ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΎ, Π° Π²ΠΎ ΠΈΡΡΠΎ Π²ΡΠ΅ΠΌΠ΅, Π΄ΠΎΠ±ΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π±ΠΈ Π±ΠΈΠ»ΠΎ Π΄Π° ΡΠ΅ Π·Π°Π΄ΡΠΆΠΈ ETCD ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ Π½Π° Π³Π»Π°Π²Π½ΠΈΡΠ΅ ΡΠ°Π·Π»ΠΈ ΡΠΎ ΡΠ΅Π» Π΄Π° ΠΈΠΌΠ° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΎ Π΄ΠΎΡΠ½Π΅ΡΠ΅ Π΄ΠΎ kube-apiserver. ΠΠΊΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΎΠ²Π°, ΡΠΎΠ³Π°Ρ ΠΏΠΎΡΡΠ°Π²Π΅ΡΠ΅ Π³ΠΎ ETCD ΡΡΠΎ Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ±Π»ΠΈΡΠΊΡ, ΡΠΎ Π΄ΠΎΠ±Π°Ρ ΠΏΡΠΎΠΏΡΡΠ΅Π½ ΠΎΠΏΡΠ΅Π³ ΠΏΠΎΠΌΠ΅ΡΡ ΡΡΠ΅ΡΠ½ΠΈΡΠΈΡΠ΅. ΠΡΡΠΎ ΡΠ°ΠΊΠ°, ΠΎΠ±ΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎΠ° ΠΊΠΎΠ»ΠΊΡ ΡΠ°Π·Π»ΠΈ ΠΎΠ΄ ETCD ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΡΠΏΠ°Π΄Π½Π°Ρ Π±Π΅Π· Π΄Π° ΠΌΡ Π½Π°ΡΡΠ΅ΡΠ°Ρ Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ
ΠΠΌΠ°ΡΡΠ΅ Π½Π° ΡΠΌ Π΄Π΅ΠΊΠ° ΠΏΡΠ΅ΠΊΡΠΌΠ΅ΡΠ½ΠΎΡΠΎ Π·Π³ΠΎΠ»Π΅ΠΌΡΠ²Π°ΡΠ΅ Π½Π° Π±ΡΠΎΡΠΎΡ Π½Π° ΡΠ»Π΅Π½ΠΎΠ²ΠΈ Π²ΠΎ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ° Π·Π³ΠΎΠ»Π΅ΠΌΠΈ ΡΠΎΠ»Π΅ΡΠ°Π½ΡΠΈΡΠ°ΡΠ° Π½Π° Π³ΡΠ΅ΡΠΊΠΈ Π½Π° ΡΠΌΠ΅ΡΠΊΠ° Π½Π° ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅, ΡΓ¨ ΡΡΠ΅Π±Π° Π΄Π° Π±ΠΈΠ΄Π΅ ΡΠΌΠ΅ΡΠ΅Π½ΠΎ.
ΠΠΊΠΎ Π·Π±ΠΎΡΡΠ²Π°ΠΌΠ΅ Π·Π° ΠΏΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ Π½Π° ΡΡΠ»ΡΠ³Π°ΡΠ°, ΠΈΠΌΠ° Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΠΏΡΠ΅ΠΏΠΎΡΠ°ΠΊΠΈ:
-
ΠΠΌΠ°ΡΡΠ΅ Π΄ΠΎΠ±Π°Ρ Ρ Π°ΡΠ΄Π²Π΅Ρ, Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°ΡΠ° Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ (ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΡΠΈΡΠ°ΡΠ΅
ΡΡΠΊΠ° ). -
ΠΡΠΈΠ»Π°Π³ΠΎΠ΄Π΅ΡΠ΅ Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π°ΠΊΠΎ ΡΡΠ΅ ΡΠ°ΡΠΈΡΠΈΠ»Π΅ ΠΊΠ»Π°ΡΡΠ΅Ρ ΠΏΠΎΠΌΠ΅ΡΡ ΠΏΠ°Ρ DC ΠΈΠ»ΠΈ Π²Π°ΡΠ°ΡΠ° ΠΌΡΠ΅ΠΆΠ° ΠΈ Π΄ΠΈΡΠΊΠΎΠ²ΠΈ ΠΎΡΡΠ°Π²Π°Π°Ρ ΠΌΠ½ΠΎΠ³Ρ Π΄Π° ΡΠ΅ ΠΏΠΎΡΠ°ΠΊΡΠ²Π°Π°Ρ (ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΡΠΈΡΠ°ΡΠ΅
ΡΡΠΊΠ° ).
ΠΠ°ΠΊΠ»ΡΡΠΎΠΊ
ΠΠ²Π°Π° ΡΡΠ°ΡΠΈΡΠ° Π³ΠΈ ΠΎΠΏΠΈΡΡΠ²Π° ΡΠΎΡΠΊΠΈΡΠ΅ ΡΠΎ ΠΊΠΎΠΈ Π½Π°ΡΠΈΠΎΡ ΡΠΈΠΌ ΡΠ΅ ΠΎΠ±ΠΈΠ΄ΡΠ²Π° Π΄Π° ΡΠ΅ ΡΡΠΎΠ³Π»Π°ΡΠΈ. ΠΠ²Π° Π½Π΅ Π΅ ΡΠ΅ΠΊΠΎΡ-ΠΏΠΎ-ΡΠ΅ΠΊΠΎΡ ΠΎΠΏΠΈΡ Π½Π° Π΄Π΅ΡΡΡΠ²Π°ΡΠ°, ΡΡΠΊΡ ΠΎΠΏΡΠΈΠΈ ΠΊΠΎΠΈ ΠΌΠΎΠΆΠ°Ρ Π΄Π° Π±ΠΈΠ΄Π°Ρ ΠΊΠΎΡΠΈΡΠ½ΠΈ Π·Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°ΡΠ΅ Π½Π° Π³ΠΎΡΠ½ΠΈΡΠ΅ ΡΡΠΎΡΠΎΡΠΈ Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ. ΠΠ°ΡΠ½ΠΎ Π΅ Π΄Π΅ΠΊΠ° ΡΠ΅ΠΊΠΎΡ ΠΊΠ»Π°ΡΡΠ΅Ρ Π΅ ΡΠ½ΠΈΠΊΠ°ΡΠ΅Π½ Π½Π° ΡΠ²ΠΎΡ Π½Π°ΡΠΈΠ½, Π° ΡΠ΅ΡΠ΅Π½ΠΈΡΠ°ΡΠ° Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ° ΠΌΠΎΠΆΠ΅ ΠΌΠ½ΠΎΠ³Ρ Π΄Π° ΡΠ΅ ΡΠ°Π·Π»ΠΈΠΊΡΠ²Π°Π°Ρ, ΠΏΠ° Π±ΠΈ Π±ΠΈΠ»ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ Π΄Π° ΡΠ΅ Π΄ΠΎΠ±ΠΈΡΠ°Ρ Π²Π°ΡΠΈΡΠ΅ ΠΏΠΎΠ²ΡΠ°ΡΠ½ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π·Π° ΡΠΎΠ° ΠΊΠ°ΠΊΠΎ Π³ΠΎ ΡΠ»Π΅Π΄ΠΈΡΠ΅ Π²Π°ΡΠΈΠΎΡ ΠΊΠ»Π°ΡΡΠ΅Ρ Kubernetes ΠΈ ΠΊΠ°ΠΊΠΎ Π³ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°ΡΠ΅ Π½Π΅Π³ΠΎΠ²ΠΈΡΠ΅ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈ. Π‘ΠΏΠΎΠ΄Π΅Π»Π΅ΡΠ΅ Π³ΠΎ Π²Π°ΡΠ΅ΡΠΎ ΠΈΡΠΊΡΡΡΠ²ΠΎ Π²ΠΎ ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ΅, ΡΠ΅ Π±ΠΈΠ΄Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ Π΄Π° ΡΠ΅ Π·Π½Π°Π΅.
ΠΠ·Π²ΠΎΡ: www.habr.com