{"id":36822,"date":"2019-10-31T22:14:01","date_gmt":"2019-10-31T19:14:01","guid":{"rendered":"https:\/\/prohoster.info\/blog\/kafka-na-kubernetes-eto-horosho\/"},"modified":"2019-10-31T22:14:01","modified_gmt":"2019-10-31T19:14:01","slug":"kafka-na-kubernetes-eto-horosho","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/kafka-na-kubernetes-eto-horosho","title":{"rendered":"Czy Kafka na Kubernetes to dobry pomys\u0142?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Witamy, Habr!<\/p>\n<p>Kiedy\u015b jako pierwsi wprowadzili\u015bmy na rynek rosyjski temat <noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/collection\/all\/product\/apache-kafka-potokovaya-obrabotka-i-analiz-dannyh\">Kafka<\/a><\/noindex> i kontynuujemy <noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/product_by_id\/132649774\">nadzorowa\u0107<\/a><\/noindex> jego rozw\u00f3j. Szczeg\u00f3lnie interesuj\u0105cy wyda\u0142 si\u0119 nam temat interakcji mi\u0119dzy Kafka a <noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/product_by_id\/125705747\">Kubernetes<\/a><\/noindex>. Przegl\u0105d (do\u015b\u0107 ostro\u017cny) <noindex><a rel=\"nofollow\" href=\"https:\/\/www.confluent.io\/blog\/apache-kafka-kubernetes-could-you-should-you\">artyku\u0142<\/a><\/noindex> na ten temat ukaza\u0142 si\u0119 na blogu firmy Confluent ju\u017c w pa\u017adzierniku ubieg\u0142ego roku autorstwa Gwen Shapiro. Dzisiaj chcemy zwr\u00f3ci\u0107 uwag\u0119 na \u015bwie\u017cszy, kwietniowy artyku\u0142 Johann\u2019a Gygera, kt\u00f3ry, cho\u0107 nie oby\u0142o si\u0119 bez znaku zapytania w tytule, omawia temat w bardziej szczeg\u00f3lny spos\u00f3b, towarzysz\u0105c tekstowi ciekawymi linkami. Prosz\u0119 o wybaczenie za lu\u017ane t\u0142umaczenie \u201echaos monkey\u201d, je\u015bli b\u0119dzie to mo\u017cliwe!<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/piter\/blog\/462257\/\"><img decoding=\"async\" alt=\"Czy Kafka na Kubernetes to dobry pomys\u0142?\" src=\"\/wp-content\/uploads\/2019\/08\/a7c9b9f2f2e0a2f55d69da18020440e6.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex> <\/p>\n<h4>Wprowadzenie<\/h4>\n<p>\nKubernetes jest przeznaczony do pracy z obci\u0105\u017ceniami, kt\u00f3re nie przechowuj\u0105 stanu. Zazwyczaj takie obci\u0105\u017cenia maj\u0105 form\u0119 architektury mikrous\u0142ugowej, s\u0105 lekkie, dobrze poddaj\u0105 si\u0119 poziomemu skalowaniu, przestrzegaj\u0105 zasad aplikacji 12-factor, pozwalaj\u0105 na prac\u0119 z automatycznymi wy\u0142\u0105cznikami (circuit breaker) oraz ma\u0142pami chaosu (chaos monkeys).<\/p>\n<p>Kafka z drugiej strony w zasadzie pe\u0142ni rol\u0119 rozproszonej bazy danych. W zwi\u0105zku z tym, pracuj\u0105c z ni\u0105, musisz radzi\u0107 sobie z stanem, a ten jest znacznie ci\u0119\u017cszy ni\u017c mikrous\u0142uga. Kubernetes obs\u0142uguje obci\u0105\u017cenia z zachowaniem stanu, ale jak zauwa\u017ca Kelsey Hightower w swoich dw\u00f3ch tweetach, nale\u017cy z nimi obchodzi\u0107 si\u0119 ostro\u017cnie:<\/p>\n<blockquote><p>Niekt\u00f3rzy maj\u0105 wra\u017cenie, \u017ce je\u015bli zastosujesz Kubernetes na obci\u0105\u017ceniu z zachowaniem stanu, zamienia si\u0119 on w w pe\u0142ni zarz\u0105dzan\u0105 baz\u0119 danych, zdoln\u0105 konkurowa\u0107 z RDS. To nieprawda. Mo\u017ce, je\u017celi si\u0119 wystarczaj\u0105co napracujesz, dodasz dodatkowe komponenty i zaanga\u017cujesz zesp\u00f3\u0142 SRE-in\u017cynier\u00f3w, uda si\u0119 skonfigurowa\u0107 RDS na Kubernetes.<\/p><\/blockquote>\n<blockquote><p>Zawsze wszystkim zalecam zachowanie wyj\u0105tkowej ostro\u017cno\u015bci przy uruchamianiu obci\u0105\u017ce\u0144 z zachowaniem stanu na Kubernetes. Wi\u0119kszo\u015b\u0107 os\u00f3b, kt\u00f3re si\u0119 pytaj\u0105, \u201eczy mog\u0119 uruchomi\u0107 obci\u0105\u017cenia z zachowaniem stanu na Kubernetes\u201d, nie ma wystarczaj\u0105cego do\u015bwiadczenia w pracy z Kubernetes, a cz\u0119sto tak\u017ce z tym obci\u0105\u017ceniem, o kt\u00f3re pytaj\u0105.<\/p><\/blockquote>\n<p> Czy warto uruchamia\u0107 Kafka na Kubernetes? Pytanie pomocnicze: czy Kafka b\u0119dzie dzia\u0142a\u0107 lepiej bez Kubernetes? Dlatego w tym artykule chcia\u0142bym podkre\u015bli\u0107, jak Kafka i Kubernetes si\u0119 uzupe\u0142niaj\u0105 oraz jakie pu\u0142apki mog\u0105 si\u0119 pojawi\u0107 przy ich po\u0142\u0105czeniu.<\/p>\n<h4>Czas wykonania<\/h4>\n<p>\nPorozmawiajmy o podstawowej kwestii \u2014 o \u015brodowisku wykonawczym jako takim<\/p>\n<p><i><b>Proces<\/b><\/i><\/p>\n<p>Brokerzy Kafka s\u0105 przydatni w pracy z CPU. TLS mo\u017ce wprowadza\u0107 pewne koszty. Klienci Kafka mog\u0105 jednak bardziej obci\u0105\u017ca\u0107 CPU, je\u015bli korzystaj\u0105 z szyfrowania, ale nie wp\u0142ywa to na broker\u00f3w.<\/p>\n<p><i><b>Pami\u0119\u0107<\/b><\/i><\/p>\n<p>Brokerzy Kafka poch\u0142aniaj\u0105 pami\u0119\u0107. Rozmiar stosu JVM zwykle powinien by\u0107 ograniczony do 4\u20135 GB, ale potrzebujesz r\u00f3wnie\u017c du\u017co pami\u0119ci systemowej, poniewa\u017c Kafka bardzo aktywnie wykorzystuje pami\u0119\u0107 podr\u0119czn\u0105. W Kubernetes odpowiednio ustawiaj limity kontenera dla zasob\u00f3w i zapotrzebowa\u0144.<\/p>\n<p><i><b>Przechowywanie danych<\/b><\/i><\/p>\n<p>Przechowywanie danych w kontenerach jest efemeryczne \u2013 dane s\u0105 tracone podczas restartu. Dla danych Kafka mo\u017cna u\u017cywa\u0107 woluminu, a efekt b\u0119dzie podobny: dane twojego brokera zostan\u0105 utracone po zako\u0144czeniu. Twoje wiadomo\u015bci mog\u0105 nadal by\u0107 przechowywane na innych brokerach jako repliki. Dlatego po restarcie uszkodzony broker powinien najpierw zreplikowa\u0107 wszystkie dane, co mo\u017ce zaj\u0105\u0107 troch\u0119 czasu. <code>emptyDir<\/code>, a efekt b\u0119dzie analogiczny: dane twojego brokera zostan\u0105 utracone po zako\u0144czeniu. Twoje wiadomo\u015bci mog\u0105 nadal by\u0107 przechowywane na innych brokerach jako repliki. Dlatego po restarcie uszkodzony broker powinien najpierw zreplikowa\u0107 wszystkie dane, co mo\u017ce zaj\u0105\u0107 troch\u0119 czasu. <\/p>\n<p>Dlatego nale\u017cy u\u017cywa\u0107 trwa\u0142ego przechowywania danych. Niech to b\u0119dzie nielokalne trwa\u0142e przechowywanie z systemem plik\u00f3w XFS lub, dok\u0142adniej, ext4. Nie u\u017cywaj NFS. Ostrzegam ci\u0119. NFS w wersjach v3 lub v4 nie b\u0119dzie dzia\u0142a\u0107. W skr\u00f3cie, broker Kafka zako\u0144czy dzia\u0142anie, je\u015bli nie b\u0119dzie m\u00f3g\u0142 usun\u0105\u0107 katalogu z danymi z powodu problemu z \"g\u0142upimi zmianami nazw\", co dotyczy NFS. Je\u015bli jeszcze ci\u0119 nie przekona\u0142em, bardzo uwa\u017cnie <noindex><a rel=\"nofollow\" href=\"https:\/\/sbg.technology\/2018\/07\/10\/kafka-nfs\/\">przeczytaj ten artyku\u0142<\/a><\/noindex>. Przechowywanie danych powinno by\u0107 nielokalne, aby Kubernetes m\u00f3g\u0142 bardziej elastycznie wybra\u0107 nowy w\u0119ze\u0142 po restarcie lub relokacji.<\/p>\n<p><i><b>Sie\u0107<\/b><\/i><\/p>\n<p>Podobnie jak w przypadku wi\u0119kszo\u015bci rozproszonych system\u00f3w, wydajno\u015b\u0107 Kafka w du\u017cym stopniu zale\u017cy od minimalizacji op\u00f3\u017anie\u0144 sieciowych i maksymalizacji szeroko\u015bci pasma. Nie pr\u00f3buj umieszcza\u0107 wszystkich broker\u00f3w na tym samym w\u0119\u017ale, poniewa\u017c wp\u0142ynie to na dost\u0119pno\u015b\u0107. Je\u015bli wyst\u0105pi awaria w\u0119z\u0142a Kubernetes, to ca\u0142y klaster Kafka te\u017c zawiedzie. Nie rozprzestrzeniaj tak\u017ce klastra Kafka na ca\u0142e centra danych. To samo dotyczy klastra Kubernetes. Dobrym kompromisem jest wyb\u00f3r r\u00f3\u017cnych stref dost\u0119pno\u015bci.<\/p>\n<h4>Konfiguracja<\/h4>\n<p>\n<i><b>Zwyk\u0142e manifesty<\/b><\/i><\/p>\n<p>Na stronie Kubernetes znajduje si\u0119 <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/tutorials\/stateful-application\/zookeeper\/\">bardzo dobrej dokumentacji<\/a><\/noindex> na temat konfigurowania ZooKeepera za pomoc\u0105 manifest\u00f3w. Poniewa\u017c ZooKeeper jest cz\u0119\u015bci\u0105 Kafka, od tego warto zacz\u0105\u0107 zapoznawanie si\u0119 z tym, jakie koncepcje Kubernetes s\u0105 tutaj zastosowane. Zrozumienie tego pozwoli ci wykorzysta\u0107 te same koncepcje z klastrem Kafka.<\/p>\n<ul>\n<li><i>Pod<\/i>: pod - to minimalna jednostka wdra\u017calna w Kubernetes. Pod zawiera twoje obci\u0105\u017cenie robocze, a sam pod odpowiada procesowi w twoim klastrze. W podzie znajduje si\u0119 jeden lub wi\u0119cej kontener\u00f3w. Ka\u017cdy serwer ZooKeeper w zespole i ka\u017cdy broker w klastrze Kafka b\u0119d\u0105 dzia\u0142a\u0107 w osobnym podzie.<\/li>\n<li><i>StatefulSet<\/i>: StatefulSet - to obiekt Kubernetes, kt\u00f3ry pracuje z wieloma obci\u0105\u017ceniami roboczymi wymagaj\u0105cymi zachowania stanu, a takie obci\u0105\u017cenia wymagaj\u0105 koordynacji. StatefulSet zapewnia gwarancje dotycz\u0105ce uporz\u0105dkowania pod\u00f3w i ich unikalno\u015bci.<\/li>\n<li><i>Us\u0142ugi bezg\u0142owe<\/i>: Us\u0142ugi pozwalaj\u0105 od\u0142\u0105cza\u0107 pody od klient\u00f3w za pomoc\u0105 logicznej nazwy. Kubernetes w tym przypadku odpowiada za r\u00f3wnowa\u017cenie obci\u0105\u017cenia. Jednak przy operacjach z obci\u0105\u017ceniami roboczymi zachowuj\u0105cymi stan, jak w przypadku ZooKeepera i Kafka, klienci musz\u0105 wymienia\u0107 informacje z konkretnym instancj\u0105. Tutaj przydaj\u0105 si\u0119 us\u0142ugi bezg\u0142owe: w takim przypadku klient wci\u0105\u017c ma logiczn\u0105 nazw\u0119, ale nie mo\u017cna si\u0119 bezpo\u015brednio zwraca\u0107 do podu. <\/li>\n<li><i>Wolumen do d\u0142ugoterminowego przechowywania<\/i>: takie wolumeny s\u0105 potrzebne do konfiguracji nielokalnego blokowego d\u0142ugoterminowego przechowywania, o kt\u00f3rym by\u0142a mowa wcze\u015bniej.<\/li>\n<\/ul>\n<p>\nNa <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Yolean\/kubernetes-kafka\">Yolean<\/a><\/noindex> zapewnia kompleksowy zestaw manifest\u00f3w, kt\u00f3re u\u0142atwiaj\u0105 rozpocz\u0119cie pracy z Kafka na Kubernetes.<\/p>\n<p><i><b>Diagramy Helm<\/b><\/i><\/p>\n<p>Helm to mened\u017cer pakiet\u00f3w dla Kubernetes, kt\u00f3ry mo\u017cna por\u00f3wna\u0107 do mened\u017cer\u00f3w pakiet\u00f3w dla system\u00f3w operacyjnych, takich jak yum, apt, Homebrew czy Chocolatey. Dzi\u0119ki niemu wygodnie zainstalujesz wcze\u015bniej okre\u015blone pakiety oprogramowania opisane w wykresach Helm. Dobrze dobrany wykres Helm u\u0142atwia z\u0142o\u017cone zadanie: jak prawid\u0142owo skonfigurowa\u0107 wszystkie parametry do u\u017cywania Kafka na Kubernetes. Istnieje kilka wykres\u00f3w Kafka: oficjalny znajduje si\u0119 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/helm\/charts\/tree\/master\/incubator\/kafka\">w stanie inkubacji<\/a><\/noindex>, jest jeden od <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/confluentinc\/cp-helm-charts\/tree\/master\/charts\/cp-kafka\">Confluent<\/a><\/noindex>, jeszcze jeden \u2013 od <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bitnami\/charts\/tree\/master\/bitnami\/kafka\">Bitnami<\/a><\/noindex>.<\/p>\n<p><i><b>Operatory<\/b><\/i><\/p>\n<p>Poniewa\u017c Helm ma pewne wady, rosn\u0105c\u0105 popularno\u015b\u0107 zyskuje inne narz\u0119dzie: operatory Kubernetes. Operator nie tylko pakuje oprogramowanie dla Kubernetes, ale tak\u017ce umo\u017cliwia jego wdra\u017canie oraz zarz\u0105dzanie nim.<\/p>\n<p>Na li\u015bcie <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/operator-framework\/awesome-operators\">niesamowitych operator\u00f3w<\/a><\/noindex> wspomniane s\u0105 dwa operatory dla Kafka. Jeden z nich to <noindex><a rel=\"nofollow\" href=\"https:\/\/strimzi.io\/\">Strimzi<\/a><\/noindex>. Przy pomocy Strimzi nie ma trudno\u015bci w uruchomieniu klastra Kafka w zaledwie kilka minut. Prawie \u017cadnej konfiguracji nie trzeba wprowadza\u0107, ponadto sam operator oferuje kilka przyjemnych funkcji, takich jak szyfrowanie TLS typu \"punkt-punkt\" wewn\u0105trz klastra. Confluent r\u00f3wnie\u017c oferuje <noindex><a rel=\"nofollow\" href=\"https:\/\/www.confluent.io\/confluent-operator\/\">w\u0142asnego operatora<\/a><\/noindex>.<\/p>\n<p><b>Wydajno\u015b\u0107<\/b><\/p>\n<p>Bardzo wa\u017cne jest testowanie wydajno\u015bci, zaopatruj\u0105c posiadany egzemplarz Kafka w punkty kontrolne. Takie testy pomog\u0105 ci zidentyfikowa\u0107 potencjalne w\u0105skie gard\u0142a, zanim wyst\u0105pi\u0105 problemy. Na szcz\u0119\u015bcie Kafka ju\u017c zapewnia dwa narz\u0119dzia do testowania wydajno\u015bci: <code>kafka-producer-perf-test.sh<\/code> i <code>kafka-consumer-perf-test.sh<\/code>. Korzystaj z nich aktywnie. Dla informacji mo\u017cesz por\u00f3wna\u0107 wyniki opisane w <noindex><a rel=\"nofollow\" href=\"https:\/\/engineering.linkedin.com\/kafka\/benchmarking-apache-kafka-2-million-writes-second-three-cheap-machines\">tym po\u015bcie<\/a><\/noindex> Jay'a Krepsa, lub kierowa\u0107 si\u0119 <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/@stephane.maarek\/an-honest-review-of-aws-managed-apache-kafka-amazon-msk-94b1ff9459d8\">t\u0105 recenzj\u0105<\/a><\/noindex> Amazon MSK od St\u00e9phane Maarek.<\/p>\n<h4>Operacje<\/h4>\n<p>\n<i><b>Monitoring<\/b><\/i><\/p>\n<p>Przejrzysto\u015b\u0107 w systemie jest bardzo wa\u017cna \u2013 w przeciwnym razie nie zrozumiesz, co si\u0119 w nim dzieje. Dzi\u015b istnieje solidny zestaw narz\u0119dzi zapewniaj\u0105cych monitorowanie oparte na metrykach w stylu cloud native. Dwa popularne narz\u0119dzia do tego celu to \u2013 Prometheus i Grafana. Prometheus mo\u017ce zbiera\u0107 metryki ze wszystkich proces\u00f3w Java (Kafka, Zookeeper, Kafka Connect) z pomoc\u0105 eksportera JMX \u2013 w najprostszy spos\u00f3b. Je\u015bli do\u0142o\u017cysz metryki cAdvisor, b\u0119dziesz mie\u0107 pe\u0142niejszy obraz tego, jak w Kubernetes wykorzystywane s\u0105 zasoby.<\/p>\n<p>Strimzi ma bardzo przydatny przyk\u0142ad dashboardu Grafana dla Kafka. Wizualizuje kluczowe metryki, takie jak niedoreplikowane sekcje lub te, kt\u00f3re s\u0105 offline. Wszystko jest tam bardzo przejrzyste. Te metryki s\u0105 uzupe\u0142nione informacjami o wykorzystaniu zasob\u00f3w i wydajno\u015bci, a tak\u017ce wska\u017anikami stabilno\u015bci. W ten spos\u00f3b otrzymujesz podstawowy monitoring klastra Kafka zupe\u0142nie za darmo!<\/p>\n<p><img decoding=\"async\" alt=\"Czy Kafka na Kubernetes to dobry pomys\u0142?\" src=\"\/wp-content\/uploads\/2019\/08\/65ab468f7ebc0f376796990e41c62a48.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u0179r\u00f3d\u0142o: <noindex><a rel=\"nofollow\" href=\"https:\/\/strimzi.io\/docs\/master\/#kafka_dashboard\">strimzi.io\/docs\/master\/#kafka_dashboard<\/a><\/noindex><\/p>\n<p>Wszystko to warto by by\u0142o uzupe\u0142ni\u0107 monitoringiem klient\u00f3w (metryki dotycz\u0105ce konsument\u00f3w i producent\u00f3w), a tak\u017ce monitoringiem op\u00f3\u017anie\u0144 (do tego s\u0142u\u017cy <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/linkedin\/Burrow\">Burrow<\/a><\/noindex>) i kompleksowym monitoringiem \u2013 w tym celu u\u017cyj <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/linkedin\/kafka-monitor\">Kafka Monitor<\/a><\/noindex>.<\/p>\n<p><i><b>Rejestrowanie<\/b><\/i><\/p>\n<p>Logowanie to kolejna kluczowa czynno\u015b\u0107. Upewnij si\u0119, \u017ce wszystkie kontenery w twojej instalacji Kafka s\u0105 logowane do <code>stdout<\/code> i <code>stderr<\/code>, a tak\u017ce zadbaj o to, aby tw\u00f3j klaster Kubernetes agregowa\u0142 wszystkie logi w centralnej infrastrukturze logowania, na przyk\u0142ad w <noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/collection\/all\/product\/elasticsearch-kibana-logstash-i-poiskovye-sistemy-novogo-pokoleniya\">Elasticsearch<\/a><\/noindex>.<\/p>\n<p><i><b>Sprawdzenie dzia\u0142ania<\/b><\/i><\/p>\n<p>Kubernetes u\u017cywa sond \u201e\u017cywotno\u015bci\u201d (liveness) i gotowo\u015bci (readiness), aby sprawdzi\u0107, czy twoje pody dzia\u0142aj\u0105 prawid\u0142owo. Je\u015bli test \u017cywotno\u015bci nie powiedzie si\u0119, Kubernetes zatrzyma ten kontener, a nast\u0119pnie automatycznie go ponownie uruchomi, je\u015bli polityka ponownego uruchamiania jest ustawiona odpowiednio. Je\u015bli test gotowo\u015bci nie powiedzie si\u0119, Kubernetes izoluje ten pod od obs\u0142ugi \u017c\u0105da\u0144. Dzi\u0119ki temu w takich przypadkach nie jest ju\u017c potrzebna \u017cadna interwencja r\u0119czna, co jest du\u017cym plusem. <\/p>\n<p><i><b>Wydawanie aktualizacji<\/b><\/i><\/p>\n<p>StatefulSet obs\u0142uguj\u0105 automatyczne aktualizacje: przy wyborze strategii RollingUpdate ka\u017cdy pod Kafka b\u0119dzie aktualizowany jeden po drugim. Dzi\u0119ki temu mo\u017cna zredukowa\u0107 czas przestoj\u00f3w do zera.<\/p>\n<p><i><b>Skalowanie<\/b><\/i><\/p>\n<p>Skalowanie klastra Kafka to nie\u0142atwe zadanie. Jednak w Kubernetes bardzo \u0142atwo jest skalowa\u0107 pody do okre\u015blonej liczby replik, co oznacza, \u017ce mo\u017cesz deklaratywnie okre\u015bli\u0107 tyle broker\u00f3w Kafka, ile chcesz. Najtrudniejsze w tej kwestii jest przepisanie sekcji po skalowaniu w g\u00f3r\u0119 lub przed skalowaniem w d\u00f3\u0142. Ponownie, w tej kwestii pomo\u017ce ci Kubernetes.<\/p>\n<p><i><b>Administracja<\/b><\/i><\/p>\n<p>Zarz\u0105dzanie swoim klastrem Kafka, w szczeg\u00f3lno\u015bci tworzenie temat\u00f3w oraz przypisywanie sektor\u00f3w, mo\u017cna realizowa\u0107 za pomoc\u0105 dost\u0119pnych skrypt\u00f3w pow\u0142oki, otwieraj\u0105c interfejs wiersza polece\u0144 w swoich podach. Jednak\u017ce, takie rozwi\u0105zanie nie jest zbyt estetyczne. Strimzi wspiera zarz\u0105dzanie tematami za pomoc\u0105 innego operatora. Tutaj jest te\u017c co rozwija\u0107.<\/p>\n<p><i><b>Kopia zapasowa i przywracanie<\/b><\/i><\/p>\n<p>Teraz dost\u0119pno\u015b\u0107 Kafka b\u0119dzie zale\u017ca\u0142a r\u00f3wnie\u017c od dost\u0119pno\u015bci Kubernetes. Je\u015bli Tw\u00f3j klaster Kubernetes ulegnie awarii, to w najgorszym przypadku zawiedzie tak\u017ce klaster Kafka. Zgodnie z prawem Murphy'ego, najprawdopodobniej to si\u0119 zdarzy i stracisz dane. Aby zmniejszy\u0107 ryzyko takiego sytuacji, dobrze przemy\u015bl koncepcj\u0119 kopii zapasowej. Mo\u017cna skorzysta\u0107 z MirrorMakera, inn\u0105 opcj\u0105 jest u\u017cycie S3, jak opisano w tym <noindex><a rel=\"nofollow\" href=\"https:\/\/jobs.zalando.com\/tech\/blog\/backing-up-kafka-zookeeper\/\">po\u015bcie<\/a><\/noindex> od Zalando.<\/p>\n<h4>Podsumowanie<\/h4>\n<p>\nPracuj\u0105c z ma\u0142ymi lub \u015brednimi klastrami Kafka, zdecydowanie warto korzysta\u0107 z Kubernetes, poniewa\u017c zapewnia to dodatkow\u0105 elastyczno\u015b\u0107 i u\u0142atwia prac\u0119 z operatorami. Je\u015bli masz do czynienia z powa\u017cnymi wymaganiami niefunkcjonalnymi, dotycz\u0105cymi op\u00f3\u017anienia i\/lub przepustowo\u015bci, by\u0107 mo\u017ce lepiej rozwa\u017cy\u0107 inne opcje wdro\u017cenia.<br \/>\n<br \/>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/piter\/blog\/462257\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u043c \u0432\u0430\u0441, \u0425\u0430\u0431\u0440! \u0412 \u0441\u0432\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043c\u044b \u043f\u0435\u0440\u0432\u044b\u043c\u0438 \u0432\u044b\u0432\u0435\u043b\u0438 \u043d\u0430 \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0439 \u0440\u044b\u043d\u043e\u043a \u0442\u0435\u043c\u0443 Kafka \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0437\u0430 \u0435\u0435 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435\u043c. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u043d\u0430\u043c \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0439 \u0442\u0435\u043c\u0430 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f Kafka \u0438 Kubernetes. \u041e\u0431\u0437\u043e\u0440\u043d\u0430\u044f (\u0438 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u0430\u044f) \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0430 \u044d\u0442\u0443 \u0442\u0435\u043c\u0443 \u0432\u044b\u0445\u043e\u0434\u0438\u043b\u0430 \u0432 \u0431\u043b\u043e\u0433\u0435 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Confluent \u0435\u0449\u0435 \u0432 \u043e\u043a\u0442\u044f\u0431\u0440\u0435 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e \u0433\u043e\u0434\u0430 \u043f\u043e\u0434 \u0430\u0432\u0442\u043e\u0440\u0441\u0442\u0432\u043e\u043c \u0413\u0432\u0435\u043d \u0428\u0430\u043f\u0438\u0440\u044b. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0436\u0435 \u043c\u044b [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":27586,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-36822","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u043c \u0432\u0430\u0441, \u0425\u0430\u0431\u0440! \u0412 \u0441\u0432\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043c\u044b \u043f\u0435\u0440\u0432\u044b\u043c\u0438 \u0432\u044b\u0432\u0435\u043b\u0438 \u043d\u0430 \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0439 \u0440\u044b\u043d\u043e\u043a \u0442\u0435\u043c\u0443\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/kafka-na-kubernetes-eto-horosho\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Kafka \u043d\u0430 Kubernetes \u2014 \u044d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u043e? | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u043c \u0432\u0430\u0441, \u0425\u0430\u0431\u0440! \u0412 \u0441\u0432\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043c\u044b \u043f\u0435\u0440\u0432\u044b\u043c\u0438 \u0432\u044b\u0432\u0435\u043b\u0438 \u043d\u0430 \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0439 \u0440\u044b\u043d\u043e\u043a \u0442\u0435\u043c\u0443\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/kafka-na-kubernetes-eto-horosho\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:14:01+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:14:01+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Kafka na Kubernetes \u2014 czy to dobre rozwi\u0105zanie? | ProHoster","description":"Witamy Ci\u0119, Habrze! Kiedy\u015b jako pierwsi wprowadzili\u015bmy na rosyjski rynek temat","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/kafka-na-kubernetes-eto-horosho","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Kafka \u043d\u0430 Kubernetes \u2014 \u044d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u043e? | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u043c \u0432\u0430\u0441, \u0425\u0430\u0431\u0440! \u0412 \u0441\u0432\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043c\u044b \u043f\u0435\u0440\u0432\u044b\u043c\u0438 \u0432\u044b\u0432\u0435\u043b\u0438 \u043d\u0430 \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0439 \u0440\u044b\u043d\u043e\u043a \u0442\u0435\u043c\u0443","og:url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/kafka-na-kubernetes-eto-horosho","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:14:01+00:00","article:modified_time":"2019-10-31T19:14:01+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"36822","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-22 04:58:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:38:24","updated":"2026-01-22 04:58:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/36822","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=36822"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/36822\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/27586"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=36822"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=36822"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=36822"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}