Maayo ba ang Kafka sa Kubernetes?

Kumusta, Habr!

Sa usa ka higayon, kami ang una nga nagpaila sa hilisgutan sa merkado sa Russia Kafka ug magpadayon track alang sa kalamboan niini. Sa partikular, among nakit-an ang hilisgutan sa interaksyon tali sa Kafka ug Kubernetes. Makita (ug mabinantayon kaayo) nga artikulo kini nga hilisgutan gipatik sa Confluent blog balik sa Oktubre sa miaging tuig ubos sa awtor ni Gwen Shapira. Karon gusto namon nga ipunting ang imong atensyon sa usa ka labi ka bag-o nga artikulo gikan sa Abril ni Johann Gyger, kinsa, bisan kung wala’y marka sa pangutana sa titulo, nagsusi sa hilisgutan sa labi ka hinungdanon nga paagi, nga nag-uban sa teksto nga adunay makapaikag nga mga link. Palihug pasayloa kami sa libre nga paghubad sa "chaos monkey" kung mahimo nimo!

Maayo ba ang Kafka sa Kubernetes?

Pasiuna

Ang Kubernetes gidesinyo sa pagdumala sa walay estado nga mga workloads. Kasagaran, ang ingon nga mga workloads gipresentar sa porma sa usa ka microservice nga arkitektura, sila gaan, timbang nga maayo nga pinahigda, sunda ang mga prinsipyo sa 12-factor nga mga aplikasyon, ug makatrabaho sa mga circuit breaker ug kagubot nga mga unggoy.

Ang Kafka, sa laing bahin, naglihok isip usa ka gipang-apod-apod nga database. Sa ingon, kung nagtrabaho, kinahanglan nimo nga atubangon ang estado, ug mas bug-at kini kaysa usa ka microservice. Gisuportahan sa Kubernetes ang mga stateful load, apan sama sa gipunting sa Kelsey Hightower sa duha ka mga tweet, kini kinahanglan nga atimanon nga mabinantayon:

Ang ubang mga tawo mibati nga kung imong i-roll ang Kubernetes ngadto sa usa ka stateful workload, kini mahimong usa ka hingpit nga pagdumala nga database nga kaatbang sa RDS. Sayop kini. Tingali, kung nagtrabaho ka pag-ayo, pagdugang dugang nga mga sangkap ug pagdani sa usa ka grupo sa mga inhenyero sa SRE, makahimo ka sa pagtukod sa RDS sa ibabaw sa Kubernetes.

Kanunay nakong girekomendar nga ang tanan mag-amping pag-ayo sa pagpadagan sa stateful workloads sa Kubernetes. Kadaghanan sa mga tawo nga nangutana "mahimo ba akong magpadagan sa stateful workloads sa Kubernetes" walay igong kasinatian sa Kubernetes, ug kasagaran sa workload nga ilang gipangutana.

Busa, kinahanglan ba nimong padaganon ang Kafka sa Kubernetes? Pangutana nga kontra: mas maayo ba ang Kafka kung wala ang Kubernetes? Mao nga gusto nako nga ipasiugda sa kini nga artikulo kung giunsa ang Kafka ug Kubernetes nagtinabangay sa usag usa, ug kung unsang mga lit-ag ang mahimong moabut sa paghiusa kanila.

Panahon sa pagkompleto

Atong hisgutan ang sukaranan nga butang - ang runtime nga palibot mismo

proseso

Ang mga broker sa Kafka mahigalaon sa CPU. Mahimong ipaila sa TLS ang pipila ka overhead. Bisan pa, ang mga kliyente sa Kafka mahimong labi ka kusog sa CPU kung mogamit sila og encryption, apan wala kini makaapekto sa mga broker.

handumanan

Ang mga broker sa Kafka mokaon sa memorya. Ang gidak-on sa pundok sa JVM kasagaran limitado ngadto sa 4-5 GB, apan magkinahanglan ka usab og daghang panumduman sa sistema tungod kay ang Kafka naggamit sa cache sa panid pag-ayo. Sa Kubernetes, ibutang ang kahinguhaan sa sudlanan ug hangyoa ang mga limitasyon sumala niana.

Tindahan sa datos

Ang pagtipig sa datos sa mga sudlanan kay ephemeral - nawala ang datos kung gi-restart. Alang sa datos sa Kafka mahimo nimong gamiton ang usa ka volume emptyDir, ug ang epekto mahimong susama: ang imong data sa broker mawala human makompleto. Ang imong mga mensahe mahimo gihapon nga tipigan sa ubang mga brokers isip mga replika. Busa, human sa usa ka restart, ang napakyas nga broker kinahanglan una nga kopyahon ang tanan nga mga datos, ug kini nga proseso mahimo’g daghang oras.

Mao kini ang hinungdan nga kinahanglan nimo gamiton ang dugay nga pagtipig sa datos. Himoa nga kini dili lokal nga long-term storage uban sa XFS file system o, mas tukma, ext4. Ayaw gamita ang NFS. Gipasidan-an ko ikaw. Ang mga bersyon sa NFS v3 o v4 dili molihok. Sa laktod nga pagkasulti, ang Kafka broker ma-crash kung dili kini mapapas ang direktoryo sa datos tungod sa problema sa "stupid rename" sa NFS. Kung wala pa ko makombinser nimo, pag-ayo basaha kini nga artikulo. Ang data store kinahanglang dili lokal aron ang Kubernetes mas daling makapili ug bag-ong node human sa pagsugod pag-usab o pagbalhin.

Network

Sama sa kadaghanan nga gipang-apod-apod nga mga sistema, ang pasundayag sa Kafka nagsalig kaayo sa pagpadayon sa latency sa network sa usa ka minimum ug bandwidth aron ma-maximize. Ayaw pagsulay sa pag-host sa tanan nga mga broker sa parehas nga node, tungod kay kini makapakunhod sa pagkaanaa. Kung ang usa ka Kubernetes node mapakyas, ang tibuok Kafka cluster mapakyas. Usab, ayaw pagtibulaag ang Kafka cluster sa tibuok data centers. Ang sama nga alang sa Kubernetes cluster. Ang usa ka maayo nga pagkompromiso sa kini nga kaso mao ang pagpili sa lainlaing mga sona nga magamit.

Pagsalig

Regular nga mga manifesto

Ang website sa Kubernetes adunay maayo kaayo nga giya bahin sa kung giunsa ang pag-configure sa ZooKeeper gamit ang mga manifest. Tungod kay ang ZooKeeper bahin sa Kafka, kini usa ka maayong lugar aron magsugod nga pamilyar kung diin ang mga konsepto sa Kubernetes magamit dinhi. Kung masabtan nimo kini, mahimo nimong gamiton ang parehas nga mga konsepto sa usa ka cluster sa Kafka.

  • Ubos: Ang pod mao ang pinakagamay nga ma-deploy nga unit sa Kubernetes. Ang pod naglangkob sa imong workload, ug ang pod mismo katumbas sa usa ka proseso sa imong cluster. Ang usa ka pod adunay usa o daghang mga sudlanan. Ang matag ZooKeeper server sa ensemble ug ang matag broker sa Kafka cluster modagan sa usa ka bulag nga pod.
  • StatefulSet: Ang StatefulSet kay Kubernetes nga butang nga nagdumala sa daghang stateful workloads, ug ang maong mga workloads nagkinahanglan og koordinasyon. Naghatag ang mga StatefulSets og mga garantiya bahin sa pag-order sa mga pod ug ang ilang pagkatalagsaon.
  • Mga serbisyo nga walay ulo: Gitugotan ka sa mga serbisyo sa pagtangtang sa mga pod gikan sa mga kliyente gamit ang usa ka lohikal nga ngalan. Ang mga Kubernetes niini nga kaso maoy responsable sa pagbalanse sa load. Bisan pa, kung nag-operate sa stateful workloads, sama sa ZooKeeper ug Kafka, ang mga kliyente kinahanglan nga makigsulti sa usa ka piho nga higayon. Dinhi diin magamit ang mga serbisyo nga walay ulo: sa kini nga kaso, ang kliyente adunay gihapon usa ka lohikal nga ngalan, apan dili nimo kinahanglan nga direktang kontakon ang pod.
  • Long-term nga gidaghanon sa pagtipig: Kini nga mga volume gikinahanglan aron ma-configure ang dili lokal nga block nga padayon nga pagtipig nga gihisgutan sa ibabaw.

sa Yolean Naghatag usa ka komprehensibo nga hugpong sa mga pagpakita aron matabangan ka nga makasugod sa Kafka sa Kubernetes.

Mga tsart sa helm

Ang Helm usa ka manager sa package alang sa usa ka Kubernetes nga mahimong itandi sa mga managers sa package sa OS sama sa yum, apt, Homebrew o Chocolatey. Gipasayon ​​niini ang pag-instalar sa mga predefined software packages nga gihulagway sa Helm charts. Ang usa ka maayong pagkapili nga tsart sa Helm naghimo sa lisud nga buluhaton kung giunsa ang husto nga pag-configure sa tanan nga mga parameter aron magamit ang Kafka sa Kubernetes nga dali. Adunay daghang mga diagram sa Kafka: ang opisyal nahimutang sa kahimtang sa incubator, adunay usa gikan sa Tinuud, usa pa - gikan sa Bitnami.

Mga operator

Tungod kay ang Helm adunay pipila ka mga kakulangan, lain nga himan ang nakakuha og daghang pagkapopular: Kubernetes operators. Ang operator dili lamang nag-package sa software para sa Kubernetes, apan gitugotan ka usab sa pag-deploy sa ingon nga software ug pagdumala niini.

Sa lista talagsaon nga mga operator Duha ka operator alang sa Kafka ang gihisgutan. Usa kanila- Strimzi. Uban sa Strimzi, dali nga makuha ang imong Kafka cluster ug modagan sa pipila ka minuto. Halos wala'y gikinahanglan nga pag-configure, dugang pa, ang operator mismo naghatag pipila ka nindot nga mga bahin, pananglitan, point-to-point TLS encryption sulod sa cluster. Naghatag usab ang Confluent kaugalingong operator.

Pag-uswag

Importante nga sulayan ang performance pinaagi sa pag-benchmark sa imong Kafka instance. Ang ingon nga mga pagsulay makatabang kanimo nga makit-an ang mga potensyal nga bottleneck sa wala pa motungha ang mga problema. Suwerte, ang Kafka naghatag na og duha ka mga himan sa pagsulay sa pasundayag: kafka-producer-perf-test.sh и kafka-consumer-perf-test.sh. Himoa nga aktibo nga paggamit niini. Alang sa pakisayran, mahimo nimong tan-awon ang mga resulta nga gihulagway sa kini nga post Jay Kreps, o focus sa kini nga pagrepaso Amazon MSK ni Stéphane Maarek.

operasyon

Pagbantay

Ang transparency sa sistema hinungdanon kaayo - kung dili, dili nimo masabtan kung unsa ang nahitabo niini. Karon adunay usa ka lig-on nga toolkit nga naghatag metrics-based monitoring sa cloud native style. Duha ka popular nga himan alang niini nga katuyoan mao ang Prometheus ug Grafana. Ang Prometheus makakolekta ug metrics gikan sa tanang proseso sa Java (Kafka, Zookeeper, Kafka Connect) gamit ang JMX exporter - sa pinakasimple nga paagi. Kung magdugang ka ug mga sukatan sa cAdvisor, mas hingpit nimong masabtan kung giunsa paggamit ang mga kapanguhaan sa Kubernetes.

Ang Strimzi adunay usa ka kombenyente nga pananglitan sa usa ka Grafana dashboard alang sa Kafka. Gitan-aw niini ang mga yawe nga sukatan, pananglitan, bahin sa mga sektor nga wala’y gikopya o kadtong mga offline. Klaro kaayo ang tanan didto. Kini nga mga sukdanan gisuportahan sa paggamit sa kahinguhaan ug impormasyon sa pasundayag, ingon man mga indikasyon sa kalig-on. Mao nga nakakuha ka sukaranan nga pag-monitor sa cluster sa Kafka nga wala’y hinungdan!

Maayo ba ang Kafka sa Kubernetes?

Source: streamzi.io/docs/master/#kafka_dashboard

Maayo nga madugangan kining tanan sa pag-monitor sa kliyente (mga sukatan sa mga konsumedor ug mga prodyuser), ingon man ang pag-monitor sa latency (alang niini adunay Burrow) ug end-to-end monitoring - alang niini nga paggamit Kafka Monitor.

Pag-log

Ang pag-log usa ka kritikal nga buluhaton. Siguruha nga ang tanan nga mga sudlanan sa imong pag-install sa Kafka naka-log sa stdout и stderr, ug siguruha usab nga ang imong Kubernetes cluster maghiusa sa tanan nga mga log ngadto sa usa ka sentral nga imprastraktura sa pag-log, pananglitan. Elasticsearch.

Pag-obra sa Sulud

Ang Kubernetes naggamit sa liveness ug readyness probes aron masusi kung ang imong pods nagdagan ba sa normal. Kung mapakyas ang liveness check, ang Kubernetes mohunong sa kana nga sudlanan ug dayon awtomatiko kini nga i-restart kung ang palisiya sa pagsugod gitakda sumala niana. Kung mapakyas ang pagsusi sa kaandam, gilain sa Kubernetes ang pod gikan sa mga hangyo sa pagserbisyo. Busa, sa ingon nga mga kaso, ang manual nga interbensyon dili na kinahanglan, nga usa ka dako nga dugang.

Naglunsad og mga update

Gisuportahan sa StatefulSets ang mga awtomatikong pag-update: kung imong pilion ang diskarte sa RollingUpdate, ang matag usa sa ilawom sa Kafka ma-update sa baylo. Niining paagiha, ang downtime mahimong mapakunhod ngadto sa zero.

Pag-scale

Ang pag-scale sa usa ka cluster sa Kafka dili sayon ​​​​nga buluhaton. Bisan pa, gipadali sa Kubernetes ang pag-scale sa mga pod sa usa ka piho nga gidaghanon sa mga replika, nga nagpasabut nga mahimo nimong ipahayag ang daghang mga broker sa Kafka nga gusto nimo. Ang labing lisud nga butang sa kini nga kaso mao ang pag-reassign sa mga sektor pagkahuman sa pag-scale o sa wala pa ang pag-scale. Sa makausa pa, ang Kubernetes motabang kanimo niini nga buluhaton.

Pagdumala

Ang mga buluhaton nga may kalabutan sa pagdumala sa imong Kafka cluster, sama sa paghimo og mga hilisgutan ug pag-reassign sa mga sektor, mahimo gamit ang kasamtangan nga mga script sa shell pinaagi sa pag-abli sa command line interface sa imong pods. Apan, kini nga solusyon dili kaayo nindot. Gisuportahan sa Strimzi ang pagdumala sa mga hilisgutan gamit ang lahi nga operator. Adunay pipila ka lawak alang sa pag-uswag dinhi.

Ре

Karon ang pagkaanaa sa Kafka magdepende usab sa pagkaanaa sa Kubernetes. Kung ang imong Kubernetes cluster mapakyas, unya sa pinakagrabe nga sitwasyon nga sitwasyon, ang imong Kafka cluster mapakyas usab. Sumala sa balaod ni Murphy, kini mahitabo gayud, ug mawad-an ka og data. Aron makunhuran kini nga matang sa peligro, adunay usa ka maayo nga konsepto sa pag-backup. Mahimo nimong gamiton ang MirrorMaker, laing kapilian mao ang paggamit sa S3 alang niini, sama sa gihulagway niini post gikan sa Zalando.

konklusyon

Kung nagtrabaho uban ang gagmay hangtod sa medium nga kadako nga mga pungpong sa Kafka, siguradong takus ang paggamit sa Kubernetes tungod kay naghatag kini dugang nga pagka-flexible ug gipasimple ang kasinatian sa operator. Kung ikaw adunay hinungdanon kaayo nga dili magamit nga latency ug/o mga kinahanglanon sa throughput, nan mahimo nga mas maayo nga ikonsiderar ang uban pang kapilian sa pag-deploy.

Source: www.habr.com

Idugang sa usa ka comment