Kafka Π½Π° Kubernetes β€” это Ρ…ΠΎΡ€ΠΎΡˆΠΎ?

ΠŸΡ€ΠΈΠ²Π΅Ρ‚ΡΡ‚Π²ΡƒΠ΅ΠΌ вас, Π₯Π°Π±Ρ€!

Π’ своС врСмя ΠΌΡ‹ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌΠΈ Π²Ρ‹Π²Π΅Π»ΠΈ Π½Π° российский Ρ€Ρ‹Π½ΠΎΠΊ Ρ‚Π΅ΠΌΡƒ Kafka ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° Π΅Π΅ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ΠΌ. Π’ частности, Π½Π°ΠΌ показалась интСрСсной Ρ‚Π΅ΠΌΠ° взаимодСйствия Kafka ΠΈ Kubernetes. ΠžΠ±Π·ΠΎΡ€Π½Π°Ρ (ΠΈ довольно остороТная) ΡΡ‚Π°Ρ‚ΡŒΡ Π½Π° эту Ρ‚Π΅ΠΌΡƒ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΠ»Π° Π² Π±Π»ΠΎΠ³Π΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Confluent Π΅Ρ‰Π΅ Π² октябрС ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ Π³ΠΎΠ΄Π° ΠΏΠΎΠ΄ авторством Π“Π²Π΅Π½ Π¨Π°ΠΏΠΈΡ€Ρ‹. БСгодня ΠΆΠ΅ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ вашС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΡΠ²Π΅ΠΆΡƒΡŽ, Π°ΠΏΡ€Π΅Π»ΡŒΡΠΊΡƒΡŽ ΡΡ‚Π°Ρ‚ΡŒΡŽ Π™ΠΎΡ…Π°Π½Π½Π° Π“Π°ΠΉΠ³Π΅Ρ€Π° (Johann Gyger), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, хотя ΠΈ Π½Π΅ обошСлся Π±Π΅Π· Π²ΠΎΠΏΡ€ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΠΊΠ° Π² Π½Π°Π·Π²Π°Π½ΠΈΠΈ, рассматриваСт Ρ‚Π΅ΠΌΡƒ Π² Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΌ ΠΊΠ»ΡŽΡ‡Π΅, сопровоТдая тСкст интСрСсными ссылками. ΠŸΡ€ΠΎΡΡ‚ΠΈΡ‚Π΅ Π½Π°ΠΌ поТалуйста Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ Β«chaos monkeyΒ», Ссли смоТСтС!

Kafka Π½Π° Kubernetes — это Ρ…ΠΎΡ€ΠΎΡˆΠΎ?

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Kubernetes ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ°ΠΌΠΈ, Π½Π΅ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‰ΠΈΠΌΠΈ состояниС. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρ‚Π°ΠΊΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ прСдставлСны Π² Ρ„ΠΎΡ€ΠΌΠ΅ микросСрвисной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, ΠΎΠ½ΠΈ лСгковСсны, Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ΄Π΄Π°ΡŽΡ‚ΡΡ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ, ΠΏΠΎΠ΄Ρ‡ΠΈΠ½ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌ 12-Ρ„Π°ΠΊΡ‚ΠΎΡ€Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с автоматичСскими Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡΠΌΠΈ (circuit breaker) ΠΈ ΠΌΠ°Ρ€Ρ‚Ρ‹ΡˆΠΊΠ°ΠΌΠΈ-ломашками (chaos monkeys).

Kafka, располоТСнный с Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Π² сущности, выступаСт Π² Ρ€ΠΎΠ»ΠΈ распрСдСлСнной Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π²Π°ΠΌ приходится ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π΅Π»ΠΎ с состояниСм, Π° ΠΎΠ½ΠΎ Π³ΠΎΡ€Π°Π·Π΄ΠΎ тяТСловСснСС микросСрвиса. Kubernetes ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ с сохранСниСм состояния, Π½ΠΎ, ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ КСлси Π₯айтауэр Π² Π΄Π²ΡƒΡ… своих Ρ‚Π²ΠΈΡ‚Π°Ρ…, с Π½ΠΈΠΌΠΈ слСдуСт ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ остороТно:

НСкоторым каТСтся, Ρ‡Ρ‚ΠΎ, Ссли Π½Π°ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ Kubernetes Π½Π° Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ с сохранСниСм состояния, ΠΎΠ½ прСвращаСтся Π² ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡƒΠΏΡ€Π°Π²Π»ΡΠ΅ΠΌΡƒΡŽ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…, ΡΠΏΠΎΡΠΎΠ±Π½ΡƒΡŽ ΡΠΎΠΏΠ΅Ρ€Π½ΠΈΡ‡Π°Ρ‚ΡŒ с RDS. Π­Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊ. ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Ссли достаточно ΠΏΠΎΡ‚Ρ€ΡƒΠ΄ΠΈΡ‚ΡŒΡΡ, ΠΏΡ€ΠΈΠΊΡ€ΡƒΡ‚ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΈ ΠΏΡ€ΠΈΠ²Π»Π΅Ρ‡ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ SRE-ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠ², Ρ‚ΠΎ удастся ΠΎΠ±ΡƒΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ RDS ΠΏΠΎΠ²Π΅Ρ€Ρ… Kubernetes.

ВсСгда всСм Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΏΡ€ΠΎΡΠ²Π»ΡΡ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΎΡΡ‚ΠΎΡ€ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, запуская Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ с сохранСниСм состояния Π½Π° Kubernetes. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ· Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ интСрСсуСтся, «смогу Π»ΠΈ я Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π½Π° Kubernetes Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ с сохранСниСм состояния» Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ достаточным ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ с Kubernetes, Π° Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ – ΠΈ с Ρ‚ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‚.

Π˜Ρ‚Π°ΠΊ, слСдуСт Π»ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Kafka Π½Π° Kubernetes? ВстрСчный вопрос: Π° Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ Kafka Π»ΡƒΡ‡ΡˆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π±Π΅Π· Kubernetes? Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ я Ρ…ΠΎΡ‡Ρƒ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ΡŒ Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅, ΠΊΠ°ΠΊ Kafka ΠΈ Kubernetes Π΄ΠΎΠΏΠΎΠ»Π½ΡΡŽΡ‚ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°, ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠ°ΠΌΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒΡΡ ΠΏΡ€ΠΈ ΠΈΡ… сочСтании.

ВрСмя исполнСния

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‰ΠΈ β€” срСдС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ исполнСния ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΎΠ²ΠΎΠΉ

ΠŸΡ€ΠΎΡ†Π΅ΡΡ

Π‘Ρ€ΠΎΠΊΠ΅Ρ€Ρ‹ Kafka ΡƒΠ΄ΠΎΠ±Π½Ρ‹ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с CPU. TLS ΠΌΠΎΠΆΠ΅Ρ‚ привнСсти Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ·Π΄Π΅Ρ€ΠΆΠΊΠΈ. ΠŸΡ€ΠΈ этом, ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ Kafka ΠΌΠΎΠ³ΡƒΡ‚ сильнСС Π½Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ CPU, Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅, Π½ΠΎ это Π½Π΅ влияСт Π½Π° Π±Ρ€ΠΎΠΊΠ΅Ρ€ΠΎΠ².

ΠŸΠ°ΠΌΡΡ‚ΡŒ

Π‘Ρ€ΠΎΠΊΠ΅Ρ€Ρ‹ Kafka ΠΎΡ‚ΠΆΠΈΡ€Π°ΡŽΡ‚ ΠΏΠ°ΠΌΡΡ‚ΡŒ. Π Π°Π·ΠΌΠ΅Ρ€ ΠΊΡƒΡ‡ΠΈ JVM ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΌΠΎΠ΄Π½ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ 4–5 Π“Π±, Π½ΠΎ Π²Π°ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ понадобится ΠΌΠ½ΠΎΠ³ΠΎ систСмной памяти, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Kafka ΠΎΡ‡Π΅Π½ΡŒ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ страничный кэш. Π’ Kubernetes ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π·Π°Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π½Π° рСсурсы ΠΈ запросы.

Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π΄Π°Π½Π½Ρ‹Ρ…

Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Ρ… являСтся эфСмСрным – Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚Π΅Ρ€ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ пСрСзапускС. Для Π΄Π°Π½Π½Ρ‹Ρ… Kafka ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠΌ emptyDir, ΠΈ эффСкт Π±ΡƒΠ΄Π΅Ρ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ: Π΄Π°Π½Π½Ρ‹Π΅ вашСго Π±Ρ€ΠΎΠΊΠ΅Ρ€Π° Π±ΡƒΠ΄ΡƒΡ‚ утСряны послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ. Π’Π°ΡˆΠΈ сообщСния всС Ρ€Π°Π²Π½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… Π±Ρ€ΠΎΠΊΠ΅Ρ€Π°Ρ… Π² качСствС Ρ€Π΅ΠΏΠ»ΠΈΠΊ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, послС пСрСзапуска ΠΎΡ‚ΠΊΠ°Π·Π°Π²ΡˆΠΈΠΉ Π±Ρ€ΠΎΠΊΠ΅Ρ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ Ρ€Π΅ΠΏΠ»ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС Π΄Π°Π½Π½Ρ‹Π΅, Π° Π½Π° этот процСсс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π΅ΠΌΠ°Π»ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠ»Π³ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡƒΡΡ‚ΡŒ это Π±ΡƒΠ΄Π΅Ρ‚ нСлокальноС Π΄ΠΎΠ»Π³ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ с Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой XFS ΠΈΠ»ΠΈ, Ρ‚ΠΎΡ‡Π½Π΅Π΅, ext4. НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ NFS. Π― ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅Π΄ΠΈΠ». NFS вСрсий v3 ΠΈΠ»ΠΈ v4 Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚. ΠšΠΎΡ€ΠΎΡ‡Π΅ говоря, Π±Ρ€ΠΎΠΊΠ΅Ρ€ Kafka Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ, Ссли Π½Π΅ смоТСт ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ·-Π·Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с Β«Π³Π»ΡƒΠΏΡ‹ΠΌΠΈ пСрСимСнованиями», Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ Π² NFS. Если я вас Π΄ΠΎ сих ΠΏΠΎΡ€ Π½Π΅ ΡƒΠ±Π΅Π΄ΠΈΠ», ΠΎΡ‡Π΅Π½ΡŒ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ‡Ρ‚ΠΈΡ‚Π΅ эту ΡΡ‚Π°Ρ‚ΡŒΡŽ. Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π½Π΅Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Kubernetes ΠΌΠΎΠ³ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΎ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΡƒΠ·Π΅Π» послС пСрСзапуска ΠΈΠ»ΠΈ Ρ€Π΅Π»ΠΎΠΊΠ°Ρ†ΠΈΠΈ.

Π‘Π΅Ρ‚ΡŒ

Как ΠΈ Π² случаС с Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎΠΌ распрСдСлСнных систСм, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Kafka ΠΎΡ‡Π΅Π½ΡŒ сильно зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ Π² сСти Π±Ρ‹Π»ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ, Π° ΡˆΠΈΡ€ΠΈΠ½Π° полосы – максимальной. НС ΠΏΡ‹Ρ‚Π°ΠΉΡ‚Π΅ΡΡŒ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ всС Π±Ρ€ΠΎΠΊΠ΅Ρ€Ρ‹ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΈ Ρ‚ΠΎΠΌ ΠΆΠ΅ ΡƒΠ·Π»Π΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡΡ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ. Если ΠΎΡ‚ΠΊΠ°ΠΆΠ΅Ρ‚ ΡƒΠ·Π΅Π» Kubernetes, Ρ‚ΠΎ ΠΎΡ‚ΠΊΠ°ΠΆΠ΅Ρ‚ ΠΈ вСсь кластСр Kafka. Π’Π°ΠΊΠΆΠ΅ Π½Π΅ рассрСдоточивайтС кластСр Kafka ΠΏΠΎ Ρ†Π΅Π»Ρ‹ΠΌ Π΄Π°Ρ‚Π°Ρ†Π΅Π½Ρ‚Ρ€Π°ΠΌ. Π’ΠΎ ΠΆΠ΅ касаСтся кластСра Kubernetes. Π₯ΠΎΡ€ΠΎΡˆΠΈΠΉ компромисс Π² Π΄Π°Π½Π½ΠΎΠΌ случаС – Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Π·ΠΎΠ½Ρ‹ доступности.

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ

ΠžΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ манифСсты

На сайтС Kubernetes Π΅ΡΡ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ руководство ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ZooKeeper ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ манифСстов. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ZooKeeper Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² состав Kafka, ΠΈΠΌΠ΅Π½Π½ΠΎ с этого ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ Π·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ Kubernetes здСсь ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹. Π Π°Π·ΠΎΠ±Ρ€Π°Π²ΡˆΠΈΡΡŒ с этим, Π²Ρ‹ смоТСтС Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅ ΠΆΠ΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ΠΈ с кластСром Kafka.

  • Под: ΠΏΠΎΠ΄ – это минимальная развСртываСмая Π΅Π΄ΠΈΠ½ΠΈΡ†Π° Π² Kubernetes. Π’ ΠΏΠΎΠ΄Π΅ содСрТится ваша рабочая Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ°, Π° сам ΠΏΠΎΠ΄ соотвСтствуСт процСссу Ρƒ вас Π² кластСрС. Π’ ΠΏΠΎΠ΄Π΅ содСрТится ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ². ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ сСрвСр ZooKeeper Π² ансамблС ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π±Ρ€ΠΎΠΊΠ΅Ρ€ Π² кластСрС Kafka Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΏΠΎΠ΄Π΅.
  • StatefulSet: StatefulSet – это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Kubernetes, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ со мноТСствСнными Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌΠΈ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ°ΠΌΠΈ, ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‰ΠΈΠΌΠΈ состояниями, Π° Ρ‚Π°ΠΊΠΈΠ΅ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ†ΠΈΠΈ. StatefulSet ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ упорядочСния ΠΏΠΎΠ΄ΠΎΠ² ΠΈ ΠΈΡ… ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.
  • Headless-сСрвисы: БСрвисы ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΎΡ‚ΠΊΡ€Π΅ΠΏΠ»ΡΡ‚ΡŒ ΠΏΠΎΠ΄Ρ‹ ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ логичСского ΠΈΠΌΠ΅Π½ΠΈ. Kubernetes Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° балансировку Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. Однако, ΠΏΡ€ΠΈ опСрациях с Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌΠΈ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ°ΠΌΠΈ, ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‰ΠΈΠΌΠΈ состояниС, ΠΊΠ°ΠΊ Π² случаС с ZooKeeper ΠΈ Kafka, ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ инстансом. ИмСнно здСсь Π²Π°ΠΌ ΠΈ пригодятся headless-сСрвисы: Π² Ρ‚Π°ΠΊΠΎΠΌ случаС Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° всС Ρ€Π°Π²Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ логичСскоС имя, Π½ΠΎ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΊ ΠΏΠΎΠ΄Ρƒ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ.
  • Π’ΠΎΠΌ для Π΄ΠΎΠ»Π³ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ хранСния: Ρ‚Π°ΠΊΠΈΠ΅ Ρ‚ΠΎΠΌΠ° Π½ΡƒΠΆΠ½Ρ‹ для ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ нСлокального Π±Π»ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π΄ΠΎΠ»Π³ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Π²Ρ‹ΡˆΠ΅.

На Yolean прСдоставляСтся ΠΈΡΡ‡Π΅Ρ€ΠΏΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π°Π±ΠΎΡ€ манифСстов, ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Kafka Π½Π° Kubernetes.

Helm-Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹

Helm – это ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² для a Kubernetes, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ с ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π°ΠΌΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² для ОБ, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ yum, apt, Homebrew ΠΈΠ»ΠΈ Chocolatey. Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, описанныС Π² Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°Ρ… Helm. Π₯ΠΎΡ€ΠΎΡˆΠΎ подобранная Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° Helm ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ ΡΠ»ΠΎΠΆΠ½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ: ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΡΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ для использования Kafka Π½Π° Kubernetes. Π•ΡΡ‚ΡŒ нСсколько Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌ Kafka: ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ находится Π² ΠΈΠ½ΠΊΡƒΠ±Π°Ρ‚ΠΎΡ€Π½ΠΎΠΌ состоянии, Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½Π° ΠΎΡ‚ Confluent, Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° – ΠΎΡ‚ Bitnami.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Helm свойствСнны ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ нСдостатки, Π½Π΅ΠΌΠ°Π»ΡƒΡŽ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Π°Π΅Ρ‚ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ срСдство: ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Kubernetes. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π½Π΅ просто ΡƒΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ софт для Kubernetes, Π½ΠΎ ΠΈ позволяСт Π²Π°ΠΌ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ софт, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠΌ.

Π’ спискС ΠΏΠΎΡ‚Ρ€ΡΡΠ°ΡŽΡ‰ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΡƒΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ΡΡ Π΄Π²Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° для Kafka. Один ΠΈΠ· Π½ΠΈΡ… β€” Strimzi. ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Strimzi Π½Π΅ составляСт Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Ρ‚Ρ€ΡƒΠ΄Π° ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ кластСр Kafka Π·Π° считанныС ΠΌΠΈΠ½ΡƒΡ‚Ρ‹. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π²Π½ΠΎΡΠΈΡ‚ΡŒ Π½Π΅ трСбуСтся, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, сам ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ прСдоставляСт ΠΊΠΎΠ΅-ΠΊΠ°ΠΊΠΈΠ΅ приятныС возмоТности, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ TLS Π²ΠΈΠ΄Π° Β«Ρ‚ΠΎΡ‡ΠΊΠ°-Ρ‚ΠΎΡ‡ΠΊΠ°Β» Π²Π½ΡƒΡ‚Ρ€ΠΈ кластСра. Confluent Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСт собствСнный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

ΠžΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, снабТая установлСнный Ρƒ вас экзСмпляр Kafka ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ. Π’Π°ΠΊΠΈΠ΅ тСсты ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΡƒΠ·ΠΊΠΈΠ΅ мСста, ΠΏΠΎΠΊΠ° Π½Π΅ Π½Π°Ρ‡Π°Π»ΠΈΡΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Π² Kafka ΡƒΠΆΠ΅ прСдоставляСтся Π΄Π²Π° инструмСнта для тСстирования ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ: kafka-producer-perf-test.sh ΠΈ kafka-consumer-perf-test.sh. Активно ΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΈΠΌΠΈ. Для справки ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ²Π΅Ρ€ΡΡ‚ΡŒΡΡ с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ, описанными Π² этом постС Π”ΠΆΠ΅Π΅ΠΌ ΠšΡ€Π΅ΠΏΡΠΎΠΌ, Π»ΠΈΠ±ΠΎ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° этот ΠΎΠ±Π·ΠΎΡ€ Amazon MSK ΠΎΡ‚ StΓ©phane Maarek.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³

ΠŸΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ Π² систСмС ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Π° – ΠΈΠ½Π°Ρ‡Π΅ Π²Ρ‹ Π½Π΅ ΠΏΠΎΠΉΠΌΠ΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π² Π½Π΅ΠΉ происходит. БСгодня имССтся солидный инструмСнтарий, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π½Π° основС ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ Π² стилС cloud native. Π”Π²Π° популярных инструмСнта для этой Ρ†Π΅Π»ΠΈ β€” Prometheus ΠΈ Grafana. Prometheus ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ со всСх процСссов Java (Kafka, Zookeeper, Kafka Connect) ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ экспортСра JMX – самым простым ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Если ΠΏΡ€ΠΈΡΠΎΠ²ΠΎΠΊΡƒΠΏΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ cAdvisor, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π½Π΅Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Π² Kubernetes ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ рСсурсы.

Π£ Strimzi Π΅ΡΡ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π°ΡˆΠ±ΠΎΡ€Π΄Π° Grafana для Kafka. Он Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎ Π½Π΅Π΄ΠΎΡ€Π΅ΠΏΠ»ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… сСкторах ΠΈΠ»ΠΈ ΠΎ Ρ‚Π΅Ρ…, Ρ‡Ρ‚ΠΎ находятся ΠΎΡ„Ρ„Π»Π°ΠΉΠ½. Π’Π°ΠΌ всС ΠΎΡ‡Π΅Π½ΡŒ понятно. Π­Ρ‚ΠΈ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ свСдСниями ΠΎΠ± использовании рСсурсов ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ кластСра Kafka Π·Π° просто Ρ‚Π°ΠΊ!

Kafka Π½Π° Kubernetes — это Ρ…ΠΎΡ€ΠΎΡˆΠΎ?

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: strimzi.io/docs/master/#kafka_dashboard

ВсС это Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ΠΎΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² (ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΠΏΠΎ ΠΊΠΎΠ½ΡΡŒΡŽΠΌΠ΅Ρ€Π°ΠΌ ΠΈ ΠΏΡ€ΠΎΠ΄ΡŒΡŽΡΠ΅Ρ€Π°ΠΌ), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ΠΎΠΌ запаздывания (для этого Π΅ΡΡ‚ΡŒ Burrow) ΠΈ сквозным ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ΠΎΠΌ – для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Kafka Monitor.

Π›ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Π›ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ – Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° ваТнСйшая Π·Π°Π΄Π°Ρ‡Π°. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ всС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Π² вашСй установкС Kafka Π»ΠΎΠ³ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² stdout ΠΈ stderr, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π°Π±ΠΎΡ‚ΡŒΡ‚Π΅ΡΡŒ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ваш кластСр Kubernetes Π°Π³Ρ€Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π» всС Π»ΠΎΠ³ΠΈ Π² Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΡƒΡ€Π½Π°Π»ΡŒΠ½ΠΎΠΉ инфраструктурС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Elasticsearch.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° работоспособности

Kubernetes ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π·ΠΎΠ½Π΄Ρ‹ «Тивости» (liveness) ΠΈ готовности (readiness) Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ Π»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ваши ΠΏΠΎΠ΄Ρ‹. Если ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΆΠΈΠ²ΠΎΡΡ‚ΡŒ Π½Π΅ удаСтся, Kubernetes остановит этот ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, Π° Π·Π°Ρ‚Π΅ΠΌ автоматичСски пСрСзапустит Π΅Π³ΠΎ, Ссли ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° пСрСзапуска установлСна ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Если Π½Π΅ удаСтся ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Π³ΠΎΡ‚ΠΎΠ²Π½ΠΎΡΡ‚ΡŒ, Ρ‚ΠΎ Kubernetes ΠΈΠ·ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ этот ΠΏΠΎΠ΄ ΠΎΡ‚ обслуТивания запросов. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π² ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… случаях большС Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ трСбуСтся Π²ΠΌΠ΅ΡˆΠ°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π° Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Π° это большой плюс.

Π’Ρ‹ΠΊΠ°Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ

StatefulSet ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ автоматичСскиС обновлСния: ΠΏΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ стратСгии RollingUpdate ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΠ΄ Kafka Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒΡΡ ΠΏΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ свСсти Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ простоСв ΠΊ Π½ΡƒΠ»ΡŽ.

ΠœΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

ΠœΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ кластСра Kafka – нСпростая Π·Π°Π΄Π°Ρ‡Π°. Однако, Π² Kubernetes ΠΎΡ‡Π΅Π½ΡŒ просто ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ‹ Π΄ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ количСства Ρ€Π΅ΠΏΠ»ΠΈΠΊ, Π° это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ смоТСтС Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π±Ρ€ΠΎΠΊΠ΅Ρ€ΠΎΠ² Kafka, сколько Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅. Π‘Π°ΠΌΠΎΠ΅ слоТноС Π² Π΄Π°Π½Π½ΠΎΠΌ случаС – пСрСприсваиваниС сСкторов послС ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π²Π²Π΅Ρ€Ρ… ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²Π½ΠΈΠ·. ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, с этой Π·Π°Π΄Π°Ρ‡Π΅ΠΉ Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Kubernetes.

АдминистрированиС

Π—Π°Π΄Π°Ρ‡ΠΈ, связанныС с администрированиСм вашСго кластСра Kafka, Π² частности, созданиС Ρ‚ΠΎΠΏΠΈΠΊΠΎΠ² ΠΈ пСрСприсваиваниС сСкторов ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ шСлл-скриптов, открывая интСрфСйс ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Π² Π²Π°ΡˆΠΈΡ… ΠΏΠΎΠ΄Π°Ρ…. Однако, Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π΅ слишком красивоС. Strimzi ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠΏΠΈΠΊΠ°ΠΌΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°. Π—Π΄Π΅ΡΡŒ Π΅ΡΡ‚ΡŒ Ρ‡Ρ‚ΠΎ Π΄ΠΎΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ.

Π Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ восстановлСниС

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Kafka Ρƒ нас Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΈ ΠΎΡ‚ доступности Kubernetes. Если Ρƒ вас ΡƒΠΏΠ°Π΄Π΅Ρ‚ кластСр Kubernetes, Ρ‚ΠΎ Π² Ρ…ΡƒΠ΄ΡˆΠ΅ΠΌ случаС ΡƒΠΏΠ°Π΄Π΅Ρ‚ ΠΈ кластСр Kafka. По Π·Π°ΠΊΠΎΠ½Ρƒ ΠœΡ‘Ρ€Ρ„ΠΈ это ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, ΠΈ Π²Ρ‹ потСряСтС Π΄Π°Π½Π½Ρ‹Π΅. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ риск Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π°, Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΡ€ΠΎΡ€Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ³ΠΎ копирования. МоТно Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ MirrorMaker, Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ – Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ для этого S3, ΠΊΠ°ΠΊ описано Π² этом постС ΠΎΡ‚ Zalando.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с нСбольшими ΠΈΠ»ΠΈ срСдними кластСрами Kafka ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ цСлСсообразно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Kubernetes, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ обСспСчиваСт Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ ΠΈ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ. Если ΠΏΠ΅Ρ€Π΅Π΄ Π²Π°ΠΌΠΈ стоят ΠΎΡ‡Π΅Π½ΡŒ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Π΅ Π½Π΅Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ трСбования, ΠΊΠ°ΡΠ°ΡŽΡ‰ΠΈΠ΅ΡΡ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΈ/ΠΈΠ»ΠΈ пропускной способности, Ρ‚ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π»ΡƒΡ‡ΡˆΠ΅ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ развСртывания.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com