ΠΡΠΎΠ±Π»Π΅ΠΌΠ° stateful-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Kubernetes
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, Π·Π°ΠΏΡΡΠΊ ΠΈ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π΅ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΡΠ»ΡΠΆΠ± ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΡΡ ΠΏΡΠΎΡΡΠΎ, Π΅ΡΠ»ΠΈ ΡΠ΅ΡΡ ΠΈΠ΄ΡΡ ΠΎ ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠ»Π°ΡΡΠΈΡΠΈΡΠΈΡΡΠ΅ΠΌΡΡ ΠΊΠ°ΠΊ stateless, Ρ.Π΅. Π±Π΅Π· ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ . Π’Π°ΠΊΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ ΡΠ΄ΠΎΠ±Π½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π² Kubernetes, ΠΏΠΎΠ»ΡΠ·ΡΡΡΡ Π΅Π³ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌΠΈ API, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²ΡΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Β«ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈΒ»: ΠΏΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠΌ, Π±Π΅Π· ΠΏΡΠΈΠ²Π»Π΅ΡΠ΅Π½ΠΈΡ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠΈ ΠΈ ΠΌΠ°Π³ΠΈΠΈ.
ΠΡΠΎΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅ ΠΈΠ· ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² Π΅ΡΡ ΠΏΡΡΠΈ ΠΊΠΎΠΏΠΈΠΉ Π±ΡΠΊΠ΅Π½Π΄Π° Π½Π° PHP/Ruby/Python ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π»ΠΈΡΡ 5 ΡΠ°Π· ΠΏΠΎΠ΄Π½ΡΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ ΠΈ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ, ΠΈ init-ΡΠΊΡΠΈΠΏΡ Π»Π΅ΠΆΠ°Ρ Π² ΠΎΠ±ΡΠ°Π·Π΅, ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ stateless-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠΎΠ²ΡΠ΅ΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠ½ΡΠΌ. ΠΠ°ΠΊ Ρ ΠΎΡΠΎΡΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ Π»ΡΠ±ΠΈΡΠ΅Π»ΡΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ, ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ stateful, Ρ.Π΅. Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½ΡΡ , ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΊΡΡΠΈ (MySQL, PostgreSQL, Redis, ElasticSearch, Cassandraβ¦). ΠΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΡΠΎΡΡΠ°, ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠ΅Π³ΠΎ ΠΊΠ²ΠΎΡΡΠΌΠ½ΡΠΉ ΠΊΠ»Π°ΡΡΠ΅Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Percona XtraDB ΠΈ Cassandra), ΡΠ°ΠΊ ΠΈ ΡΠΎΡΡΠ°, ΡΡΠ΅Π±ΡΡΡΠ΅Π³ΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΡ ΡΡΠΈΠ»ΠΈΡ (ΡΠ°ΠΊΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Redis, MySQL, PostgreSQLβ¦).
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΠΏΠΎ ΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅, ΡΡΠΎ ΠΈΡΡ
ΠΎΠ΄Π½ΠΈΠΊΠΎΠ² ΠΈ Π·Π°ΠΏΡΡΠΊΠ° ΡΠ΅ΡΠ²ΠΈΡΠ° ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½Π΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ β Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π΅ΡΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ β ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈ/ΠΈΠ»ΠΈ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡΡΡ ΠΊ ΠΊΠ»Π°ΡΡΠ΅ΡΡ. Π Π΅ΡΠ»ΠΈ ΡΠΎΡΠ½Π΅Π΅, ΡΠΎ ΡΡΠΈ ΡΠ΅ΡΠ²ΠΈΡΡ ΡΡΠ΅Π±ΡΡΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ, ΠΊΠ°ΠΊ ΠΈΡ
ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°ΡΡ, ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π±Π΅Π· ΠΏΠΎΡΠ΅ΡΠΈ Π΄Π°Π½Π½ΡΡ
ΠΈ ΠΈΡ
Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΠΈ. Π£ΡΡΡ ΡΡΠΈΡ
ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠ΅ΠΉ ΠΈ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Β«ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΌΠΈ Π·Π½Π°Π½ΠΈΡΠΌΠΈΒ» (operational knowledge).
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ CoreOS
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Β«Π·Π°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡΒ» ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ Π·Π½Π°Π½ΠΈΡ, Π² ΠΊΠΎΠ½ΡΠ΅ ΠΏΡΠΎΡΠ»ΠΎΠ³ΠΎ Π³ΠΎΠ΄Π° ΠΏΡΠΎΠ΅ΠΊΡ CoreOS
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΈ ΡΠ°ΡΡΠΈΡΡΡ Π±Π°Π·ΠΎΠ²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Kubernetes (Π² Ρ.Ρ. StatefulSets, ΠΎ ΡΠ°Π·Π½ΠΈΡΠ΅ Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΡΠΌ. Π½ΠΈΠΆΠ΅), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ DevOps-ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠ°ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ Π·Π½Π°Π½ΠΈΡ Π² ΠΊΠΎΠ΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
Π¦Π΅Π»Ρ ΠΠΏΠ΅ΡΠ°ΡΠΎΡΠ° β ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ API, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ stateful-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅ Kubernetes, Π½Π΅ Π·Π°Π΄ΡΠΌΡΠ²Π°ΡΡΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Ρ Π½Π΅Π³ΠΎ ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌ (ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈ ΡΡΠΎ Ρ Π½ΠΈΠΌΠΈ Π΄Π΅Π»Π°ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΅ΡΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°). Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΡΠΈΠ·Π²Π°Π½ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΡΠΏΡΠΎΡΡΠΈΡΡ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ Π·Π°Π΄Π°Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π½ΡΡΠ΅ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ ΡΠ΅ΡΠ°ΡΡ Π²ΡΡΡΠ½ΡΡ.
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ
ReplicaSets Π² Kubernetes ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΡ ΠΏΠΎΠ΄ΠΎΠ², Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡ Π·Π° ΡΠ΅ΠΌ, ΡΡΠΎΠ±Ρ ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΎΡ ΡΠ°Π½ΡΠ»ΠΎΡΡ (ΡΠΎΠ·Π΄Π°Π²Π°Ρ ΠΈ ΡΠ΄Π°Π»ΡΡ ΠΏΠΎΠ΄Ρ). ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΠΏΠ΅ΡΠ°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΊ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΌΡ ΡΠ΅ΡΡΡΡΡ ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ Kubernetes Π½Π°Π±ΠΎΡ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ Π·Π½Π°Π½ΠΈΠΉ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°Π½ΠΈΡ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Π§Π΅ΠΌ ΡΡΠΎ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ StatefulSets, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΡ Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΡΠ΅Π±ΡΡΡΠΈΡ ΠΎΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΈΠΌ ΡΠ°ΠΊΠΈΠ΅ stateful-ΡΠ΅ΡΡΡΡΡ, ΠΊΠ°ΠΊ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π΄Π°Π½Π½ΡΡ ΠΈΠ»ΠΈ ΡΡΠ°ΡΠΈΡΠ½ΡΠ΅ IP? ΠΠ»Ρ ΡΠ°ΠΊΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ StatefulSets (Π²ΠΌΠ΅ΡΡΠΎ ReplicaSets) Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΡΠ½ΠΎΠ²Ρ, ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ: Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π² ΡΠ»ΡΡΠ°Π΅ ΠΏΠ°Π΄Π΅Π½ΠΈΠΉ, Π΄Π΅Π»Π°ΡΡ Π±ΡΠΊΠ°ΠΏΡ, ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΈ Ρ.ΠΏ.
ΠΡΠ°ΠΊ, ΠΊΠ°ΠΊ ΠΆΠ΅ Π²ΡΡ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ? ΠΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π΄Π΅ΠΌΠΎΠ½-ΡΠΏΡΠ°Π²Π»ΡΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ:
- ΠΏΠΎΠ΄ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π½Π° ΡΠΎΠ±ΡΡΠΈΠΉΠ½ΠΎΠ΅ API Π² Kubernetes;
- ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΈΠ· Π½Π΅Π³ΠΎ Π΄Π°Π½Π½ΡΠ΅ ΠΎ ΡΠΈΡΡΠ΅ΠΌΠ΅ (ΠΎ ΡΠ²ΠΎΠΈΡ ReplicaSets, Pods, Services ΠΈ Ρ.ΠΏ.);
- ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΎ Third Party Resources (ΡΠΌ. ΠΏΡΠΈΠΌΠ΅ΡΡ Π½ΠΈΠΆΠ΅);
- ΡΠ΅Π°Π³ΠΈΡΡΠ΅Ρ Π½Π° ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅/ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Third Party Resources (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ°, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅);
- ΡΠ΅Π°Π³ΠΈΡΡΠ΅Ρ Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ (ΠΎ ΡΠ²ΠΎΠΈΡ ReplicaSets, Pods, Services ΠΈ Ρ.ΠΏ.);
- ΡΠ°ΠΌΠΎΠ΅ Π³Π»Π°Π²Π½ΠΎΠ΅:
- ΠΎΠ±ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΊ Kubernetes API, ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π²ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ΅ (ΠΎΠΏΡΡΡ ΠΆΠ΅, ΡΠ²ΠΎΠΈ ReplicaSets, Pods, Servicesβ¦),
- Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΌΠ°Π³ΠΈΡ (ΠΌΠΎΠΆΠ½ΠΎ, Π΄Π»Ρ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ, Π΄ΡΠΌΠ°ΡΡ, ΡΡΠΎ ΠΠΏΠ΅ΡΠ°ΡΠΎΡ Π·Π°Ρ ΠΎΠ΄ΠΈΡ Π² ΡΠ°ΠΌΠΈ ΠΏΠΎΠ΄Ρ ΠΈ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ Π²ΡΡΡΠΏΠ»Π΅Π½ΠΈΡ Π² ΠΊΠ»Π°ΡΡΠ΅Ρ ΠΈΠ»ΠΈ Π΄Π»Ρ Π°ΠΏΠ³ΡΠ΅ΠΉΠ΄Π° ΡΠΎΡΠΌΠ°ΡΠ° Π΄Π°Π½Π½ΡΡ ΠΏΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Π²Π΅ΡΡΠΈΠΈ).
ΠΠΎ ΡΠ°ΠΊΡΡ, ΠΊΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ, Π² Kubernetes ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (ΠΎΠ±ΡΡΠ½ΡΠΉ Deployment Ρ ReplicaSet), ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΈ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ. ΠΠ½ΠΎ ΠΆΠΈΠ²ΡΡ Π² ΠΎΠ±ΡΡΠ½ΠΎΠΌ ΠΏΠΎΠ΄Π΅ (ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΠ΄Π½ΠΎΠΌ-Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΌ) ΠΈ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π·Π° ΡΠ²ΠΎΠΉ Namespace. ΠΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅-ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΡΠ²ΠΎΠΉ API β ΠΏΡΠ°Π²Π΄Π°, Π½Π΅ Π½Π°ΠΏΡΡΠΌΡΡ, Π° ΡΠ΅ΡΠ΅Π· Third Party Resources Π² Kubernetes.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ Π² Namespace ΠΠΏΠ΅ΡΠ°ΡΠΎΡΠ°, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π² Π½Π΅Π³ΠΎ Third Party Resources.
ΠΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ etcd (ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΡΠΌ. Π½ΠΈΠΆΠ΅):
apiVersion: etcd.coreos.com/v1beta1
kind: Cluster
metadata:
name: example-etcd-cluster
spec:
size: 3
version: 3.1.0
ΠΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ Elasticsearch:
apiVersion: enterprises.upmc.com/v1
kind: ElasticsearchCluster
metadata:
name: example-es-cluster
spec:
client-node-replicas: 3
master-node-replicas: 2
data-node-replicas: 3
zones:
- us-east-1c
- us-east-1d
- us-east-1e
data-volume-size: 10Gi
java-options: "-Xms1024m -Xmx1024m"
snapshot:
scheduler-enabled: true
bucket-name: elasticsnapshots99
cron-schedule: "@every 2m"
storage:
type: gp2
storage-class-provisioner: kubernetes.io/aws-ebs
Π’ΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ, ΠΏΡΠ΅Π΄ΡΡΠ²Π»ΡΠ΅ΠΌΡΠ΅ ΠΊ ΠΠΏΠ΅ΡΠ°ΡΠΎΡΠ°ΠΌ
Π CoreOS ΡΡΠΎΡΠΌΡΠ»ΠΈΡΠΎΠ²Π°Π»ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΠ°ΡΡΠ΅ΡΠ½Ρ, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠ°ΠΌΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ Π½Π°Π΄ ΠΠΏΠ΅ΡΠ°ΡΠΎΡΠ°ΠΌΠΈ. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ Π²ΡΠ΅ ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½Ρ (ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎ ΡΠ²ΠΎΠΈΠΌΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΠΌΠΈ ΠΈ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡΠΌΠΈ), ΠΈΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°ΡΡΡΡ Π½Π° ΡΠ²ΠΎΠ΅ΠΎΠ±ΡΠ°Π·Π½ΡΠΉ ΠΊΠ°ΡΠΊΠ°Ρ, ΠΏΡΠ΅Π΄ΡΡΠ²Π»ΡΡΡΠΈΠΉ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ:
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡΡ ΡΠ΅ΡΠ΅Π· Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ Deployment: kubectl create -f SOME_OPERATOR_URL/deployment.yaml β ΠΈ Π½Π΅ ΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ.
- ΠΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΠΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Π² Kubernetes Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡΡΡ Π½ΠΎΠ²ΡΠΉ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΉ ΡΠΈΠΏ (ThirdPartyResource). ΠΠ»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠ²) ΠΈ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈΠΌΠΈ (ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π²Π΅ΡΡΠΈΠΉ, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈ Π΄Ρ.) ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΡΠΈΠΏ.
- ΠΡΠΈ Π»ΡΠ±ΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ Π² Kubernetes ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Ρ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Services ΠΈ ReplicaSets, ΡΡΠΎΠ±Ρ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ ΠΎΡΠΎΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π½ΡΠΉ ΠΈ ΠΏΠΎΠ½ΡΡΠ½ΡΠΉ ΠΊΠΎΠ΄.
- ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° ΠΎΠ±ΡΠ°ΡΠ½Π°Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ ΠΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΡΠ°ΡΡΡ Π²Π΅ΡΡΠΈΠΉ ΡΠ΅ΡΡΡΡΠΎΠ², ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ.
- ΠΡΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΠΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΡΠ°ΠΌΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
- Π£ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΆΠ΅Π»Π°Π΅ΠΌΡΡ Π²Π΅ΡΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΡΠΊΠ΅ΡΡΡΠΎΠ²ΠΊΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ΠΠ β ΡΠ°ΡΡΡΠΉ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ Π² ΡΡΠΎΠΌ Π²ΠΎΠΏΡΠΎΡΠ΅.
- ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ ΡΠΈΠΏΠ° Chaos Monkey, Π²ΡΡΠ²Π»ΡΡΡΠΈΠΌ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΠ±ΠΎΠΈ Π² ΠΏΠΎΠ΄Π°Ρ , ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡ ΠΈ ΡΠ΅ΡΠΈ.
etcd Operator
ΠΡΠΈΠΌΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΠΏΠ΅ΡΠ°ΡΠΎΡΠ° β etcd Operator,
Π ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ etcd ΡΠΎΠ·Π΄Π°Π»ΠΈ ΡΠΎΠΆΠ΅ Π² CoreOS, Π²ΠΏΠΎΠ»Π½Π΅ Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌ Π±ΡΠ»ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ ΠΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΏΠ΅ΡΠ²ΡΠΌ. ΠΠ°ΠΊ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ? ΠΠΎΠ³ΠΈΠΊΠ° ΠΠΏΠ΅ΡΠ°ΡΠΎΡΠ° etcd ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΡΠ΅ΠΌΡ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠΌΠΈ:
- ΠΠ°Π±Π»ΡΠ΄Π΅Π½ΠΈΠ΅ (Observe). ΠΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΠ»Π΅Π΄ΠΈΡ Π·Π° ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° ΠΏΠΎ Kubernetes API.
- ΠΠ½Π°Π»ΠΈΠ· (Analyze). ΠΠ°Ρ ΠΎΠ΄ΠΈΡ ΠΎΡΠ»ΠΈΡΠΈΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΡΠ°ΡΡΡΠ° ΠΎΡ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ³ΠΎ (ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ).
- ΠΠ΅ΠΉΡΡΠ²ΠΈΠ΅ (Act). Π£ΡΡΡΠ°Π½ΡΠ΅Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½Π½ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ API ΡΠ΅ΡΠ²ΠΈΡΠ° etcd ΠΈ/ΠΈΠ»ΠΈ Kubernetes.
ΠΠ»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ Π² ΠΠΏΠ΅ΡΠ°ΡΠΎΡΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Create/Destroy (ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅Π½ΠΎΠ² ΠΊΠ»Π°ΡΡΠ΅ΡΠ° etcd) ΠΈ Resize (ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠ»Π΅Π½ΠΎΠ² ΠΊΠ»Π°ΡΡΠ΅ΡΠ°). ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΠΈ Π΅Ρ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ»Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΈΠ»ΠΈΡΡ, ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΠΈΡ Chaos Monkey ΠΎΡ Netflix, Ρ.Π΅. ΡΠ±ΠΈΠ²Π°ΡΡΠ΅ΠΉ ΠΏΠΎΠ΄Ρ etcd ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
ΠΠ»Ρ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎΠΉ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ etcd Π² ΠΠΏΠ΅ΡΠ°ΡΠΎΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ: Backup (Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΈ Π½Π΅Π·Π°ΠΌΠ΅ΡΠ½ΠΎΠ΅ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ΅Π·Π΅ΡΠ²Π½ΡΡ ΠΊΠΎΠΏΠΈΠΉ β Π² ΠΊΠΎΠ½ΡΠΈΠ³Π΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΊΠ°ΠΊ ΡΠ°ΡΡΠΎ ΠΈΡ Π΄Π΅Π»Π°ΡΡ ΠΈ ΠΊΠ°ΠΊΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Ρ ΡΠ°Π½ΠΈΡΡ, β ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΈΠ· Π½ΠΈΡ ) ΠΈ Upgrade (ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΈΠΉ etcd Π±Π΅Π· ΠΏΡΠΎΡΡΠΎΡ).
ΠΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ?
$ kubectl create -f https://coreos.com/operators/etcd/latest/deployment.yaml
$ kubectl create -f https://coreos.com/operators/etcd/latest/example-etcd-cluster.yaml
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
etcd-cluster-0000 1/1 Running 0 23s
etcd-cluster-0001 1/1 Running 0 16s
etcd-cluster-0002 1/1 Running 0 8s
etcd-cluster-backup-tool-rhygq 1/1 Running 0 18s
Π’Π΅ΠΊΡΡΠΈΠΉ ΡΡΠ°ΡΡΡ etcd Operator β Π±Π΅ΡΠ°-Π²Π΅ΡΡΠΈΡ, ΡΡΠ΅Π±ΡΡΡΠ°Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Kubernetes 1.5.3+ ΠΈ etcd 3.0+. ΠΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ (Π²ΠΊΠ»ΡΡΠ°Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΏΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ) Π΄ΠΎΡΡΡΠΏΠ½Ρ Π½Π°
Π‘ΠΎΠ·Π΄Π°Π½ ΠΈ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΡ CoreOS β
Π‘ΡΠ°ΡΡΡ ΠΈ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Ρ
Π‘ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π°Π½ΠΎΠ½ΡΠ° ΠΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Kubernetes ΠΏΡΠΎΡΠ»ΠΎ 5 ΠΌΠ΅ΡΡΡΠ΅Π². Π ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ CoreOS ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π»ΠΈΡΡ Π΄Π²Π΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ (Π΄Π»Ρ etcd ΠΈ Prometheus). ΠΠ±Π΅ Π΅ΡΡ Π½Π΅ Π΄ΠΎΡΡΠΈΠ³Π»ΠΈ ΡΠ²ΠΎΠΈΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΡ Π²Π΅ΡΡΠΈΠΉ, Π½ΠΎ ΠΊΠΎΠΌΠΌΠΈΡΡ Π² Π½ΠΈΡ Π½Π°Π±Π»ΡΠ΄Π°ΡΡΡΡ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ.
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΎΠΆΠΈΠ΄Π°ΡΡ Β«Π±ΡΠ΄ΡΡΠ΅Π΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ Postgres Operators, Cassandra Operators ΠΈΠ»ΠΈ Redis Operators Π² ΡΠ²ΠΎΠΈΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°Ρ Kubernetes ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΡΠΌΠΈ ΡΡΡΠ½ΠΎΡΡΡΠΌΠΈ ΡΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΡΠ°ΠΊ ΠΆΠ΅ Π»Π΅Π³ΠΊΠΎ, ΠΊΠ°ΠΊ ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Ρ Π΄Π΅ΠΏΠ»ΠΎΠ΅ΠΌ ΡΠ΅ΠΏΠ»ΠΈΠΊ stateless-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄Π»Ρ Π²Π΅Π±Π°Β». ΠΠ΅ΡΠ²ΡΠ΅ ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΎΡ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π°ΡΠ°Π»ΠΈ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ:
-
Elasticsearch Operator ΠΎΡ UPMC Enterprises; -
PostgreSQL Operator ΠΎΡ Crunchy Data (Π°Π½ΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ Π² ΠΊΠΎΠ½ΡΠ΅ ΠΌΠ°ΡΡΠ° 2017 .); -
Rook Operator ΠΎΡ Π°Π²ΡΠΎΡΠΎΠ² ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Π½Π° Π±Π°Π·Π΅ Ceph (Rook Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² Π°Π»ΡΡΠ°-ΡΡΠ°ΡΡΡΠ΅); -
Openstack Operators ΠΎΡ SAP CCloud.
ΠΠ° ΠΊΡΡΠΏΠ½Π΅ΠΉΡΠ΅ΠΉ Π΅Π²ΡΠΎΠΏΠ΅ΠΉΡΠΊΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ ΠΏΠΎ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΌΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ FOSDEM, ΡΡΠΎ ΠΏΡΠΎΡ
ΠΎΠ΄ΠΈΠ»Π° Π² ΡΠ΅Π²ΡΠ°Π»Π΅ 2017 Π³ΠΎΠ΄Π° Π² ΠΡΡΡΡΠ΅Π»Π΅, Josh Wood ΠΈΠ· CoreOS Π°Π½ΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π» ΠΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Π²
P.S. Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΠΈΠ½ΡΠ΅ΡΠ΅Ρ ΠΊ ΡΡΠ°ΡΡΠ΅! ΠΠΎΠ΄ΠΏΠΈΡΡΠ²Π°ΠΉΡΠ΅ΡΡ Π½Π° Π½Π°Ρ Ρ
Π°Π±, ΡΡΠΎΠ±Ρ Π½Π΅ ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ ΠΈ ΡΠ΅ΡΠ΅ΠΏΡΡ ΠΏΠΎ DevOps ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΌΡ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ GNU/Linux β ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ ΠΈΡ
ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎ!
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com