{"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\/sk\/blog\/administrirovanie\/kafka-na-kubernetes-eto-horosho","title":{"rendered":"Kafka na Kubernetes \u2014 je to dobr\u00e9?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Vitajte, Habr!<\/p>\n<p>Kedyysi sme boli prv\u00fdmi, ktor\u00ed predstavili t\u00e9mu <noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/collection\/all\/product\/apache-kafka-potokovaya-obrabotka-i-analiz-dannyh\">Kafka<\/a><\/noindex> a na\u010falej sa <noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/product_by_id\/132649774\">zameriavame<\/a><\/noindex> na jej rozvoj. Konkr\u00e9tne sa n\u00e1m zdala zauj\u00edmav\u00e1 t\u00e9ma interakcie medzi Kafka a <noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/product_by_id\/125705747\">Kubernetes<\/a><\/noindex>. Preh\u013eadn\u00e1 (a pomerne opatrn\u00e1) <noindex><a rel=\"nofollow\" href=\"https:\/\/www.confluent.io\/blog\/apache-kafka-kubernetes-could-you-should-you\">\u010dl\u00e1nok<\/a><\/noindex> na t\u00fato t\u00e9mu bola zverejnen\u00e1 na blogu spolo\u010dnosti Confluent e\u0161te v okt\u00f3bri minul\u00e9ho roka autorky Gwen Shapiro. Dnes by sme v\u00e1m chceli upriami\u0165 pozornos\u0165 na nov\u0161\u00ed, apr\u00edlov\u00fd \u010dl\u00e1nok Johann Gyger, ktor\u00fd, hoci sa nevyhol ot\u00e1znikovi v n\u00e1zve, posudzuje t\u00e9mu z konkr\u00e9tnej\u0161ieho h\u013eadiska, pri\u010dom text sprev\u00e1dza zauj\u00edmav\u00fdmi odkazmi. Ospravedl\u0148te n\u00e1m pros\u00edm n\u00e1\u0161 vo\u013en\u00fd preklad \u201echaos monkey\u201c, ak m\u00f4\u017eete!<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/piter\/blog\/462257\/\"><img decoding=\"async\" alt=\"Kafka na Kubernetes \u2014 je to dobr\u00e9?\" 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>\u00davod<\/h4>\n<p>\nKubernetes je ur\u010den\u00fd na pr\u00e1cu s nenasledovan\u00fdmi z\u00e1\u0165a\u017eami. Zvy\u010dajne s\u00fa tak\u00e9 pracovn\u00e9 za\u0165a\u017eenia reprezentovan\u00e9 v podobe microservices architekt\u00fary, s\u00fa \u013eahk\u00e9, dobre sa \u0161k\u00e1luj\u00fa horizont\u00e1lne, dodr\u017eiavaj\u00fa princ\u00edpy 12 faktorov\u00fdch aplik\u00e1ci\u00ed, umo\u017e\u0148uj\u00fa pracova\u0165 s automatick\u00fdmi vyp\u00edna\u010dmi (circuit breaker) a chaos opicami (chaos monkeys).<\/p>\n<p>Kafka, umiestnen\u00e1 na druhej strane, v podstate vystupuje ako distribuovan\u00e1 datab\u00e1za. T\u00fdm p\u00e1dom pri pr\u00e1ci mus\u00edte bra\u0165 do \u00favahy stav, a ten je ove\u013ea \u0165a\u017e\u0161\u00ed ako microservice. Kubernetes podporuje stavy s trval\u00fdm ulo\u017een\u00edm, ale, ako nazna\u010duje Kelsey Hightower vo svojich dvoch tweetoch, s nimi by sa malo zaobch\u00e1dza\u0165 opatrne:<\/p>\n<blockquote><p>Niektor\u00fdm sa zd\u00e1, \u017ee ak nasad\u00edte Kubernetes na stavov\u00fa z\u00e1\u0165a\u017e, stane sa plne spravovanou datab\u00e1zou, schopnou konkurova\u0165 RDS. To nie je pravda. Mo\u017eno, ak dos\u0165 pracujete, pripoj\u00edte \u010fal\u0161ie komponenty a zapoj\u00edte t\u00edm SRE in\u017einierov, m\u00f4\u017eete usporiada\u0165 RDS na vrchu Kubernetes.<\/p><\/blockquote>\n<blockquote><p>V\u017edy v\u0161etk\u00fdm odpor\u00fa\u010dam, aby zachovali mimoriadnu opatrnos\u0165 pri sp\u00fa\u0161\u0165an\u00ed stavov\u00fdch z\u00e1\u0165a\u017e\u00ed na Kubernetes. V\u00e4\u010d\u0161ina t\u00fdch, ktor\u00ed sa zauj\u00edmaj\u00fa, \u201em\u00f4\u017eem sp\u00fa\u0161\u0165a\u0165 stavov\u00e9 z\u00e1\u0165a\u017ee na Kubernetes\u201c, nem\u00e1 dostato\u010dn\u00e9 sk\u00fasenosti s Kubernetes, a \u010dasto ani so samotnou z\u00e1\u0165a\u017eou, o ktorej sa p\u00fdtaj\u00fa.<\/p><\/blockquote>\n<p> Tak\u017ee, m\u00e1 sa Kafka sp\u00fa\u0161\u0165a\u0165 na Kubernetes? Protiot\u00e1zka: bude Kafka lep\u0161ie fungova\u0165 bez Kubernetes? Preto chcem v tomto \u010dl\u00e1nku zd\u00f4razni\u0165, ako sa Kafka a Kubernetes dop\u013a\u0148aj\u00fa a ak\u00e9 \u00faskalia sa m\u00f4\u017eu objavi\u0165 pri ich kombin\u00e1cii.<\/p>\n<h4>\u010cas vykon\u00e1vania<\/h4>\n<p>\nPo\u010fme sa porozpr\u00e1va\u0165 o z\u00e1kladnej veci \u2014 runtime prostred\u00ed ako takom.<\/p>\n<p><i><b>Proces<\/b><\/i><\/p>\n<p>Brokery Kafka s\u00fa efekt\u00edvne pri pr\u00e1ci s CPU. TLS m\u00f4\u017ee prinies\u0165 niektor\u00e9 n\u00e1klady. Klienti Kafka m\u00f4\u017eu za\u0165a\u017eova\u0165 CPU viac, ak pou\u017e\u00edvaj\u00fa \u0161ifrovanie, av\u0161ak to neovplyv\u0148uje brokerov.<\/p>\n<p><i><b>Pam\u00e4\u0165<\/b><\/i><\/p>\n<p>Brokery Kafka spotrebov\u00e1vaj\u00fa pam\u00e4\u0165. Ve\u013ekos\u0165 JVM hromady sa zvy\u010dajne obmedzuje na 4\u20135 GB, ale budete tie\u017e potrebova\u0165 ve\u013ea syst\u00e9movej pam\u00e4te, preto\u017ee Kafka ve\u013emi akt\u00edvne vyu\u017e\u00edva str\u00e1nkov\u00fd cache. V Kubernetes zodpovedne nastavujte limity kontajnera na zdroje a po\u017eiadavky.<\/p>\n<p><i><b>\u00dalo\u017eisko d\u00e1t<\/b><\/i><\/p>\n<p>\u00dalo\u017eisko d\u00e1t v kontajneroch je efem\u00e9rne \u2013 d\u00e1ta sa str\u00e1caj\u00fa pri re\u0161tarte. Pre \u00fadaje Kafka m\u00f4\u017eete pou\u017ei\u0165 zv\u00e4zok, <code>emptyDir<\/code>, a efekt bude rovnak\u00fd: d\u00e1ta v\u00e1\u0161ho brokera sa stratia po ukon\u010den\u00ed. Va\u0161e spr\u00e1vy m\u00f4\u017eu by\u0165 st\u00e1le uchovan\u00e9 na in\u00fdch brokeroch ako repliky. Preto mus\u00ed po re\u0161tarte nefunk\u010dn\u00fd broker najprv replikova\u0165 v\u0161etky d\u00e1ta, na \u010do m\u00f4\u017ee by\u0165 potrebn\u00fd ist\u00fd \u010das. <\/p>\n<p>Preto je potrebn\u00e9 pou\u017e\u00edva\u0165 trval\u00e9 \u00falo\u017eisko d\u00e1t. Nech ide o remote trval\u00e9 \u00falo\u017eisko s XFS filesystem alebo, presnej\u0161ie, ext4. Nepou\u017e\u00edvajte NFS. Upozornil som v\u00e1s. NFS verzi\u00ed v3 alebo v4 nebude fungova\u0165. Skr\u00e1tka, broker Kafka skon\u010d\u00ed, ak nebude schopn\u00fd odstr\u00e1ni\u0165 adres\u00e1r s d\u00e1tami z d\u00f4vodu probl\u00e9mu s \"hl\u00fapymi premenovaniami\", ktor\u00fd je aktu\u00e1lny v NFS. Ak som v\u00e1s doteraz nepresved\u010dil, ve\u013emi pozorne <noindex><a rel=\"nofollow\" href=\"https:\/\/sbg.technology\/2018\/07\/10\/kafka-nfs\/\">pre\u010d\u00edtajte si tento \u010dl\u00e1nok<\/a><\/noindex>. \u00dalo\u017eisko d\u00e1t by malo by\u0165 remote, aby Kubernetes mohol flexibilnej\u0161ie vybra\u0165 nov\u00fd uzol po re\u0161tarte alebo relok\u00e1cii.<\/p>\n<p><i><b>Sie\u0165<\/b><\/i><\/p>\n<p>Ako pri v\u00e4\u010d\u0161ine distribuovan\u00fdch syst\u00e9mov, v\u00fdkon Kafka ve\u013emi z\u00e1vis\u00ed od toho, aby boli latencie v sieti minimalizovan\u00e9 a \u0161\u00edrka p\u00e1sma maxim\u00e1lna. Nepok\u00fa\u0161ajte sa umiestni\u0165 v\u0161etk\u00fdch brokerov na rovnak\u00fd uzol, preto\u017ee by to zn\u00ed\u017eilo dostupnos\u0165. Ak zlyh\u00e1 uzol Kubernetes, zlyh\u00e1 aj cel\u00fd klaster Kafka. Taktie\u017e nerozmiest\u0148ujte klaster Kafka po cel\u00fdch d\u00e1tov\u00fdch centr\u00e1ch. To ist\u00e9 plat\u00ed pre klaster Kubernetes. Dobr\u00fd kompromis je zvoli\u0165 r\u00f4zne z\u00f3ny dostupnosti.<\/p>\n<h4>Konfigur\u00e1cia<\/h4>\n<p>\n<i><b>Be\u017en\u00e9 manifesty<\/b><\/i><\/p>\n<p>Na str\u00e1nke Kubernetes je <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/tutorials\/stateful-application\/zookeeper\/\">ve\u013emi dobr\u00fd sprievodca<\/a><\/noindex> o tom, ako nastavi\u0165 ZooKeeper pomocou manifestov. Ke\u010f\u017ee ZooKeeper je s\u00fa\u010das\u0165ou Kafka, je to ide\u00e1lne miesto na za\u010datie spozn\u00e1vania konceptov Kubernetes, ktor\u00e9 s\u00fa tu pou\u017eite\u013en\u00e9. Po pochopen\u00ed toho, budete m\u00f4c\u0165 aplikova\u0165 tie ist\u00e9 koncepty aj na klaster Kafka.<\/p>\n<ul>\n<li><i>Pod<\/i>: pod \u2013 to je minim\u00e1lna nasadite\u013en\u00e1 jednotka v Kubernetes. Pod obsahuje va\u0161u pracovn\u00fa z\u00e1\u0165a\u017e a samotn\u00fd pod zodpoved\u00e1 procesu vo va\u0161om klastri. Pod obsahuje jeden alebo viac kontajnerov. Ka\u017ed\u00fd server ZooKeeper v s\u00fabore a ka\u017ed\u00fd broker v klastri Kafka bud\u00fa pracova\u0165 v samostatnom pode.<\/li>\n<li><i>StatefulSet<\/i>: StatefulSet \u2013 to je objekt Kubernetes, ktor\u00fd pracuje s viacer\u00fdmi pracovn\u00fdmi z\u00e1\u0165a\u017eami, ktor\u00e9 udr\u017euj\u00fa stav a vy\u017eaduj\u00fa koordin\u00e1ciu. StatefulSet poskytuj\u00fa z\u00e1ruky t\u00fdkaj\u00face sa usporiadania podov a ich jedine\u010dnosti.<\/li>\n<li><i>Headless slu\u017eby<\/i>: Slu\u017eby umo\u017e\u0148uj\u00fa oddeli\u0165 pod od klientov pomocou logick\u00e9ho n\u00e1zvu. Kubernetes sa v tomto pr\u00edpade postar\u00e1 o vyv\u00e1\u017eenie z\u00e1\u0165a\u017ee. Av\u0161ak pri oper\u00e1ci\u00e1ch s pracovn\u00fdmi z\u00e1\u0165a\u017eami, ktor\u00e9 udr\u017euj\u00fa stav, ako je to pri ZooKeeper a Kafka, musia klienti komunikova\u0165 s konkr\u00e9tnym in\u0161tancom. Tu prich\u00e1dzaj\u00fa na pomoc headless slu\u017eby: v tomto pr\u00edpade bude ma\u0165 klient aj na\u010falej logick\u00fd n\u00e1zov, ale nebude potrebn\u00e9 sa priamo odkazova\u0165 na pod. <\/li>\n<li><i>Z\u00e1sobn\u00edk na trval\u00e9 ukladanie<\/i>: tak\u00e9to z\u00e1sobn\u00edky s\u00fa potrebn\u00e9 na konfigur\u00e1ciu nelok\u00e1lneho blokov\u00e9ho trval\u00e9ho \u00falo\u017eiska, ktor\u00e9 bolo spom\u00ednan\u00e9 vy\u0161\u0161ie.<\/li>\n<\/ul>\n<p>\nNa <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Yolean\/kubernetes-kafka\">Yolean<\/a><\/noindex> poskytuje komplexn\u00fa sadu manifestov, pomocou ktor\u00fdch je jednoduch\u00e9 za\u010da\u0165 pracova\u0165 s Kafka na Kubernetes.<\/p>\n<p><i><b>Helm diagramy<\/b><\/i><\/p>\n<p>Helm je spr\u00e1vca bal\u00edkov pre Kubernetes, ktor\u00fd m\u00f4\u017eeme porovna\u0165 so spr\u00e1vcom bal\u00edkov pre opera\u010dn\u00e9 syst\u00e9my, ako s\u00fa yum, apt, Homebrew alebo Chocolatey. S jeho pomocou je pohodln\u00e9 in\u0161talova\u0165 vopred definovan\u00e9 softv\u00e9rov\u00e9 bal\u00edky, ktor\u00e9 s\u00fa pop\u00edsan\u00e9 v diagramoch Helm. Dobre navrhnut\u00fd diagram Helm zjednodu\u0161uje zlo\u017eit\u00fa \u00falohu: ako spr\u00e1vne nakonfigurova\u0165 v\u0161etky parametre na pou\u017e\u00edvanie Kafka na Kubernetes. Existuje nieko\u013eko diagramov Kafka: ofici\u00e1lny sa nach\u00e1dza <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/helm\/charts\/tree\/master\/incubator\/kafka\">v inkuba\u010dnom stave<\/a><\/noindex>, existuje jeden od <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/confluentinc\/cp-helm-charts\/tree\/master\/charts\/cp-kafka\">Confluent<\/a><\/noindex>, \u010fal\u0161\u00ed \u2013 od <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bitnami\/charts\/tree\/master\/bitnami\/kafka\">Bitnami<\/a><\/noindex>.<\/p>\n<p><i><b>Oper\u00e1tory<\/b><\/i><\/p>\n<p>Ke\u010f\u017ee Helm m\u00e1 ur\u010dit\u00e9 nev\u00fdhody, z\u00edskava \u010doraz v\u00e4\u010d\u0161iu popularitu \u010fal\u0161\u00ed n\u00e1stroj: oper\u00e1tori Kubernetes. Oper\u00e1tor nie len obaluje softv\u00e9r pre Kubernetes, ale tie\u017e v\u00e1m umo\u017e\u0148uje nasadi\u0165 tento softv\u00e9r a spravova\u0165 ho.<\/p>\n<p>V zozname <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/operator-framework\/awesome-operators\">\u00fa\u017easn\u00fdch oper\u00e1torov<\/a><\/noindex> sa spom\u00ednaj\u00fa dvaja oper\u00e1tori pre Kafka. Jeden z nich je <noindex><a rel=\"nofollow\" href=\"https:\/\/strimzi.io\/\">Strimzi<\/a><\/noindex>. S pomocou Strimzi nie je \u017eiadny probl\u00e9m zriadi\u0165 klaster Kafka za p\u00e1r min\u00fat. Prakticky nie je potrebn\u00e9 robi\u0165 \u017eiadnu konfigur\u00e1ciu, navy\u0161e samotn\u00fd oper\u00e1tor poskytuje niektor\u00e9 pr\u00edjemn\u00e9 funkcie, ako napr\u00edklad \u0161ifrovanie TLS typu \u201epoint-to-point\u201c v r\u00e1mci klastru. Confluent tie\u017e pon\u00faka <noindex><a rel=\"nofollow\" href=\"https:\/\/www.confluent.io\/confluent-operator\/\">vlastn\u00e9ho oper\u00e1tora<\/a><\/noindex>.<\/p>\n<p><b>V\u00fdkon<\/b><\/p>\n<p>Je ve\u013emi d\u00f4le\u017eit\u00e9 testova\u0165 v\u00fdkon dod\u00e1van\u00edm kontroln\u00fdch bodov v\u00e1\u0161mu nain\u0161talovan\u00e9mu \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044fru Kafka. Tieto testy v\u00e1m pom\u00f4\u017eu odhali\u0165 potenci\u00e1lne \u00fazke miesta, k\u00fdm nenastan\u00fa probl\u00e9my. Na\u0161\u0165astie, v Kafka s\u00fa u\u017e k dispoz\u00edcii dva n\u00e1stroje na testovanie v\u00fdkonu: <code>kafka-producer-perf-test.sh<\/code> a <code>kafka-consumer-perf-test.sh<\/code>. Akt\u00edvne ich vyu\u017e\u00edvajte. Na referenciu sa m\u00f4\u017eete porovna\u0165 s v\u00fdsledkami op\u00edsan\u00fdmi v <noindex><a rel=\"nofollow\" href=\"https:\/\/engineering.linkedin.com\/kafka\/benchmarking-apache-kafka-2-million-writes-second-three-cheap-machines\">tomto pr\u00edspevku<\/a><\/noindex> D\u017eeja Krepca, alebo sa orientova\u0165 na <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/@stephane.maarek\/an-honest-review-of-aws-managed-apache-kafka-amazon-msk-94b1ff9459d8\">t\u00fato recenziu<\/a><\/noindex> Amazon MSK od St\u00e9phane Maarek.<\/p>\n<h4>Oper\u00e1cie<\/h4>\n<p>\n<i><b>Monitorovanie<\/b><\/i><\/p>\n<p>Transparentnos\u0165 v syst\u00e9me je ve\u013emi d\u00f4le\u017eit\u00e1 \u2013 inak nebudete ch\u00e1pa\u0165, \u010do sa v \u0148om deje. Dnes existuje sol\u00eddny s\u00fabor n\u00e1strojov, ktor\u00e9 poskytuj\u00fa monitoring na z\u00e1klade metriky v \u0161t\u00fdle cloud-native. Dva popul\u00e1rne n\u00e1stroje pre tento \u00fa\u010del s\u00fa Prometheus a Grafana. Prometheus m\u00f4\u017ee zhroma\u017e\u010fova\u0165 metriky zo v\u0161etk\u00fdch procesov Java (Kafka, Zookeeper, Kafka Connect) pomocou JMX export\u00e9ra \u2013 t\u00fdm najjednoduch\u0161\u00edm sp\u00f4sobom. Ak prid\u00e1te metriky cAdvisor, m\u00f4\u017eete ma\u0165 lep\u0161iu predstavu o tom, ako sa v Kubernetes vyu\u017e\u00edvaj\u00fa zdroje.<\/p>\n<p>Strimzi m\u00e1 ve\u013emi u\u017eito\u010dn\u00fd pr\u00edklad dashboardu Grafana pre Kafka. Vizu\u00e1lne zobrazuje k\u013e\u00fa\u010dov\u00e9 metriky, napr\u00edklad o nedoreplikovan\u00fdch sektoroch alebo t\u00fdch, ktor\u00e9 s\u00fa offline. V\u0161etko je ve\u013emi preh\u013eadn\u00e9. Tieto metriky s\u00fa doplnen\u00e9 inform\u00e1ciami o vyu\u017eit\u00ed zdrojov a v\u00fdkonnosti, ako aj indik\u00e1tormi stability. T\u00fdmto sp\u00f4sobom z\u00edskate z\u00e1kladn\u00fd monitoring klastera Kafka \u00faplne zadarmo!<\/p>\n<p><img decoding=\"async\" alt=\"Kafka na Kubernetes \u2014 je to dobr\u00e9?\" src=\"\/wp-content\/uploads\/2019\/08\/65ab468f7ebc0f376796990e41c62a48.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZdroj: <noindex><a rel=\"nofollow\" href=\"https:\/\/strimzi.io\/docs\/master\/#kafka_dashboard\">strimzi.io\/docs\/master\/#kafka_dashboard<\/a><\/noindex><\/p>\n<p>V\u0161etko by bolo dobre doplni\u0165 monitoringom klientov (metriky pre konzumentov a producentov) a tie\u017e monitoringom oneskorenia (na to existuje <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/linkedin\/Burrow\">Burrow<\/a><\/noindex>) a komplexn\u00fdm monitoringom \u2013 na to pou\u017eite <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/linkedin\/kafka-monitor\">Kafka Monitor<\/a><\/noindex>.<\/p>\n<p><i><b>Logovanie<\/b><\/i><\/p>\n<p>Logovanie je \u010fal\u0161ou ve\u013emi d\u00f4le\u017eitou \u00falohou. Uistite sa, \u017ee v\u0161etky kontajnery vo va\u0161ej in\u0161tal\u00e1cii Kafka s\u00fa logovan\u00e9 v <code>stdout<\/code> a <code>stderr<\/code>, a tie\u017e zabezpe\u010dte, aby v\u00e1\u0161 klaster Kubernetes agregoval v\u0161etky logy do centr\u00e1lnej logovacej infra\u0161trukt\u00fary, napr\u00edklad do <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>Kontrola dostupnosti<\/b><\/i><\/p>\n<p>Kubernetes pou\u017e\u00edva sondy \u201a\u017eivosti\u2018 (liveness) a pripravenosti (readiness), aby skontroloval, \u010di va\u0161e pody funguj\u00fa norm\u00e1lne. Ak kontrola \u017eivosti zlyh\u00e1, Kubernetes zastav\u00ed tento kontajner a potom ho automaticky re\u0161tartuje, ak je politika re\u0161tartu nastaven\u00e1 spr\u00e1vne. Ak kontrola pripravenosti zlyh\u00e1, Kubernetes tento pod izoluje od obsluhy po\u017eiadaviek. Tak\u017ee v tak\u00fdchto pr\u00edpadoch sa u\u017e nevy\u017eaduje manu\u00e1lne z\u00e1sah, \u010do je ve\u013ek\u00e9 plus. <\/p>\n<p><i><b>Nasadzovanie aktualiz\u00e1ci\u00ed<\/b><\/i><\/p>\n<p>StatefulSet podporuj\u00fa automatick\u00e9 aktualiz\u00e1cie: pri v\u00fdbere strat\u00e9gie RollingUpdate sa ka\u017ed\u00fd pod Kafka aktualizuje po jednom. Takto m\u00f4\u017eete minimalizova\u0165 d\u013a\u017eku v\u00fdpadkov na nulu.<\/p>\n<p><i><b>\u0160k\u00e1lovanie<\/b><\/i><\/p>\n<p>\u0160k\u00e1lovanie klastera Kafka je n\u00e1ro\u010dn\u00e1 \u00faloha. Av\u0161ak v Kubernetes je ve\u013emi jednoduch\u00e9 \u0161k\u00e1lova\u0165 pody na ur\u010dit\u00fd po\u010det repl\u00edk, \u010do znamen\u00e1, \u017ee m\u00f4\u017eete deklarat\u00edvne definova\u0165 to\u013eko brokerov Kafka, ko\u013eko chcete. Najn\u00e1ro\u010dnej\u0161ie na tom je prepresovanie sektorov po \u0161k\u00e1lovan\u00ed nahor alebo pred \u0161k\u00e1lovan\u00edm nadol. Znovu, s touto \u00falohou v\u00e1m pom\u00f4\u017ee Kubernetes.<\/p>\n<p><i><b>Administr\u00e1cia<\/b><\/i><\/p>\n<p>\u00dalohy spojen\u00e9 s administr\u00e1ciou v\u00e1\u0161ho klastre Kafka, najm\u00e4 vytv\u00e1ranie t\u00e9m a znovu prira\u010fovanie sektorov, m\u00f4\u017eete vykona\u0165 pomocou existuj\u00facich shell skriptov, otvoren\u00edm rozhrania pr\u00edkazov\u00e9ho riadku vo va\u0161ich podoch. Av\u0161ak, toto rie\u0161enie nie je ve\u013emi elegantn\u00e9. Strimzi podporuje spr\u00e1vu t\u00e9m pomocou in\u00e9ho oper\u00e1tora. Je tu \u010do zlep\u0161ova\u0165.<\/p>\n<p><i><b>Z\u00e1lohovanie a obnova<\/b><\/i><\/p>\n<p>Teraz bude dostupnos\u0165 Kafka z\u00e1visie\u0165 aj od dostupnosti Kubernetes. Ak v\u00e1m padne klaster Kubernetes, v najhor\u0161om pr\u00edpade padne aj klaster Kafka. Pod\u013ea Murphyho z\u00e1kona sa to ur\u010dite stane a strat\u00edte d\u00e1ta. Aby ste zn\u00ed\u017eili riziko tak\u00e9hoto druhu, dobre navrhnite koncept z\u00e1lohovania. M\u00f4\u017eete vyu\u017ei\u0165 MirrorMaker, in\u00e1 mo\u017enos\u0165 je vyu\u017ei\u0165 S3, ako je pop\u00edsan\u00e9 v tomto <noindex><a rel=\"nofollow\" href=\"https:\/\/jobs.zalando.com\/tech\/blog\/backing-up-kafka-zookeeper\/\">pr\u00edspevku<\/a><\/noindex> od Zalando.<\/p>\n<h4>Z\u00e1ver<\/h4>\n<p>\nPri pr\u00e1ci s mal\u00fdmi alebo stredn\u00fdmi klastrami Kafka je ur\u010dite rozumn\u00e9 pou\u017e\u00edva\u0165 Kubernetes, preto\u017ee poskytuje dodato\u010dn\u00fa flexibilitu a zjednodu\u0161uje pr\u00e1cu s oper\u00e1tormi. Ak m\u00e1te pred sebou ve\u013emi v\u00e1\u017ene nefunk\u010dn\u00e9 po\u017eiadavky t\u00fdkaj\u00face sa latencie a\/alebo priepustnosti, mo\u017eno by ste mali zv\u00e1\u017ei\u0165 nejak\u00fa in\u00fa mo\u017enos\u0165 nasadenia.<br \/>\n<br \/>Zdroj: <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.4 - 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\/sk\/blog\/administrirovanie\/kafka-na-kubernetes-eto-horosho\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sk_SK\" \/>\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\/sk\/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 je to dobr\u00e9? | ProHoster","description":"V\u00edtame v\u00e1s, Habr! V svojom \u010dase sme prv\u00ed priniesli na rusk\u00fd trh t\u00e9mu","canonical_url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/kafka-na-kubernetes-eto-horosho","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sk_SK","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\/sk\/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\/sk\/wp-json\/wp\/v2\/posts\/36822","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/comments?post=36822"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/36822\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media\/27586"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media?parent=36822"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/categories?post=36822"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/tags?post=36822"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}