ΠΠ΅ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ ΡΠ°ΠΊΠΆΠ΅ Π½ΡΠΆΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅, Π½ΠΎ ΠΎΠ½ΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠΏΠΎΠΊΠΎΠΉΠ½ΠΎ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ Π΄Π°Π½Π½ΡΠ΅ Π½Π΅ Π±ΡΠ΄ΡΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½Ρ ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ°.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅ΡΠ²ΠΈΡΡ Π΄Π»Ρ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Ρ ΠΏΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, Π½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ, Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅Π΅ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, ΡΠ΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½Π°Ρ ΠΏΠ°ΠΌΡΡΡ, Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌ Π²Π»ΠΈΡΠ½ΠΈΠ΅ΠΌ Π½Π° ΠΎΠ±ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ. ΠΡΡΠ³ΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ, ΡΡΠΎ Π² ΡΠ°ΠΉΠ»Π°Ρ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈΠ»ΠΈ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΠΊΠ»ΡΡΠΈ.
Π Kubernetes ΡΠΆΠ΅ Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΈΠΏΠΎΠ²
ΠΡΠ΅ΠΌΠ΅ΡΠ½ΡΠ΅
ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ Π΄Π»Ρ ΡΠΎΠΌΠΎΠ² ΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΠ΅ΡΡΡΡΠΎΠ² ΡΠ·Π»Π° ΠΈΠ»ΠΈ Π΄Π»Ρ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°, Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠ³ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ·Π»Π°Ρ . ΠΠΎΡΡΠΎΠΌΡ Π² Kubernetes 1.19 ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π΄Π²Π΅ Π½ΠΎΠ²ΡΠ΅ ΡΡΠ½ΡΠΈΠΈ ΡΠΎΠΌΠΎΠ² Π΄Π»Ρ Π°Π»ΡΡΠ°-ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΠ½ΡΠ΅ΠΏΡΡΠ°Π»ΡΠ½ΠΎ ΠΏΠΎΡ ΠΎΠΆΠΈΡ Π½Π° ΡΠΎΠΌΠ° EmptyDir:
-
ΡΡΠ΅ΠΌΠ΅ΡΠ½ΡΠ΅ ΡΠΎΠΌΠ° ΠΎΠ±ΡΠ΅Π³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ;
-
ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ Π΅ΠΌΠΊΠΎΡΡΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° CSI.
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°:
-
Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΌ, Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΠΌ ΠΏΠΎ ΡΠ΅ΡΠΈ;
-
ΡΠΎΠΌΠ° ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ Π·Π°Π΄Π°Π½Π½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠ΅Π²ΡΡΠ΅Π½ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ;
-
ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ Π»ΡΠ±ΡΠΌΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°ΠΌΠΈ CSI, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΠΌΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΡ ΡΠΎΠΌΠΎΠ² ΠΈ (Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ Π΅ΠΌΠΊΠΎΡΡΠΈ) ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠΌΠΈ Π²ΡΠ·ΠΎΠ²
GetCapacity
; -
ΡΠΎΠΌΠ° ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΡΠ°Π»ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, Π·Π°Π²ΠΈΡΡΡΠΈΠ΅ ΠΎΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²;
-
Π²ΡΠ΅ ΡΠΈΠΏΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΡΠΎΠΌΠΎΠΌ (ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ½ΠΈΠΌΠΊΠ° ΡΠΎΡΡΠΎΡΠ½ΠΈΡ, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈ Ρ.ΠΏ.) ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ;
-
ΡΠΎΠΌΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Ρ Π»ΡΠ±ΡΠΌ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠΈΠΌ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈΠ»ΠΈ ΡΠΎΠΌΠ°;
-
ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ Kubernetes ΡΠ°ΠΌ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠ΅ ΡΠ·Π»Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΠΈ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠ° ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ webhooks.
ΠΠ°ΡΠΈΠ°Π½ΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΡΠ΅ΠΌΠ΅ΡΠ½ΡΠ΅ ΡΠΎΠΌΠ° ΠΎΠ±ΡΠ΅Π³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π΄Π»Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ:
ΠΠΎΡΡΠΎΡΠ½Π½Π°Ρ ΠΏΠ°ΠΌΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π°ΠΌΠ΅Π½Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ memcached
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π²ΡΠΏΡΡΠΊΠΈ memcached
ΠΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ LVM Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠ΅ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ, ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠΎΡΠΎΡΡΡ
ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, ΠΌΠΎΠ³ΡΡ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ΅ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Ρ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ ΠΈΠ»ΠΈ ΠΌΠ΅ΡΡΠΈΠΊΠ°ΠΌΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΡΠΎΠΌΠ° EmptyDir ΠΎΡ Kubernetes. Π ΠΏΡΠΈΠΌΠ΅ΡΡ, Π΄Π»Ρ ΡΡΠΎΠΉ ΡΠ΅Π»ΠΈ Π±ΡΠ» Π½Π°ΠΏΠΈΡΠ°Π½
ΠΠΎΡΡΡΠΏ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠΎΠΌΠΎΠ² Ρ Π΄Π°Π½Π½ΡΠΌΠΈ
ΠΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΎΠΌΠ° ΠΏΡΠΈ:
-
Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ
ΡΠ½ΠΈΠΌΠΊΠ° ΡΠΎΠΌΠ° ; -
ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ
ΠΊΠΎΠΏΠΈΠΈ ΡΠΎΠΌΠ° ; -
ΡΠ°Π±ΠΎΡΠ΅
Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π΅ΠΉ Π΄Π°Π½Π½ΡΡ .
ΠΡΠΈ ΡΠΎΠΌΠ° ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½Ρ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ.
ΠΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ
ΠΡΠ΅ΠΌΠ΅ΡΠ½ΡΠ΅ ΡΠΎΠΌΠ° ΠΎΠ±ΡΠ΅Π³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ
ΠΠ»ΡΡΠ΅Π²ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΡ ΡΡΠ΅ΠΌΠ΅ΡΠ½ΡΡ
ΡΠΎΠΌΠΎΠ² ΠΎΠ±ΡΠ΅Π³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½ΠΎΠ²ΡΠΉ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΡΠΎΠΌΠ°, EphemeralVolumeSource
, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π²ΡΠ΅ ΠΏΠΎΠ»Ρ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠ° ΠΊ ΡΠΎΠΌΡ (ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Π·Π°ΠΏΡΠΎΡ Π½Π° ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΠΉ ΡΠΎΠΌ, PVC). ΠΠΎΠ²ΡΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ Π² kube-controller-manager
ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ ΠΏΠΎΠ΄Ρ, ΡΠΎΠ·Π΄Π°ΡΡΠΈΠ΅ ΡΠ°ΠΊΠΎΠΉ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΡΠΎΠΌΠ°, Π° Π·Π°ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π΅Ρ PVC Π΄Π»Ρ ΡΡΠΈΡ
ΠΏΠΎΠ΄ΠΎΠ². ΠΠ»Ρ CSI Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° ΡΡΠΎΡ Π·Π°ΠΏΡΠΎΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅, ΠΏΠΎΡΡΠΎΠΌΡ Π·Π΄Π΅ΡΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ.
ΠΠΎΠΊΠ° ΡΠ°ΠΊΠΈΠ΅ PVC ΡΡΡΠ΅ΡΡΠ²ΡΡΡ — ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ, ΠΊΠ°ΠΊ ΠΈ Π»ΡΠ±ΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΡ Π½Π° ΡΠΎΠΌ. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΡΡΠ»ΠΊΠΎΠΉ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° Π΄Π°Π½Π½ΡΡ ΠΏΡΠΈ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΎΠΌΠ° ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠ½ΠΈΠΌΠΊΠ° Ρ ΡΠΎΠΌΠ°. ΠΠ±ΡΠ΅ΠΊΡ PVC ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠΎΠΌΠ°.
ΠΠΌΠ΅Π½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΡ PVC ΠΏΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ: ΡΡΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ΄Π° ΠΈ ΠΈΠΌΠ΅Π½ΠΈ ΡΠΎΠΌΠ°, ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ Π΄Π΅ΡΠΈΡΠΎΠΌ. ΠΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΡΡΡ ΠΈΠΌΠ΅Π½ ΡΠΏΡΠΎΡΠ°Π΅Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ PVC, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΅Π³ΠΎ Π½Π΅ Π½Π°Π΄ΠΎ ΠΈΡΠΊΠ°ΡΡ, Π΅ΡΠ»ΠΈ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ ΠΈΠΌΡ ΠΏΠΎΠ΄Π° ΠΈ ΠΈΠΌΡ ΡΠΎΠΌΠ°. ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ ΠΈΠΌΡ ΡΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΎ, ΡΡΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Kubernetes ΠΈ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π·Π°ΠΏΡΡΠΊ ΠΏΠΎΠ΄Π° Π±Π»ΠΎΠΊΠΈΡΡΠ΅ΡΡΡ.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π±ΡΡΡ ΡΠ²Π΅ΡΠ΅Π½Π½ΡΠΌ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠΎΠΌ ΡΠ΄Π°Π»ΡΠ΅ΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΏΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ Π΄Π΅Π»Π°Π΅Ρ ΠΏΠΎΠ΄ Π²Π»Π°Π΄Π΅Π»ΡΡΠ΅ΠΌ Π·Π°ΠΏΡΠΎΡΠ° Π½Π° ΡΠΎΠΌ. ΠΠΎΠ³Π΄Π° ΠΏΠΎΠ΄ ΡΠ΄Π°Π»ΡΠ΅ΡΡΡ — ΠΎΡΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΡΡΠ°ΡΠ½ΡΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠ±ΠΎΡΠΊΠΈ ΠΌΡΡΠΎΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΄Π°Π»ΡΠ΅Ρ ΠΊΠ°ΠΊ Π·Π°ΠΏΡΠΎΡ, ΡΠ°ΠΊ ΠΈ ΡΠΎΠΌ.
ΠΠ°ΠΏΡΠΎΡΠ°ΠΌ ΡΡΠ°Π²ΠΈΡΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Π΄ΡΠ°ΠΉΠ²Π΅Ρ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΡΠ΅ΡΠ΅Π· ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ ΠΊΠ»Π°ΡΡΠ° Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°. Π₯ΠΎΡΡ ΠΊΠ»Π°ΡΡΡ Ρ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΌ ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΈΠΌ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ΠΌ (ΠΎΠ½ΠΈ ΠΆΠ΅ WaitForFirstConsumer
) ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ, Π΄Π»Ρ ΡΡΠ΅ΠΌΠ΅ΡΠ½ΡΡ
ΡΠΎΠΌΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ WaitForFirstConsumer
, ΡΠΎΠ³Π΄Π° ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ·Π»Π°, ΡΠ°ΠΊ ΠΈ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΡ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΠΏΡΠΈ Π²ΡΠ±ΠΎΡΠ΅ ΡΠ·Π»Π°. ΠΠ΄Π΅ΡΡ ΠΆΠ΅ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π½ΠΎΠ²Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ.
ΠΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ Π΅ΠΌΠΊΠΎΡΡΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°
ΠΠ±ΡΡΠ½ΠΎ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π΄Π°Π½Π½ΡΡ ΠΎ ΡΠΎΠΌ, Π³Π΄Π΅ CSI Π΄ΡΠ°ΠΉΠ²Π΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΎΠΌ. Π’Π°ΠΊΠΆΠ΅ Ρ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠ° Π½Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ²ΡΠ·Π°ΡΡΡΡ Ρ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠΌ Π½Π°ΠΏΡΡΠΌΡΡ Π΄Π»Ρ Π·Π°ΠΏΡΠΎΡΠ° ΡΡΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ. ΠΠΎΡΡΠΎΠΌΡ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ ΠΎΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ ΡΠ·Π»Ρ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π½Π΅ Π½Π°ΠΉΠ΄Π΅Ρ ΡΠΎΡ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΎΠΌΠ° ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌΠΈ (ΠΏΠΎΠ·Π΄Π½Π΅Π΅ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅), Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΡΡΠ°Π²ΠΈΡ Π²ΡΠ±ΠΎΡ ΠΌΠ΅ΡΡΠ° Π·Π° Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠΌ (Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ΅ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅).
ΠΠΎΠ²ΡΠΉ CSIStorageCapacity
, Π½Π°Ρ
ΠΎΠ΄ΡΡΠΈΠΉΡΡ Π² ΡΡΠ°Π΄ΠΈΠΈ alpha, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½ΡΠΆΠ½ΡΡ
Π΄Π°Π½Π½ΡΡ
Π² etcd, ΡΠ°ΠΊ ΡΡΠΎ ΠΎΠ½ΠΈ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΡ. Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΡΡΠ΅ΠΌΠ΅ΡΠ½ΡΡ
ΡΠΎΠΌΠΎΠ² ΠΎΠ±ΡΠ΅Π³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΡΠΈ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° Π½ΡΠΆΠ½ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ Π΅ΠΌΠΊΠΎΡΡΠΈ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°: external-provisioner
Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π΅ΠΌΠΊΠΎΡΡΠΈ, ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌΡΡ ΠΎΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° ΡΠ΅ΡΠ΅Π· ΠΎΠ±ΡΡΠ½ΡΠΉ GetCapacity
.
ΠΡΠ»ΠΈ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΡ Π½Π°Π΄ΠΎ Π²ΡΠ±ΡΠ°ΡΡ ΡΠ·Π΅Π» Π΄Π»Ρ ΠΏΠΎΠ΄Π° Ρ Π½Π΅ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π½ΡΠΌ ΡΠΎΠΌΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΌ ΠΏΠΎΠ·Π΄Π½Π΅Π΅ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅, Π° Π΄ΡΠ°ΠΉΠ²Π΅Ρ ΠΏΡΠΈ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠΈ Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°Π» ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Ρ ΡΠ»Π°Π³ CSIDriver.storageCapacity
, ΡΠΎ Π±ΡΠ΄ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΡΠ±ΡΠΎΡΠ΅Π½Ρ ΡΠ·Π»Ρ, Ρ ΠΊΠΎΡΠΎΡΡΡ
Π½Π΅ΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΅ΠΌΠΊΠΎΡΡΠΈ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°. ΠΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠ°ΠΊ Π΄Π»Ρ ΡΡΠ΅ΠΌΠ΅ΡΠ½ΡΡ
ΠΎΠ±ΡΠ΅Π³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΠ°ΠΊ ΠΈ ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΡ
ΡΠΎΠΌΠΎΠ², Π½ΠΎ Π½Π΅ Π΄Π»Ρ ΡΡΠ΅ΠΌΠ΅ΡΠ½ΡΡ
ΡΠΎΠΌΠΎΠ² CSI, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΡ
ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΡΠΈΡΠ°Π½Ρ Kubernetes.
ΠΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ, ΡΠΎΠΌΠ° Ρ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΌΠΈ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ΄ΠΎΠ², Π° ΠΈΡ
ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠΌ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ external-provisioner
ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΊΠ»Π°ΡΡΡ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ Ρ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΌ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ Π½Π΅ Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ.
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ kubernetes Π²ΡΠ½ΡΠΆΠ΄Π΅Π½ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΡΡΡΠ°ΡΠ΅Π²ΡΠ΅ΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ, Π½Π΅Ρ Π³Π°ΡΠ°Π½ΡΠΈΠΉ, ΡΡΠΎ Π΅ΠΌΠΊΠΎΡΡΡ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ½Π° Π² Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΊΠΎΠ³Π΄Π° ΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡΡΡ, Π½ΠΎ, ΡΠ΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΡΠ°Π½ΡΡ, ΡΡΠΎ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ Π±Π΅Π· ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΡ ΠΏΠΎΠΏΡΡΠΎΠΊ, ΠΏΠΎΠ²ΡΡΠ°ΡΡΡΡ.
N.B. ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ Β«ΠΏΠΎΡΡΠ΅Π½ΠΈΡΠΎΠ²Π°ΡΡΡΡ Π½Π° ΠΊΠΎΡΠΊΠ°Ρ
ΡΡΠ΅Π½Π΄Π΅Β», Π° Π² ΡΠ»ΡΡΠ°Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΡΠΆ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊΠ²Π°Π»ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΠΎΠΌΠΎΡΡ ΡΠ΅Ρ
ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Π½Π° ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π°Ρ
—
ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ
CSIStorageCapacity
ΠΠ±ΡΠ΅ΠΊΡΡ CSIStorageCapacity Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°Ρ ΠΈΠΌΠ΅Π½, ΠΏΡΠΈ ΡΠ°ΡΠΊΠ°ΡΠΊΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° CSI Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΈΠΌΠ΅Π½ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΡ ΠΏΡΠ°Π²Π° RBAC Π΄Π»Ρ CSIStorageCapacity Π² ΡΡΠΎΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΠΎΡΠΊΡΠ΄Π° ΠΏΡΠΈΡ ΠΎΠ΄ΡΡ Π΄Π°Π½Π½ΡΠ΅. Π Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Kubernetes Π½Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΡΡΠΎ, Π° ΠΎΠ±ΡΡΠ½ΠΎ Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ ΡΡΠ°Π²ΡΡΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΈΠΌΠ΅Π½, ΡΠ°ΠΊ ΡΡΠΎ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅ ΠΎΠΆΠΈΠ΄Π°Π΅ΡΡΡ, ΡΡΠΎ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° Π±ΡΠ΄ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈ Π½Π΅ Π±ΡΠ΄ΡΡ ΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ Π½Π΅Π²Π΅ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ (ΠΈ ΡΡΡ ΠΌΠ½Π΅ ΠΊΠ°ΡΡΠ° ΠΏΠΎΠΏΠ΅ΡΠ»Π°, ΠΏΡΠΈΠΌ. ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΠΈΠΊΠ° ΠΏΠΎ ΠΌΠΎΡΠΈΠ²Π°ΠΌ Π±ΠΎΡΠΎΠ΄Π°ΡΠΎΠ³ΠΎ Π°Π½Π΅ΠΊΠ΄ΠΎΡΠ°)
ΠΡΠ΅ΠΌΠ΅ΡΠ½ΡΠ΅ ΡΠΎΠΌΠ° ΠΎΠ±ΡΠ΅Π³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ
ΠΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΈΠΌΠ΅ΡΡ ΠΏΡΠ°Π²Π° Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΠ΄Π° (Π½Π°ΠΏΡΡΠΌΡΡ ΠΈΠ»ΠΈ ΠΎΠΏΠΎΡΡΠ΅Π΄ΠΎΠ²Π°Π½Π½ΠΎ) — ΠΎΠ½ΠΈ ΡΠ°ΠΊΠΆΠ΅ ΡΠΌΠΎΠ³ΡΡ ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΠ΅ΠΌΠ΅ΡΠ½ΡΠ΅ ΡΠΎΠΌΠ° ΠΎΠ±ΡΠ΅Π³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Ρ Π½ΠΈΡ
Π½Π΅Ρ ΠΏΡΠ°Π² Π½Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΠ° Π½Π° ΡΠΎΠΌ. Π Π²ΡΠ΅ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΡΠ°Π² RBAC ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΊ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ·Π΄Π°Π΅Ρ PVC, Π° Π½Π΅ ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ
ΠΡΠΈΠΌΠ΅Ρ
ΠΡΠ΄Π΅Π»ΡΠ½Π°Ρ
ΠΠ° ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡΠ΅ΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ (Linux, ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
git clone --branch=kubernetes-1-19-blog-post https://github.com/intel/pmem-csi.git
cd pmem-csi
export TEST_KUBERNETES_VERSION=1.19 TEST_FEATURE_GATES=CSIStorageCapacity=true,GenericEphemeralVolume=true TEST_PMEM_REGISTRY=intel
make start && echo && test/setup-deployment.sh
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²ΡΠ΅ ΠΎΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π²ΡΠ²ΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
The test cluster is ready. Log in with [...]/pmem-csi/_work/pmem-govm/ssh.0, run
kubectl once logged in. Alternatively, use kubectl directly with the
following env variable:
KUBECONFIG=[...]/pmem-csi/_work/pmem-govm/kube.config
secret/pmem-csi-registry-secrets created
secret/pmem-csi-node-secrets created
serviceaccount/pmem-csi-controller created
...
To try out the pmem-csi driver ephemeral volumes:
cat deploy/kubernetes-1.19/pmem-app-ephemeral.yaml |
[...]/pmem-csi/_work/pmem-govm/ssh.0 kubectl create -f -
ΠΠ±ΡΠ΅ΠΊΡΡ CSIStorageCapacity Π½Π΅ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°ΡΡ ΡΡΠ΅Π½ΠΈΠ΅ Π»ΡΠ΄ΡΠΌΠΈ, ΡΠ°ΠΊ ΡΡΠΎ Π½Π°Π΄ΠΎ Π½Π΅ΠΊΠ°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΈΠ»ΡΡΡΠΎΠ² ΡΠ°Π±Π»ΠΎΠ½Π° Π½Π° Golang Π±ΡΠ΄ΡΡ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ ΠΊΠ»Π°ΡΡΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡ, Π² ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π±ΡΠ΄ΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½Ρ ΠΈΠΌΡ, ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡ ΠΈ Π΅ΠΌΠΊΠΎΡΡΡ:
$ kubectl get
-o go-template='{{range .items}}{{if eq .storageClassName "pmem-csi-sc-late-binding"}}{{.metadata.name}} {{.nodeTopology.matchLabels}} {{.capacity}}
{{end}}{{end}}'
csistoragecapacities
csisc-2js6n map[pmem-csi.intel.com/node:pmem-csi-pmem-govm-worker2] 30716Mi
csisc-sqdnt map[pmem-csi.intel.com/node:pmem-csi-pmem-govm-worker1] 30716Mi
csisc-ws4bv map[pmem-csi.intel.com/node:pmem-csi-pmem-govm-worker3] 30716Mi
ΠΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ°ΠΊΠΎΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅:
$ kubectl describe csistoragecapacities/csisc-6cw8j
Name: csisc-sqdnt
Namespace: default
Labels: <none>
Annotations: <none>
API Version: storage.k8s.io/v1alpha1
Capacity: 30716Mi
Kind: CSIStorageCapacity
Metadata:
Creation Timestamp: 2020-08-11T15:41:03Z
Generate Name: csisc-
Managed Fields:
...
Owner References:
API Version: apps/v1
Controller: true
Kind: StatefulSet
Name: pmem-csi-controller
UID: 590237f9-1eb4-4208-b37b-5f7eab4597d1
Resource Version: 2994
Self Link: /apis/storage.k8s.io/v1alpha1/namespaces/default/csistoragecapacities/csisc-sqdnt
UID: da36215b-3b9d-404a-a4c7-3f1c3502ab13
Node Topology:
Match Labels:
pmem-csi.intel.com/node: pmem-csi-pmem-govm-worker1
Storage Class Name: pmem-csi-sc-late-binding
Events: <none>
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΡΡ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΎΠ΄Π½ΠΈΠΌ ΡΡΠ΅ΠΌΠ΅ΡΠ½ΡΠΌ ΡΠΎΠΌΠΎΠΌ ΠΎΠ±ΡΠ΅Π³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ°ΠΉΠ»Π° pmem-app-ephemeral.yaml
:
# This example Pod definition demonstrates
# how to use generic ephemeral inline volumes
# with a PMEM-CSI storage class.
kind: Pod
apiVersion: v1
metadata:
name: my-csi-app-inline-volume
spec:
containers:
- name: my-frontend
image: intel/pmem-csi-driver-test:v0.7.14
command: [ "sleep", "100000" ]
volumeMounts:
- mountPath: "/data"
name: my-csi-volume
volumes:
- name: my-csi-volume
ephemeral:
volumeClaimTemplate:
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 4Gi
storageClassName: pmem-csi-sc-late-binding
ΠΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π²ΡΡΠ΅, Ρ Π½Π°Ρ ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠΎΠ΄ ΠΈ PVC:
$ kubectl get pods/my-csi-app-inline-volume -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
my-csi-app-inline-volume 1/1 Running 0 6m58s 10.36.0.2 pmem-csi-pmem-govm-worker1 <none> <none>
$ kubectl get pvc/my-csi-app-inline-volume-my-csi-volume
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
my-csi-app-inline-volume-my-csi-volume Bound pvc-c11eb7ab-a4fa-46fe-b515-b366be908823 4Gi RWO pmem-csi-sc-late-binding 9m21s
ΠΠ»Π°Π΄Π΅Π»Π΅Ρ PVC — ΠΏΠΎΠ΄:
$ kubectl get -o yaml pvc/my-csi-app-inline-volume-my-csi-volume
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
annotations:
pv.kubernetes.io/bind-completed: "yes"
pv.kubernetes.io/bound-by-controller: "yes"
volume.beta.kubernetes.io/storage-provisioner: pmem-csi.intel.com
volume.kubernetes.io/selected-node: pmem-csi-pmem-govm-worker1
creationTimestamp: "2020-08-11T15:44:57Z"
finalizers:
- kubernetes.io/pvc-protection
managedFields:
...
name: my-csi-app-inline-volume-my-csi-volume
namespace: default
ownerReferences:
- apiVersion: v1
blockOwnerDeletion: true
controller: true
kind: Pod
name: my-csi-app-inline-volume
uid: 75c925bf-ca8e-441a-ac67-f190b7a2265f
...
ΠΠΆΠΈΠ΄Π°Π΅ΠΌΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»Π°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄Π»Ρ pmem-csi-pmem-govm-worker1
:
csisc-2js6n map[pmem-csi.intel.com/node:pmem-csi-pmem-govm-worker2] 30716Mi
csisc-sqdnt map[pmem-csi.intel.com/node:pmem-csi-pmem-govm-worker1] 26620Mi
csisc-ws4bv map[pmem-csi.intel.com/node:pmem-csi-pmem-govm-worker3] 30716Mi
ΠΡΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠΌΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π°Π΄ΠΎ Π±ΡΠ΄Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ 26620Mi, ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π±ΡΠ°ΡΡ Π² ΡΠ°ΡΡΠ΅Ρ pmem-csi-pmem-govm-worker1
ΠΏΡΠΈ Π»ΡΠ±ΠΎΠΌ ΡΠ°ΡΠΊΠ»Π°Π΄Π΅.
Π§ΡΠΎ Π΄Π°Π»ΡΡΠ΅?
ΠΠ±Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΠ΅ Π΅ΡΠ΅ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅. ΠΡΠ»ΠΎ ΠΎΡΠΊΡΡΡΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π°ΡΠ²ΠΎΠΊ ΠΏΡΠΈ alpha-ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ. ΠΠΎ ΡΡΡΠ»ΠΊΠ°ΠΌ Ρ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ ΠΏΠΎ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡΠΌ Π²Π΅Π΄Π΅ΡΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΡ Π½Π°Π΄ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π² ΡΡΠ°Π΄ΠΈΡ beta, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊΠΈΠ΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ Π±ΡΠ»ΠΈ ΡΠΆΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Ρ ΠΈ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½Ρ:
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com