ΠΡΠΈΠΌ. ΠΏΠ΅ΡΠ΅Π².: Π‘ΠΎΡΡΡΠ΄Π½ΠΈΠΊΠΈ Π²ΡΠ΅ΠΌΠΈΡΠ½ΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ° Tinder Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΏΠΎΠ΄Π΅Π»ΠΈΠ»ΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ Π΄Π΅ΡΠ°Π»ΡΠΌΠΈ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ ΡΠ²ΠΎΠ΅ΠΉ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ Π½Π° Kubernetes. ΠΡΠΎΡΠ΅ΡΡ Π·Π°Π½ΡΠ» ΠΏΠΎΡΡΠΈ Π΄Π²Π° Π³ΠΎΠ΄Π° ΠΈ Π²ΡΠ»ΠΈΠ»ΡΡ Π² Π·Π°ΠΏΡΡΠΊ Π½Π° K8s Π²Π΅ΡΡΠΌΠ° ΠΌΠ°ΡΡΡΠ°Π±Π½ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, ΡΠΎΡΡΠΎΡΡΠ΅ΠΉ ΠΈΠ· 200 ΡΠ΅ΡΠ²ΠΈΡΠΎΠ², ΡΠ°Π·ΠΌΠ΅ΡΡΠ½Π½ΡΡ Π½Π° 48 ΡΡΡΡΡΠ°Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ². Π‘ ΠΊΠ°ΠΊΠΈΠΌΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΌΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΠΈΡΡ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΡ Tinder ΠΈ ΠΊ ΠΊΠ°ΠΊΠΈΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌ ΠΏΡΠΈΡΠ»ΠΈ β ΡΠΈΡΠ°ΠΉΡΠ΅ Π² ΡΡΠΎΠΌ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π΅.
ΠΠ°ΡΠ΅ΠΌ?
ΠΠΎΡΡΠΈ Π΄Π²Π° Π³ΠΎΠ΄Π° Π½Π°Π·Π°Π΄ Tinder ΡΠ΅ΡΠΈΠ» ΠΏΠ΅ΡΠ΅Π²Π΅ΡΡΠΈ ΡΠ²ΠΎΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π½Π° Kubernetes. Kubernetes ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» Π±Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Tinder ΠΏΡΠΎΠ²Π΅ΡΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΡ ΠΈ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π½Π° ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΡ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΡΠΈΠ»ΠΈΡΠΌΠΈ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ (immutable deployment). Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ±ΠΎΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΈΡ Π΄Π΅ΠΏΠ»ΠΎΠΉ ΠΈ ΡΠ°ΠΌΠ° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° Π±ΡΠ»ΠΈ Π±Ρ ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ ΠΊΠΎΠ΄ΠΎΠΌ.
Π’Π°ΠΊΠΆΠ΅ ΠΌΡ ΠΈΡΠΊΠ°Π»ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΡΡ ΠΈ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΡΡ. ΠΠΎΠ³Π΄Π° ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠΎΠ±ΡΠ΅Π»ΠΎ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π½Π°ΠΌ ΡΠ°ΡΡΠΎ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΈΠ½ΡΡ ΠΆΠ΄Π°ΡΡ Π·Π°ΠΏΡΡΠΊΠ° Π½ΠΎΠ²ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² EC2. ΠΡΠ΅Π½Ρ ΡΠΆ ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΉ Π΄Π»Ρ Π½Π°Ρ ΡΡΠ°Π»Π° ΠΈΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΠΈ Π½Π°ΡΠ°Π»Π° ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ ΡΡΠ°ΡΠΈΠΊΠ° Π·Π° ΡΠ΅ΠΊΡΠ½Π΄Ρ Π²ΠΌΠ΅ΡΡΠΎ ΠΌΠΈΠ½ΡΡ.
ΠΡΠΎΡΠ΅ΡΡ ΠΎΠΊΠ°Π·Π°Π»ΡΡ Π½Π΅ΠΏΡΠΎΡΡΡΠΌ. ΠΠΎ Π²ΡΠ΅ΠΌΡ Π½Π°ΡΠ΅ΠΉ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ Π² Π½Π°ΡΠ°Π»Π΅ 2019-Π³ΠΎ ΠΊΠ»Π°ΡΡΠ΅Ρ Kubernetes Π΄ΠΎΡΡΠΈΠ³ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΌΠ°ΡΡΡ ΠΈ ΠΌΡ Π½Π°ΡΠ°Π»ΠΈ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΈΠ·-Π·Π° ΠΎΠ±ΡΠ΅ΠΌΠ° ΡΡΠ°ΡΠΈΠΊΠ°, ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΊΠ»Π°ΡΡΠ΅ΡΠ° ΠΈ DNS. ΠΠΎ ΠΏΡΡΠΈ ΠΌΡ ΡΠ΅ΡΠΈΠ»ΠΈ ΠΌΠ°ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ Π·Π°Π΄Π°Ρ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΎΠΌ 200 ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΈ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Kubernetes, ΡΠΎΡΡΠΎΡΡΠ΅Π³ΠΎ ΠΈΠ· 1000 ΡΠ·Π»ΠΎΠ², 15000 pod’ΠΎΠ² ΠΈ 48000 ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ².
ΠΠ°ΠΊ?
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ ΡΠ½Π²Π°ΡΡ 2018-Π³ΠΎ, ΠΌΡ ΠΏΡΠΎΡΠ»ΠΈ ΡΠ΅ΡΠ΅Π· ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΡΠ°ΠΏΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ. ΠΡ Π½Π°ΡΠ°Π»ΠΈ Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΠΈ Π²ΡΠ΅Ρ Π½Π°ΡΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΈ ΠΈΡ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ Π² ΡΠ΅ΡΡΠΎΠ²ΡΡ ΠΎΠ±Π»Π°ΡΠ½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡΡ Kubernetes. ΠΠ°ΡΠΈΠ½Π°Ρ Ρ ΠΎΠΊΡΡΠ±ΡΡ, ΠΌΡ Π½Π°ΡΠ°Π»ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΡΡ Π²ΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ Π² Kubernetes. Π ΠΌΠ°ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ Π³ΠΎΠ΄Π° ΠΌΡ Π·Π°ΠΊΠΎΠ½ΡΠΈΠ»ΠΈ Β«ΠΏΠ΅ΡΠ΅ΡΠ΅Π»Π΅Π½ΠΈΠ΅Β» ΠΈ ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Tinder ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π° Kubernetes.
Π‘Π±ΠΎΡΠΊΠ° ΠΎΠ±ΡΠ°Π·ΠΎΠ² Π΄Π»Ρ Kubernetes
Π£ Π½Π°Ρ Π±ΠΎΠ»Π΅Π΅ 30 ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ², ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅ Kubernetes. ΠΠΎΠ΄ Π² ΡΡΠΈΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° ΡΠ°Π·Π½ΡΡ ΡΠ·ΡΠΊΠ°Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° Node.js, Java, Scala, Go) ΡΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ runtime-ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΉ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠ·ΡΠΊΠ°.
Π‘ΠΈΡΡΠ΅ΠΌΠ° ΡΠ±ΠΎΡΠΊΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π° ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠΉ Β«ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΡΠ±ΠΎΡΠΊΠΈΒ» Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ°. ΠΠ±ΡΡΠ½ΠΎ ΠΎΠ½ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Dockerfile ΠΈ ΡΠΏΠΈΡΠΊΠ° shell-ΠΊΠΎΠΌΠ°Π½Π΄. ΠΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΠΎ, ΠΈ Π² ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ Π²ΡΠ΅ ΡΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΡ ΡΠ±ΠΎΡΠΊΠΈ Π½Π°ΠΏΠΈΡΠ°Π½Ρ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ ΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠΎΡΠΌΠ°ΡΠΎΠΌ. Π‘ΡΠ°Π½Π΄Π°ΡΡΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΠ² ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ΄Π½ΠΎΠΉ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΠ±ΠΎΡΠΊΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π²ΡΠ΅ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡ.
Π ΠΈΡΡΠ½ΠΎΠΊ 1-1. Π‘ΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ±ΠΎΡΠΊΠΈ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ-ΡΠ±ΠΎΡΡΠΈΠΊ (Builder)
ΠΠ»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠ΅Π΄Π°ΠΌΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ (runtime environments) ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΠΈΡΡ Ρ ΠΎΡΠ΅Π½Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ: ΠΏΡΠΈΡΠ»ΠΎΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΏΠΎΡΠΎΠ±, Π³Π°ΡΠ°Π½ΡΠΈΡΡΡΡΠΈΠΉ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡΡ ΡΠ±ΠΎΡΠΎΡΠ½ΠΎΠΉ ΡΡΠ΅Π΄Ρ ΠΏΠΎ Π²ΡΠ΅ΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π²ΡΠ΅ ΡΠ±ΠΎΡΠΎΡΠ½ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΏΡΠΎΠ²ΠΎΠ΄ΡΡΡΡ Π²Π½ΡΡΡΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Builder.
ΠΠ³ΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°Π»Π° ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΡ ΠΏΡΠΈΠ΅ΠΌΠΎΠ² ΡΠ°Π±ΠΎΡΡ Ρ Docker. Builder Π½Π°ΡΠ»Π΅Π΄ΡΠ΅Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ID ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΡΠ΅ΠΊΡΠ΅ΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ»ΡΡ SSH, ΡΡΠ΅ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ AWS ΠΈ Ρ. Π΄.), ΡΡΠ΅Π±ΡΡΡΠΈΠ΅ΡΡ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π·Π°ΠΊΡΡΡΡΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΠΌ Tinder. ΠΠ½ ΠΌΠΎΠ½ΡΠΈΡΡΠ΅Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ, ΡΡΠΎΠ±Ρ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Ρ ΡΠ°Π½ΠΈΡΡ Π°ΡΡΠ΅ΡΠ°ΠΊΡΡ ΡΠ±ΠΎΡΠΊΠΈ. ΠΠΎΠ΄ΠΎΠ±Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΠ²ΡΡΠ°Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΡΡΠ°Π½ΡΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡ Π² ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π°ΡΡΠ΅ΡΠ°ΠΊΡΠΎΠ² ΡΠ±ΠΎΡΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠΌ Builder ΠΈ Ρ ΠΎΡΡΠΎΠΌ. Π₯ΡΠ°Π½ΡΡΠΈΠ΅ΡΡ Π°ΡΡΠ΅ΡΠ°ΠΊΡΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ.
ΠΠ»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π½Π°ΠΌ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, ΡΡΠΎΠ±Ρ ΡΠΎΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΡΡΠ΅Π΄Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΡΠΎ ΡΡΠ΅Π΄ΠΎΠΉ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Node.js bcrypt Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠ΅ Π΄Π»Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π±ΠΈΠ½Π°ΡΠ½ΡΠ΅ Π°ΡΡΠ΅ΡΠ°ΠΊΡΡ). Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ ΡΠ°Π·Π»ΠΈΡΠ°ΡΡΡΡ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ², ΠΈ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ Dockerfile ΡΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π½Π° Π»Π΅ΡΡ.
ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Kubernetes ΠΈ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ
Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°
ΠΡ ΡΠ΅ΡΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ kube-aws Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Π½Π° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°Ρ EC2 ΠΎΡ Amazon. Π ΡΠ°ΠΌΠΎΠΌ Π½Π°ΡΠ°Π»Π΅ Π²ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΌ ΠΏΡΠ»Π΅ ΡΠ·Π»ΠΎΠ². ΠΡ Π±ΡΡΡΡΠΎ ΠΎΡΠΎΠ·Π½Π°Π»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΠΈΡ Π½Π°Π³ΡΡΠ·ΠΎΠΊ ΠΏΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΠΌ ΠΈ ΡΠΈΠΏΠ°ΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ². ΠΠΎΠ³ΠΈΠΊΠ° Π±ΡΠ»Π° Π² ΡΠΎΠΌ, ΡΡΠΎ Π·Π°ΠΏΡΡΠΊ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π½Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΡ pod’ΠΎΠ² ΠΎΠΊΠ°Π·ΡΠ²Π°Π»ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΡΠΌ ΠΏΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, Π½Π΅ΠΆΠ΅Π»ΠΈ ΠΈΡ ΡΠΎΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΡΠΈΡΠ»ΠΎΠΌ ΠΎΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½ΡΡ pod’ΠΎΠ².
Π ΠΈΡΠΎΠ³Π΅ ΠΌΡ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈΡΡ Π½Π°:
- m5.4xlarge β Π΄Π»Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° (Prometheus);
- c5.4xlarge β Π΄Π»Ρ ΡΠ°Π±ΠΎΡΠ΅ΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ Node.js (ΠΎΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½Π°Ρ ΡΠ°Π±ΠΎΡΠ°Ρ Π½Π°Π³ΡΡΠ·ΠΊΠ°);
- c5.2xlarge β Π΄Π»Ρ Java ΠΈ Go (ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½Π°Ρ ΡΠ°Π±ΠΎΡΠ°Ρ Π½Π°Π³ΡΡΠ·ΠΊΠ°);
- c5.4xlarge β Π΄Π»Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ (3 ΡΠ·Π»Π°).
ΠΠΈΠ³ΡΠ°ΡΠΈΡ
ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ°Π³ΠΎΠ² Π΄Π»Ρ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ ΡΠΎ ΡΡΠ°ΡΠΎΠΉ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ Π½Π° Kubernetes ΡΡΠ°Π»ΠΎ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΏΡΡΠΌΠΎΠ³ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ Π² Π½ΠΎΠ²ΡΠ΅ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊΠΈ Π½Π°Π³ΡΡΠ·ΠΊΠΈ (Elastic Load Balancers, ELB). ΠΠ½ΠΈ Π±ΡΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π½Ρ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ΄ΡΠ΅ΡΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΡΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π»Π°ΠΊΠ° (VPC). ΠΡΠ° ΠΏΠΎΠ΄ΡΠ΅ΡΡ Π±ΡΠ»Π° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π° ΠΊ VPC Kubernetes. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π½Π°ΠΌ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΡΡ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ, Π½Π΅ ΡΡΠΈΡΡΠ²Π°Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΎΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ².
ΠΡΠΈ endpoints Π±ΡΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π½Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²Π·Π²Π΅ΡΠ΅Π½Π½ΡΡ Π½Π°Π±ΠΎΡΠΎΠ² DNS-Π·Π°ΠΏΠΈΡΠ΅ΠΉ, Ρ ΠΊΠΎΡΠΎΡΡΡ CNAME ΡΠΊΠ°Π·ΡΠ²Π°Π»ΠΈ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ Π½ΠΎΠ²ΡΠΉ ELB. ΠΠ»Ρ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΌΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ»ΠΈ Π½ΠΎΠ²ΡΡ Π·Π°ΠΏΠΈΡΡ, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ Π½Π° Π½ΠΎΠ²ΡΠΉ ELB ΡΠ»ΡΠΆΠ±Ρ Kubernetes Ρ Π²Π΅ΡΠΎΠΌ, ΡΠ°Π²Π½ΡΠΌ 0. ΠΠ°ΡΠ΅ΠΌ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π»ΠΈ Time To Live (TTL) Π½Π°Π±ΠΎΡΠ° Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π½Π° 0. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΡΡΠ°ΡΡΠ΅ ΠΈ Π½ΠΎΠ²ΡΠ΅ Π²Π΅ΡΠΎΠ²ΡΠ΅ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΡ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π»ΠΈΡΡ, ΠΈ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅ 100% Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π°ΠΏΡΠ°Π²Π»ΡΠ»ΠΈΡΡ Π½Π° Π½ΠΎΠ²ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ. ΠΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ TTL Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π»ΠΎΡΡ Π½Π° Π±ΠΎΠ»Π΅Π΅ Π°Π΄Π΅ΠΊΠ²Π°ΡΠ½ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ.
ΠΠΌΠ΅ΡΡΠΈΠ΅ΡΡ Ρ Π½Π°Ρ Java-ΠΌΠΎΠ΄ΡΠ»ΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ»ΠΈΡΡ Ρ Π½ΠΈΠ·ΠΊΠΈΠΌ TTL DNS, Π° Node-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ β Π½Π΅Ρ. ΠΠ΄ΠΈΠ½ ΠΈΠ· ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΎΠ² ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°Π» ΡΠ°ΡΡΡ ΠΊΠΎΠ΄Π° ΠΏΡΠ»Π° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ, ΠΈ ΠΎΠ±Π΅ΡΠ½ΡΠ² Π΅Π³ΠΎ Π² ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ» ΠΏΡΠ»Ρ ΠΊΠ°ΠΆΠ΄ΡΠ΅ 60 ΡΠ΅ΠΊΡΠ½Π΄. ΠΡΠ±ΡΠ°Π½Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΡΡΠ°Π±ΠΎΡΠ°Π» ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΎ ΠΈ Π±Π΅Π· Π·Π°ΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
Π£ΡΠΎΠΊΠΈ
ΠΡΠ΅Π΄Π΅Π»Ρ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΡΠ°Π±ΡΠΈΠΊΠΈ
Π Π°Π½Π½ΠΈΠΌ ΡΡΡΠΎΠΌ 8 ΡΠ½Π²Π°ΡΡ 2019 Π³ΠΎΠ΄Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Tinder Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ Β«ΡΠΏΠ°Π»Π°Β». Π ΠΎΡΠ²Π΅Ρ Π½Π° Π½Π΅ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΡΠ°Π½Π΅Π΅ ΡΠ΅ΠΌ ΠΆΠ΅ ΡΡΡΠΎΠΌ Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅ Π²ΠΎΠ·ΡΠΎΡΠ»ΠΎ ΡΠΈΡΠ»ΠΎ pod’ΠΎΠ² ΠΈ ΡΠ·Π»ΠΎΠ². ΠΡΠΎ ΠΏΡΠΈΠ²Π΅Π»ΠΎ ΠΊ ΠΈΡΡΠ΅ΡΠΏΠ°Π½ΠΈΡ ΠΊΡΡΠ° ARP Π½Π° Π²ΡΠ΅Ρ Π½Π°ΡΠΈΡ ΡΠ·Π»Π°Ρ .
ΠΡΡΡ ΡΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Linux, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΠΊΡΡΠ΅ΠΌ ARP:
gc_thresh3 β ΡΡΠΎ ΠΆΠ΅ΡΡΠΊΠΈΠΉ ΠΏΡΠ΅Π΄Π΅Π». ΠΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ Π² Π»ΠΎΠ³Π΅ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π²ΠΈΠ΄Π° Β«neighbor table overflowΒ» ΠΎΠ·Π½Π°ΡΠ°Π»ΠΎ, ΡΡΠΎ Π΄Π°ΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠ³ΠΎ ΡΠ±ΠΎΡΠ° ΠΌΡΡΠΎΡΠ° (GC) Π² ΠΊΡΡΠ΅ ARP ΠΎΠΊΠ°Π·ΡΠ²Π°Π»ΠΎΡΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΌΠ΅ΡΡΠ° Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠΎΡΠ΅Π΄Π½Π΅ΠΉ Π·Π°ΠΏΠΈΡΠΈ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ΄ΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°Π»ΠΎ ΠΏΠ°ΠΊΠ΅Ρ.
ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ
Π ΠΈΡΡΠ½ΠΎΠΊ 2β1. ΠΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° Flannel (
Π ΠΈΡΡΠ½ΠΎΠΊ 2β2. ΠΠ°ΠΊΠ΅Ρ VXLAN (
ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π±ΠΎΡΠΈΠΉ ΡΠ·Π΅Π» Kubernetes Π²ΡΠ΄Π΅Π»ΡΠ΅Ρ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ΅ Π°Π΄ΡΠ΅ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Ρ ΠΌΠ°ΡΠΊΠΎΠΉ /24 ΠΈΠ· Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ Π±Π»ΠΎΠΊΠ° /9. ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ·Π»Π° ΡΡΠΎ
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠ²ΡΠ·Ρ ΡΠ·Π΅Π»-pod (ΠΈΠ»ΠΈ pod-pod) Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅ ΠΈΠ΄Π΅Ρ ΡΠ΅ΡΠ΅Π· ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ eth0 (ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ΅ Flannel Π²ΡΡΠ΅). ΠΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ ARP Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° ΠΈ Π°Π΄ΡΠ΅ΡΠ°ΡΠ° ΡΠ·Π»Π°.
Π Π½Π°ΡΠ΅ΠΉ ΡΡΠ΅Π΄Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΉ ΡΠΈΠΏ ΡΠ²ΡΠ·ΠΈ Π²Π΅ΡΡΠΌΠ° ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½. ΠΠ»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΠΈΠΏΠ° ΡΠ΅ΡΠ²ΠΈΡ Π² Kubernetes ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ELB ΠΈ Kubernetes ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ·Π΅Π» Π² ELB. ELB Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ ΠΎ pod’Π°Ρ ΠΈ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΉ ΡΠ·Π΅Π» ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΌ ΠΏΡΠ½ΠΊΡΠΎΠΌ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ°. ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° ΡΠ·Π΅Π» ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΏΠ°ΠΊΠ΅Ρ ΠΎΡ ELB, ΠΎΠ½ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ Π΅Π³ΠΎ Ρ ΡΡΠ΅ΡΠΎΠΌ ΠΏΡΠ°Π²ΠΈΠ» iptables Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΈ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ pod Π½Π° Π΄ΡΡΠ³ΠΎΠΌ ΡΠ·Π»Π΅.
ΠΠ° ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ±ΠΎΡ Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅ Π±ΡΠ»ΠΎ 605 ΡΠ·Π»ΠΎΠ². ΠΠΎ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ, ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½ΡΠΌ Π²ΡΡΠ΅, ΡΡΠΎΠ³ΠΎ ΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅ΠΎΠ΄ΠΎΠ»Π΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ gc_thresh3, Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΠΎΠ³Π΄Π° ΡΠ°ΠΊΠΎΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΠΊΠ΅ΡΡ Π½Π°ΡΠΈΠ½Π°ΡΡ ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°ΡΡΡΡ, Π½ΠΎ ΠΈ Π²ΡΠ΅ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ΅ Π°Π΄ΡΠ΅ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Flannel Ρ ΠΌΠ°ΡΠΊΠΎΠΉ /24 ΠΏΡΠΎΠΏΠ°Π΄Π°Π΅Ρ ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ ARP. Π‘Π²ΡΠ·Ρ ΡΠ·Π΅Π»-pod ΠΈ DNS-Π·Π°ΠΏΡΠΎΡΡ ΠΏΡΠ΅ΡΡΠ²Π°ΡΡΡΡ (DNS ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅; ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΡΠΈΡΠ°ΠΉΡΠ΅ Π΄Π°Π»Π΅Π΅ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅).
Π§ΡΠΎΠ±Ρ ΡΠ΅ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ gc_thresh1, gc_thresh2 ΠΈ gc_thresh3 ΠΈ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΡ Flannel Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΠΏΡΠΎΠΏΠ°Π²ΡΠΈΡ ΡΠ΅ΡΠ΅ΠΉ.
ΠΠ΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠ΅ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ DNS
Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ ΠΌΡ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ DNS Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΠ°ΡΠΈΠΊΠΎΠΌ ΠΈ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΡΠΎ ΡΡΠ°ΡΠΎΠΉ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ Π½Π° Kubernetes. ΠΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π»ΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½ΠΈΠ·ΠΊΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ TTL Π΄Π»Ρ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ RecordSets Π² Route53. ΠΠΎΠ³Π΄Π° ΡΡΠ°ΡΠ°Ρ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° ΡΠ°Π±ΠΎΡΠ°Π»Π° Π½Π° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°Ρ EC2, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π½Π°ΡΠ΅Π³ΠΎ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΠ΅Π»Ρ ΡΠΊΠ°Π·ΡΠ²Π°Π»Π° Π½Π° DNS Amazon. ΠΡ Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°Π»ΠΈ ΡΡΠΎ ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ½ΠΎΠ΅ ΠΈ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ TTL Π½Π° Π½Π°ΡΠΈ ΡΠ΅ΡΠ²ΠΈΡΡ ΠΈ ΡΠ΅ΡΠ²ΠΈΡΡ Amazon (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, DynamoDB) ΠΎΡΡΠ°Π²Π°Π»ΠΎΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅Π·Π°ΠΌΠ΅ΡΠ΅Π½Π½ΡΠΌ.
ΠΠΎ ΠΌΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ° ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π² Kubernetes ΠΌΡ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»ΠΈ, ΡΡΠΎ DNS ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΏΠΎ 250 ΡΡΡΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠ°Π»ΠΈ ΠΈΡΠΏΡΡΡΠ²Π°ΡΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΠ΅ ΠΈ ΡΠ΅ΡΡΠ΅Π·Π½ΡΠ΅ timeout’Ρ ΠΏΠΎ DNS-Π·Π°ΠΏΡΠΎΡΠ°ΠΌ. ΠΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° Π½Π΅ΠΈΠΌΠΎΠ²Π΅ΡΠ½ΡΠ΅ ΡΡΠΈΠ»ΠΈΡ ΠΏΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ DNS-ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠ° Π½Π° CoreDNS (ΠΊΠΎΡΠΎΡΡΠΉ Π½Π° ΠΏΠΈΠΊΠ΅ Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π΄ΠΎΡΡΠΈΠ³ 1000 pod’ΠΎΠ², ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ Π½Π° 120 ΡΠ΄ΡΠ°Ρ ).
ΠΡΡΠ»Π΅Π΄ΡΡ Π΄ΡΡΠ³ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΏΡΠΈΡΠΈΠ½Ρ ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΠΌΡ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»ΠΈ
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π½Π° ΡΡΠ°ΠΏΠ΅ Source ΠΈ Destination Network Address Translation (SNAT ΠΈ DNAT) ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ Π²Π½Π΅ΡΠ΅Π½ΠΈΡ Π² ΡΠ°Π±Π»ΠΈΡΡ conntrack. ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΎΠ±Ρ ΠΎΠ΄Π½ΡΡ ΠΏΡΡΠ΅ΠΉ, ΠΎΠ±ΡΡΠΆΠ΄Π°Π²ΡΠ΅ΠΌΡΡ Π²Π½ΡΡΡΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΈ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΡΠΌ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎΠΌ, ΡΡΠ°Π» ΠΏΠ΅ΡΠ΅Π½ΠΎΡ DNS Π½Π° ΡΠ°ΠΌ ΡΠ°Π±ΠΎΡΠΈΠΉ ΡΠ·Π΅Π». Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅:
- SNAT Π½Π΅ Π½ΡΠΆΠ΅Π½, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠ°ΡΠΈΠΊ ΠΎΡΡΠ°Π΅ΡΡΡ Π²Π½ΡΡΡΠΈ ΡΠ·Π»Π°. ΠΠ³ΠΎ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ ΡΠ΅ΡΠ΅Π· ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ eth0.
- DNAT Π½Π΅ Π½ΡΠΆΠ΅Π½, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ IP Π°Π΄ΡΠ΅ΡΠ°ΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΌ Π΄Π»Ρ ΡΠ·Π»Π°, Π° Π½Π΅ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΌ pod’ΠΎΠΌ ΠΏΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ iptables.
ΠΡ ΡΠ΅ΡΠΈΠ»ΠΈ ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°. CoreDNS Π±ΡΠ» ΡΠ°Π·Π²Π΅ΡΠ½ΡΡ ΠΊΠ°ΠΊ DaemonSet Π² Kubernetes ΠΈ ΠΌΡ Π²Π½Π΅Π΄ΡΠΈΠ»ΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ DNS-ΡΠ΅ΡΠ²Π΅Ρ ΡΠ·Π»Π° Π² resolv.conf ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ pod’a Π½Π°ΡΡΡΠΎΠΈΠ² ΡΠ»Π°Π³ —cluster-dns ΠΊΠΎΠΌΠ°Π½Π΄Ρ kubeletβ. ΠΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌ Π΄Π»Ρ timeout’ΠΎΠ² DNS.
ΠΠ΄Π½Π°ΠΊΠΎ ΠΌΡ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π½Π°Π±Π»ΡΠ΄Π°Π»ΠΈ ΠΏΠΎΡΠ΅ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΈ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠ° insert_failed Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ Flannel. Π’Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΡ ΡΠ°Π½ΡΠ»ΠΎΡΡ ΠΈ ΠΏΠΎΡΠ»Π΅ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ ΠΎΠ±Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΡΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ ΡΡΠΌΠ΅Π»ΠΈ ΠΈΡΠΊΠ»ΡΡΠΈΡΡ SNAT ΠΈ/ΠΈΠ»ΠΈ DNAT ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ DNS-ΡΡΠ°ΡΠΈΠΊΠ°. Race conditions ΡΠΎΡ ΡΠ°Π½ΡΠ»ΠΈΡΡ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ ΡΠΈΠΏΠΎΠ² ΡΡΠ°ΡΠΈΠΊΠ°. Π ΡΡΠ°ΡΡΡΡ, Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Ρ Π½Π°Ρ β TCP, ΠΈ ΠΏΡΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΎΠ½ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ. ΠΡ Π΄ΠΎ ΡΠΈΡ ΠΏΠΎΡ ΠΏΡΡΠ°Π΅ΠΌΡΡ Π½Π°ΠΉΡΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠΈΠΏΠΎΠ² ΡΡΠ°ΡΠΈΠΊΠ°.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Envoy Π΄Π»Ρ Π»ΡΡΡΠ΅ΠΉ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠΈ Π½Π°Π³ΡΡΠ·ΠΊΠΈ
ΠΠΎ ΠΌΠ΅ΡΠ΅ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ backend-ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π² Kubernetes ΠΌΡ Π½Π°ΡΠ°Π»ΠΈ ΡΡΡΠ°Π΄Π°ΡΡ ΠΎΡ Π½Π΅ΡΠ±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρ pod’Π°ΠΌΠΈ. ΠΡ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»ΠΈ, ΡΡΠΎ ΠΈΠ·-Π·Π° HTTP Keepalive ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ELB Π·Π°Π²ΠΈΡΠ°Π»ΠΈ Π½Π° ΠΏΠ΅ΡΠ²ΡΡ Π³ΠΎΡΠΎΠ²ΡΡ pod’Π°Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΡΠΊΠ°ΡΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ deployment’Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠ°ΡΡΡ ΡΡΠ°ΡΠΈΠΊΠ° ΡΠ»Π° ΡΠ΅ΡΠ΅Π· Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΡΠΎΡΠ΅Π½Ρ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ pod’ΠΎΠ². ΠΠ΅ΡΠ²ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ, ΠΈΡΠΏΡΡΠ°Π½Π½ΡΠΌ Π½Π°ΠΌΠΈ, ΡΡΠ°Π»Π° ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° MaxSurge Π½Π° 100% Π½Π° Π½ΠΎΠ²ΡΡ deploymentβΠ°Ρ Π΄Π»Ρ Ρ ΡΠ΄ΡΠΈΡ ΡΠ»ΡΡΠ°Π΅Π². ΠΡΡΠ΅ΠΊΡ ΠΎΠΊΠ°Π·Π°Π»ΡΡ Π½Π΅Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΠΈ Π½Π΅ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌ Π² ΠΏΠ»Π°Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΊΡΡΠΏΠ½ΡΡ deployment’ΠΎΠ².
ΠΡΠ΅ ΠΎΠ΄Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π½Π°ΠΌΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π°ΠΊΠ»ΡΡΠ°Π»ΠΎΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΠΎ Π½Π°ΡΠ°ΡΠΈΠ²Π°ΡΡ Π·Π°ΠΏΡΠΎΡΡ Π½Π° ΡΠ΅ΡΡΡΡΡ Π΄Π»Ρ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π°ΠΆΠ½ΡΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ². Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Π½ΡΡ ΠΏΠΎ ΡΠΎΡΠ΅Π΄ΡΡΠ²Ρ pod’ΠΎΠ² Π±ΡΠ»ΠΎ Π±Ρ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° Π΄Π»Ρ ΠΌΠ°Π½Π΅Π²ΡΠ° ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΡΠΆΠ΅Π»ΡΠΌΠΈ pod’Π°ΠΌΠΈ. Π Π΄ΠΎΠ»Π³ΠΎΡΡΠΎΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π΅ ΠΎΠ½ΠΎ Π±Ρ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΎ ΠΈΠ·-Π·Π° ΠΏΡΡΡΠΎΠΉ ΡΡΠ°ΡΡ ΡΠ΅ΡΡΡΡΠΎΠ². ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π½Π°ΡΠΈ Node-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π±ΡΠ»ΠΈ ΠΎΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠΌΠΈ ΠΈ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΠΌΠΎΠ³Π»ΠΈ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΡΠ΄ΡΠΎ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΠ΅Π°Π»ΡΠ½ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π±ΡΠ»ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΡΡΡΠ΅ΠΉ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠΈ Π½Π°Π³ΡΡΠ·ΠΊΠΈ.
ΠΡ Π΄Π°Π²Π½ΠΎ Ρ
ΠΎΡΠ΅Π»ΠΈ Π² ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΌΠ΅ΡΠ΅ ΠΎΡΠ΅Π½ΠΈΡΡ
ΠΡ ΠΏΡΠΈΠ΄ΡΠΌΠ°Π»ΠΈ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ: ΠΈΠΌΠ΅ΡΡ ΠΏΠΎ Envoy sidecar’Ρ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ pod’Π° ΠΈ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΌΠ°ΡΡΡΡΡ, Π° ΠΊΠ»Π°ΡΡΠ΅Ρ β ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ ΠΊ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ ΠΏΠΎ ΠΏΠΎΡΡΡ. Π§ΡΠΎΠ±Ρ ΡΠ²Π΅ΡΡΠΈ ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌΡ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠ°ΡΠΊΠ°Π΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠ°Π΄ΠΈΡΡ Β«ΠΏΠΎΡΠ°ΠΆΠ΅Π½ΠΈΡΒ», ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΏΠ°ΡΠΊ front-proxy pod’ΠΎΠ² Envoy, ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΡ Π·ΠΎΠ½Ρ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΠΈ (Availability Zone, AZ) Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ°. ΠΠ½ΠΈ ΠΎΠ±ΡΠ°ΡΠ°Π»ΠΈΡΡ ΠΊ ΠΏΡΠΎΡΡΠΎΠΌΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ², Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠΌΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½Π°ΡΠΈΡ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΡΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π» ΡΠΏΠΈΡΠΎΠΊ pod’ΠΎΠ² Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ AZ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ°.
ΠΠ°ΡΠ΅ΠΌ ΡΠ΅ΡΠ²ΠΈΡΠ½ΡΠ΅ front-Envoy’ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΡΠΎΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Ρ ΠΎΠ΄Π½ΠΈΠΌ upstream-ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠΌ ΠΈ ΠΌΠ°ΡΡΡΡΡΠΎΠΌ. ΠΡ Π·Π°Π΄Π°Π»ΠΈ Π°Π΄Π΅ΠΊΠ²Π°ΡΠ½ΡΠ΅ timeout’Ρ, ΡΠ²Π΅Π»ΠΈΡΠΈΠ»ΠΈ Π²ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ circuit breakerβΠ° ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΏΠΎΠ²ΡΠΎΡΠΎΠ², ΡΡΠΎΠ±Ρ ΠΏΠΎΠΌΠΎΡΡ Ρ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΡΠΌΠΈ ΡΠ±ΠΎΡΠΌΠΈ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π±Π΅ΡΠΏΡΠ΅ΠΏΡΡΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ. ΠΠ΅ΡΠ΅Π΄ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΠΈΠ· ΡΡΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠ½ΡΡ front-Envoy’Π΅Π² ΠΌΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΠ»ΠΈ TCP ELB. ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ keepalive Ρ Π½Π°ΡΠ΅Π³ΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ»ΠΎΡ Π·Π°Π²ΠΈΡΠ°Π» Π½Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Envoy pod’Π°Ρ , ΠΎΠ½ΠΈ Π²ΡΠ΅ ΠΆΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π»ΡΡΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ Ρ Π½Π°Π³ΡΡΠ·ΠΊΠΎΠΉ ΠΈ Π±ΡΠ»ΠΈ Π½Π°ΡΡΡΠΎΠ΅Π½Ρ Π½Π° Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΡ ΡΠ΅ΡΠ΅Π· least_request Π² backend.
ΠΠ»Ρ deploymentβΠΎΠ² ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Ρ ΡΠΊ preStop ΠΊΠ°ΠΊ Π½Π° pod’Π°Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΠ°ΠΊ ΠΈ Π½Π° pod’Π°Ρ sidecar’ΠΎΠ². Π₯ΡΠΊ ΠΈΠ½ΠΈΡΠΈΠΈΡΠΎΠ²Π°Π» ΠΎΡΠΈΠ±ΠΊΡ Π² ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Ρ Π°Π΄ΠΌΠΈΠ½ΡΠΊΠΎΠ³ΠΎ endpoint’Π°, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Π½Π° sidecar-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅, ΠΈ Π·Π°ΡΡΠΏΠ°Π» Π½Π° Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Ρ ΡΠ΅ΠΌ, ΡΡΠΎΠ±Ρ Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°Π²Π΅ΡΡΠΈΡΡΡΡ Π°ΠΊΡΠΈΠ²Π½ΡΠΌ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡΠΌ.
ΠΠ΄Π½Π° ΠΈΠ· ΠΏΡΠΈΡΠΈΠ½, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΡ ΡΠΌΠΎΠ³Π»ΠΈ ΡΠ°ΠΊ Π±ΡΡΡΡΠΎ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΡΡ, ΡΠ²ΡΠ·Π°Π½Π° Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠΌΠΈ ΠΌΠ΅ΡΡΠΈΠΊΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΡΠΌΠΎΠ³Π»ΠΈ Π»Π΅Π³ΠΊΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ Π² ΠΎΠ±ΡΡΠ½ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ Prometheus. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π½Π°ΠΌ ΡΠΎΡΠ½ΠΎ Π²ΠΈΠ΄Π΅ΡΡ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΏΠΎΠΊΠ° ΠΌΡ ΠΏΠΎΠ΄Π±ΠΈΡΠ°Π»ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈ ΠΏΠ΅ΡΠ΅ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ»ΠΈ ΡΡΠ°ΡΠΈΠΊ.
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ Π±ΡΠ»ΠΈ Π½Π΅Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΠΈ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΌΠΈ. ΠΡ Π½Π°ΡΠ°Π»ΠΈ Ρ ΡΠ°ΠΌΡΡ Π½Π΅ΡΠ±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ², Π° Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΎΠ½ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΡΠ΅Ρ ΡΠΆΠ΅ ΠΏΠ΅ΡΠ΅Π΄ 12 ΡΠ°ΠΌΡΠΌΠΈ Π²Π°ΠΆΠ½ΡΠΌΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅. Π ΡΡΠΎΠΌ Π³ΠΎΠ΄Ρ ΠΌΡ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ Π½Π° ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΠΉ service mesh Ρ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠΌ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ², circuit breaking’ΠΎΠΌ, ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π²ΡΠ±ΡΠΎΡΠΎΠ², ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΈ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠΎΠΉ.
Π ΠΈΡΡΠ½ΠΎΠΊ 3β1. ΠΠΎΠ½Π²Π΅ΡΠ³Π΅Π½ΡΠΈΡ CPU ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ° Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄Π° Π½Π° Envoy
ΠΠΎΠ½Π΅ΡΠ½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠΌΡ ΠΎΠΏΡΡΡ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡΠΌ ΠΌΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΡΠΈΠ»ΡΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΏΠΎ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ΅ Ρ Ρ ΠΎΡΠΎΡΠΈΠΌΠΈ Π½Π°Π²ΡΠΊΠ°ΠΌΠΈ Π² ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ ΠΈ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ ΠΊΡΡΠΏΠ½ΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠ² Kubernetes. Π’Π΅ΠΏΠ΅ΡΡ Π²ΡΠ΅ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΡ Tinder ΠΎΠ±Π»Π°Π΄Π°ΡΡ Π·Π½Π°Π½ΠΈΡΠΌΠΈ ΠΈ ΠΎΠΏΡΡΠΎΠΌ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΠΈ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² Kubernetes.
ΠΠΎΠ³Π΄Π° Π½Π° ΡΡΠ°ΡΠΎΠΉ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»Π° ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡ Π² Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΌΠΎΡΠ½ΠΎΡΡΡΡ , Π½Π°ΠΌ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΠΈΠ½ΡΡ ΠΆΠ΄Π°ΡΡ Π·Π°ΠΏΡΡΠΊΠ° Π½ΠΎΠ²ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² EC2. Π’Π΅ΠΏΠ΅ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ Π½Π°ΡΠΈΠ½Π°ΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΈ Π½Π°ΡΠΈΠ½Π°ΡΡ Π±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΡΠ°ΡΠΈΠΊ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ΅ΠΊΡΠ½Π΄ Π²ΠΌΠ΅ΡΡΠΎ ΠΌΠΈΠ½ΡΡ. ΠΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ΅ EC2 ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΠ»ΡΡΡΠ΅Π½Π½ΡΡ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΡΡ ΠΊΠΎΠ½ΡΠ΅Π½ΡΡΠ°ΡΠΈΡ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π² 2019-ΠΌ Π³ΠΎΠ΄Ρ ΠΌΡ ΠΏΡΠΎΠ³Π½ΠΎΠ·ΠΈΡΡΠ΅ΠΌ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π·Π°ΡΡΠ°Ρ Π½Π° EC2 ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΏΡΠΎΡΠ»ΡΠΌ Π³ΠΎΠ΄ΠΎΠΌ.
ΠΠ° ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ ΡΡΠ»ΠΎ ΠΏΠΎΡΡΠΈ Π΄Π²Π° Π³ΠΎΠ΄Π°, Π½ΠΎ ΠΌΡ Π·Π°Π²Π΅ΡΡΠΈΠ»ΠΈ Π΅Π΅ Π² ΠΌΠ°ΡΡΠ΅ 2019-Π³ΠΎ. Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Tinder ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅ Kubernetes, ΡΠΎΡΡΠΎΡΡΠ΅ΠΌ ΠΈΠ· 200 ΡΠ΅ΡΠ²ΠΈΡΠΎΠ², 1000 ΡΠ·Π»ΠΎΠ², 15 000 pod’ΠΎΠ² ΠΈ 48 000 ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ². ΠΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° Π±ΠΎΠ»Π΅Π΅ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΄Π΅Π»ΠΎΠΌ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΠΎ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ. ΠΡΠ΅ Π½Π°ΡΠΈ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΡ ΡΠ°Π·Π΄Π΅Π»ΡΡΡ ΡΡΡ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΈ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ ΡΠ²ΠΎΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠ΄Π°.
P.S. ΠΎΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΠΈΠΊΠ°
Π§ΠΈΡΠ°ΠΉΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π² Π½Π°ΡΠ΅ΠΌ Π±Π»ΠΎΠ³Π΅ ΡΠΈΠΊΠ» ΡΡΠ°ΡΠ΅ΠΉ:
- Β«
ΠΡΡΠΎΡΠΈΠΈ ΡΡΠΏΠ΅Ρ Π° Kubernetes Π² production. Π§Π°ΡΡΡ 1: 4200 ΠΏΠΎΠ΄ΠΎΠ² ΠΈ TessMaster Ρ eBay Β». - Β«
ΠΡΡΠΎΡΠΈΠΈ ΡΡΠΏΠ΅Ρ Π° Kubernetes Π² production. Π§Π°ΡΡΡ 2: Concur ΠΈ SAP Β». - Β«
ΠΡΡΠΎΡΠΈΠΈ ΡΡΠΏΠ΅Ρ Π° Kubernetes Π² production. Π§Π°ΡΡΡ 3: GitHub Β». - Β«
ΠΡΡΠΎΡΠΈΠΈ ΡΡΠΏΠ΅Ρ Π° Kubernetes Π² production. Π§Π°ΡΡΡ 4: SoundCloud (Π°Π²ΡΠΎΡΡ Prometheus) Β». - Β«
ΠΡΡΠΎΡΠΈΠΈ ΡΡΠΏΠ΅Ρ Π° Kubernetes Π² production. Π§Π°ΡΡΡ 5: ΡΠΈΡΡΠΎΠ²ΠΎΠΉ Π±Π°Π½ΠΊ Monzo Β». - Β«
ΠΡΡΠΎΡΠΈΠΈ ΡΡΠΏΠ΅Ρ Π° Kubernetes Π² production. Π§Π°ΡΡΡ 6: BlaBlaCar Β». - Β«
ΠΡΡΠΎΡΠΈΠΈ ΡΡΠΏΠ΅Ρ Π° Kubernetes Π² production. Π§Π°ΡΡΡ 7: BlackRock Β». - Β«
ΠΡΡΠΎΡΠΈΠΈ ΡΡΠΏΠ΅Ρ Π° Kubernetes Π² production. Π§Π°ΡΡΡ 8: Huawei Β». - Β«
ΠΡΡΠΎΡΠΈΠΈ ΡΡΠΏΠ΅Ρ Π° Kubernetes Π² production. Π§Π°ΡΡΡ 9: Π¦ΠΠ Π ΠΈ 210 ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠ² K8s Β». - Β«
ΠΡΡΠΎΡΠΈΠΈ ΡΡΠΏΠ΅Ρ Π° Kubernetes Π² production. Π§Π°ΡΡΡ 10: Reddit Β».
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com