{"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\/pt\/blog\/administrirovanie\/kafka-na-kubernetes-eto-horosho","title":{"rendered":"Kafka no Kubernetes \u2014 isso \u00e9 bom?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Bem-vindo, Habr!<\/p>\n<p>Em seu tempo, fomos os primeiros a lan\u00e7ar o tema <noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/collection\/all\/product\/apache-kafka-potokovaya-obrabotka-i-analiz-dannyh\">Kafka<\/a><\/noindex> e continuamos <noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/product_by_id\/132649774\">monitorar<\/a><\/noindex> a desenvolv\u00ea-lo. Em particular, achamos interessante o tema da intera\u00e7\u00e3o entre Kafka e <noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/product_by_id\/125705747\">Kubernetes<\/a><\/noindex>. Um artigo introdut\u00f3rio (e bastante cauteloso) <noindex><a rel=\"nofollow\" href=\"https:\/\/www.confluent.io\/blog\/apache-kafka-kubernetes-could-you-should-you\">artigo<\/a><\/noindex> sobre o assunto foi publicado no blog da Confluent em outubro do ano passado, sob a autoria de Gwen Shapiro. Hoje, queremos chamar sua aten\u00e7\u00e3o para um artigo mais recente, de abril, de Johann Gyger, que, embora tenha usado um ponto de interroga\u00e7\u00e3o no t\u00edtulo, aborda o tema de forma mais concreta, acompanhando o texto com links interessantes. Pedimos desculpas pela tradu\u00e7\u00e3o livre de \"chaos monkey\", se puderem!<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/piter\/blog\/462257\/\"><img decoding=\"async\" alt=\"Kafka no Kubernetes \u2014 isso \u00e9 bom?\" 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>Introdu\u00e7\u00e3o<\/h4>\n<p>\nO Kubernetes \u00e9 projetado para trabalhar com cargas de trabalho sem estado. Geralmente, essas cargas s\u00e3o apresentadas na forma de uma arquitetura de microsservi\u00e7os, sendo leves, bem escal\u00e1veis horizontalmente, obedecendo aos princ\u00edpios de aplicativos de 12 fatores, permitindo o uso de disjuntores autom\u00e1ticos (circuit breaker) e macacos do caos (chaos monkeys).<\/p>\n<p>O Kafka, por outro lado, atua essencialmente como um banco de dados distribu\u00eddo. Assim, ao trabalhar, voc\u00ea precisa lidar com o estado, que \u00e9 muito mais pesado do que um microsservi\u00e7o. O Kubernetes suporta cargas de trabalho com estado, mas, como aponta Kelsey Hightower em dois de seus tweets, deve-se ter cautela com elas:<\/p>\n<blockquote><p>Alguns acreditam que, ao aplicar o Kubernetes em uma carga de trabalho com estado, ele se transforma em um banco de dados totalmente gerenciado capaz de competir com o RDS. Isso n\u00e3o \u00e9 verdade. Pode ser que, se esfor\u00e7ar bastante, adicionar componentes adicionais e envolver uma equipe de engenheiros SRE, seja poss\u00edvel configurar o RDS sobre o Kubernetes.<\/p><\/blockquote>\n<blockquote><p>Sempre recomendo extrema cautela ao executar cargas de trabalho com estado no Kubernetes. A maioria daqueles que se perguntam: \"posso executar cargas de trabalho com estado no Kubernetes?\" n\u00e3o possui experi\u00eancia suficiente com Kubernetes, muitas vezes nem mesmo com a carga sobre a qual est\u00e3o perguntando.<\/p><\/blockquote>\n<p> Ent\u00e3o, devemos executar o Kafka no Kubernetes? Uma pergunta de retorno: ser\u00e1 que o Kafka funcionaria melhor sem o Kubernetes? \u00c9 por isso que quero enfatizar neste artigo como Kafka e Kubernetes se complementam e quais armadilhas podem surgir ao combin\u00e1-los.<\/p>\n<h4>Tempo de Execu\u00e7\u00e3o<\/h4>\n<p>\nVamos falar sobre algo b\u00e1sico \u2014 o ambiente de tempo de execu\u00e7\u00e3o como um todo.<\/p>\n<p><i><b>Processo<\/b><\/i><\/p>\n<p>Os brokers do Kafka s\u00e3o convenientes ao trabalhar com CPU. O TLS pode trazer alguns custos. No entanto, os clientes do Kafka podem sobrecarregar mais a CPU se utilizarem criptografia, mas isso n\u00e3o afeta os brokers.<\/p>\n<p><i><b>Mem\u00f3ria<\/b><\/i><\/p>\n<p>Os brokers do Kafka consomem muita mem\u00f3ria. O tamanho m\u00e1ximo da heap do JVM geralmente deve ser limitado a 4-5 GB, mas voc\u00ea tamb\u00e9m precisar\u00e1 de bastante mem\u00f3ria do sistema, j\u00e1 que o Kafka utiliza muito o cache de disco. No Kubernetes, defina adequadamente os limites de recursos e as solicita\u00e7\u00f5es do cont\u00eainer.<\/p>\n<p><i><b>Armazenamento de dados<\/b><\/i><\/p>\n<p>O armazenamento de dados em cont\u00eaineres \u00e9 ef\u00eamero \u2014 os dados se perdem na reinicializa\u00e7\u00e3o. Para os dados do Kafka, voc\u00ea pode usar um volume <code>emptyDir<\/code>, e o efeito ser\u00e1 semelhante: os dados do seu broker ser\u00e3o perdidos ap\u00f3s a finaliza\u00e7\u00e3o. Suas mensagens ainda podem ser preservadas em outros brokers como r\u00e9plicas. Portanto, ap\u00f3s a reinicializa\u00e7\u00e3o, o broker que falhou deve primeiro replicar todos os dados, e esse processo pode levar um tempo consider\u00e1vel. <\/p>\n<p>\u00c9 por isso que voc\u00ea deve usar um armazenamento de dados dur\u00e1vel. Deve ser um armazenamento dur\u00e1vel n\u00e3o local com sistema de arquivos XFS ou, mais precisamente, ext4. N\u00e3o use NFS. Eu avisei. NFS nas vers\u00f5es v3 ou v4 n\u00e3o funcionar\u00e1. Em resumo, o broker Kafka ir\u00e1 falhar se n\u00e3o conseguir excluir um diret\u00f3rio de dados devido a um problema de 'renomea\u00e7\u00f5es problem\u00e1ticas' que ocorre no NFS. Se ainda n\u00e3o o convenci, preste muita aten\u00e7\u00e3o <noindex><a rel=\"nofollow\" href=\"https:\/\/sbg.technology\/2018\/07\/10\/kafka-nfs\/\">leia este artigo<\/a><\/noindex>. O armazenamento de dados deve ser n\u00e3o local, para que o Kubernetes possa escolher um novo n\u00f3 com mais flexibilidade ap\u00f3s a reinicializa\u00e7\u00e3o ou realoca\u00e7\u00e3o.<\/p>\n<p><i><b>Rede<\/b><\/i><\/p>\n<p>Assim como em muitos sistemas distribu\u00eddos, o desempenho do Kafka depende muito de minimizar as lat\u00eancias da rede e maximizar a largura de banda. N\u00e3o tente colocar todos os brokers em um \u00fanico n\u00f3, pois isso reduzir\u00e1 a disponibilidade. Se um n\u00f3 do Kubernetes falhar, todo o cluster Kafka tamb\u00e9m falhar\u00e1. Da mesma forma, n\u00e3o espalhe o cluster Kafka por datacenters inteiros. O mesmo se aplica ao cluster Kubernetes. Um bom compromisso, neste caso, \u00e9 escolher diferentes zonas de disponibilidade.<\/p>\n<h4>Configura\u00e7\u00e3o<\/h4>\n<p>\n<i><b>Manifests comuns<\/b><\/i><\/p>\n<p>No site do Kubernetes, h\u00e1 <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/tutorials\/stateful-application\/zookeeper\/\">um \u00f3timo guia<\/a><\/noindex> sobre como configurar o ZooKeeper usando manifests. Como o ZooKeeper faz parte do Kafka, \u00e9 conveniente come\u00e7ar por aqui para entender quais conceitos do Kubernetes s\u00e3o aplic\u00e1veis. Depois de entender isso, voc\u00ea poder\u00e1 aplicar os mesmos conceitos ao cluster Kafka.<\/p>\n<ul>\n<li><i>Por<\/i>: um Pod \u00e9 a menor unidade que pode ser implantada no Kubernetes. O pod cont\u00e9m sua carga de trabalho, e o pr\u00f3prio pod corresponde a um processo no seu cluster. O pod cont\u00e9m um ou mais cont\u00eaineres. Cada servidor ZooKeeper no conjunto e cada broker no cluster Kafka funcionar\u00e3o em um pod separado.<\/li>\n<li><i>StatefulSet<\/i>: StatefulSet \u00e9 um objeto do Kubernetes que trabalha com m\u00faltiplas cargas de trabalho que mant\u00eam estados, e tais cargas exigem coordena\u00e7\u00e3o. StatefulSets oferecem garantias em rela\u00e7\u00e3o \u00e0 ordena\u00e7\u00e3o dos pods e \u00e0 sua exclusividade.<\/li>\n<li><i>Servi\u00e7os sem cabe\u00e7a<\/i>: os servi\u00e7os permitem desacoplar os pods dos clientes usando um nome l\u00f3gico. O Kubernetes \u00e9 respons\u00e1vel pelo balanceamento de carga nesse caso. No entanto, ao lidar com cargas de trabalho que mant\u00eam estado, como no caso do ZooKeeper e Kafka, os clientes precisam se comunicar com uma inst\u00e2ncia espec\u00edfica. \u00c9 aqui que os servi\u00e7os sem cabe\u00e7a s\u00e3o \u00fateis: nesse caso, o cliente ainda ter\u00e1 um nome l\u00f3gico, mas n\u00e3o precisar\u00e1 se conectar diretamente ao pod. <\/li>\n<li><i>Volume para armazenamento persistente<\/i>: esses volumes s\u00e3o necess\u00e1rios para configurar o armazenamento em bloco persistente n\u00e3o local mencionado acima.<\/li>\n<\/ul>\n<p>\nSobre <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Yolean\/kubernetes-kafka\">Yolean<\/a><\/noindex> fornece um conjunto abrangente de manifests que facilita o in\u00edcio do trabalho com Kafka no Kubernetes.<\/p>\n<p><i><b>Diagramas Helm<\/b><\/i><\/p>\n<p>Helm \u00e9 um gerenciador de pacotes para Kubernetes, compar\u00e1vel a gerenciadores de pacotes para sistemas operacionais, como yum, apt, Homebrew ou Chocolatey. Com ele, \u00e9 f\u00e1cil instalar pacotes de software predefinidos, descritos nos gr\u00e1ficos do Helm. Um gr\u00e1fico bem elaborado do Helm facilita a tarefa complexa de como configurar corretamente todos os par\u00e2metros para usar o Kafka no Kubernetes. Existem v\u00e1rios gr\u00e1ficos do Kafka: o oficial est\u00e1 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/helm\/charts\/tree\/master\/incubator\/kafka\">em estado de incuba\u00e7\u00e3o<\/a><\/noindex>, h\u00e1 um de <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/confluentinc\/cp-helm-charts\/tree\/master\/charts\/cp-kafka\">Confluent<\/a><\/noindex>, e outro de <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bitnami\/charts\/tree\/master\/bitnami\/kafka\">Bitnami<\/a><\/noindex>.<\/p>\n<p><i><b>Operadores<\/b><\/i><\/p>\n<p>Devido a certas desvantagens do Helm, ganha popularidade uma outra ferramenta: operadores do Kubernetes. Um operador n\u00e3o apenas empacota software para Kubernetes, mas tamb\u00e9m permite que voc\u00ea implemente e gerencie esse software.<\/p>\n<p>Na lista <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/operator-framework\/awesome-operators\">de operadores incr\u00edveis<\/a><\/noindex> s\u00e3o mencionados dois operadores para Kafka. Um deles \u00e9 <noindex><a rel=\"nofollow\" href=\"https:\/\/strimzi.io\/\">Strimzi<\/a><\/noindex>. Com o Strimzi, \u00e9 f\u00e1cil criar um cluster Kafka em quest\u00e3o de minutos. Quase nenhuma configura\u00e7\u00e3o \u00e9 necess\u00e1ria, al\u00e9m do mais, o pr\u00f3prio operador oferece algumas funcionalidades interessantes, como a criptografia TLS ponto a ponto dentro do cluster. A Confluent tamb\u00e9m fornece <noindex><a rel=\"nofollow\" href=\"https:\/\/www.confluent.io\/confluent-operator\/\">seu pr\u00f3prio operador<\/a><\/noindex>.<\/p>\n<p><b>Desempenho<\/b><\/p>\n<p>\u00c9 muito importante testar o desempenho, fornecendo pontos de controle para sua inst\u00e2ncia Kafka instalada. Esses testes ajudar\u00e3o voc\u00ea a descobrir gargalos potenciais antes que os problemas comecem. Felizmente, o Kafka j\u00e1 oferece duas ferramentas para testar desempenho: <code>kafka-producer-perf-test.sh<\/code> e <code>kafka-consumer-perf-test.sh<\/code>. Utilize-as ativamente. Para refer\u00eancia, voc\u00ea pode comparar com os resultados descritos em <noindex><a rel=\"nofollow\" href=\"https:\/\/engineering.linkedin.com\/kafka\/benchmarking-apache-kafka-2-million-writes-second-three-cheap-machines\">este post<\/a><\/noindex> Jay Kreps, ou se orientar por <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/@stephane.maarek\/an-honest-review-of-aws-managed-apache-kafka-amazon-msk-94b1ff9459d8\">esta an\u00e1lise<\/a><\/noindex> Amazon MSK de St\u00e9phane Maarek.<\/p>\n<h4>Opera\u00e7\u00f5es<\/h4>\n<p>\n<i><b>Monitoramento<\/b><\/i><\/p>\n<p>A transpar\u00eancia no sistema \u00e9 muito importante \u2013 caso contr\u00e1rio, voc\u00ea n\u00e3o entender\u00e1 o que est\u00e1 acontecendo. Atualmente, existe um s\u00f3lido conjunto de ferramentas que garante monitoramento baseado em m\u00e9tricas no estilo cloud native. Dois ferramentas populares para esse fim s\u00e3o Prometheus e Grafana. O Prometheus pode coletar m\u00e9tricas de todos os processos Java (Kafka, Zookeeper, Kafka Connect) usando um exportador JMX \u2013 da maneira mais simples. Se voc\u00ea adicionar as m\u00e9tricas do cAdvisor, ser\u00e1 poss\u00edvel ter uma vis\u00e3o mais completa de como os recursos s\u00e3o utilizados no Kubernetes.<\/p>\n<p>O Strimzi possui um exemplo muito conveniente de painel Grafana para Kafka. Ele visualiza m\u00e9tricas-chave, como as sobre setores com pouca replica\u00e7\u00e3o ou aqueles que est\u00e3o offline. Tudo \u00e9 muito claro. Essas m\u00e9tricas s\u00e3o complementadas por informa\u00e7\u00f5es sobre o uso de recursos e desempenho, al\u00e9m de indicadores de estabilidade. Dessa forma, voc\u00ea obt\u00e9m monitoramento b\u00e1sico do cluster Kafka sem custo algum!<\/p>\n<p><img decoding=\"async\" alt=\"Kafka no Kubernetes \u2014 isso \u00e9 bom?\" src=\"\/wp-content\/uploads\/2019\/08\/65ab468f7ebc0f376796990e41c62a48.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nFonte: <noindex><a rel=\"nofollow\" href=\"https:\/\/strimzi.io\/docs\/master\/#kafka_dashboard\">strimzi.io\/docs\/master\/#kafka_dashboard<\/a><\/noindex><\/p>\n<p>Tudo isso seria bem complementado com o monitoramento de clientes (m\u00e9tricas de consumidores e produtores), bem como o monitoramento de lat\u00eancia (para isso h\u00e1 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/linkedin\/Burrow\">Burrow<\/a><\/noindex>) e monitoramento de ponta a ponta - para isso utilize <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/linkedin\/kafka-monitor\">Kafka Monitor<\/a><\/noindex>.<\/p>\n<p><i><b>Registro<\/b><\/i><\/p>\n<p>A grava\u00e7\u00e3o de logs \u00e9 mais uma tarefa crucial. Certifique-se de que todos os containers na sua instala\u00e7\u00e3o do Kafka estejam registrando logs em <code>stdout<\/code> e <code>stderr<\/code>, e tamb\u00e9m garanta que seu cluster Kubernetes agregue todos os logs em uma infraestrutura de registro centralizada, como <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>Verifica\u00e7\u00e3o de integridade<\/b><\/i><\/p>\n<p>O Kubernetes utiliza sondas de \"vitalidade\" (liveness) e prontid\u00e3o (readiness) para verificar se seus pods est\u00e3o funcionando corretamente. Se a verifica\u00e7\u00e3o de vitalidade falhar, o Kubernetes interromper\u00e1 este container e, em seguida, o reiniciar\u00e1 automaticamente, se a pol\u00edtica de rein\u00edcio estiver configurada corretamente. Se a verifica\u00e7\u00e3o de prontid\u00e3o falhar, o Kubernetes isolar\u00e1 este pod da presta\u00e7\u00e3o de servi\u00e7os. Dessa forma, em tais casos, n\u00e3o ser\u00e1 mais necess\u00e1ria a interven\u00e7\u00e3o manual, o que \u00e9 uma grande vantagem. <\/p>\n<p><i><b>Implanta\u00e7\u00e3o de atualiza\u00e7\u00f5es<\/b><\/i><\/p>\n<p>StatefulSet suporta atualiza\u00e7\u00f5es autom\u00e1ticas: ao escolher a estrat\u00e9gia RollingUpdate, cada pod Kafka ser\u00e1 atualizado um por um. Assim, \u00e9 poss\u00edvel reduzir a dura\u00e7\u00e3o de inatividade a zero.<\/p>\n<p><i><b>Escalabilidade<\/b><\/i><\/p>\n<p>Escalar um cluster Kafka n\u00e3o \u00e9 uma tarefa simples. No entanto, no Kubernetes, \u00e9 muito f\u00e1cil escalar os pods para um determinado n\u00famero de r\u00e9plicas, o que significa que voc\u00ea poder\u00e1 definir declarativamente quantos brokers Kafka desejar. O mais complicado, nesse caso, \u00e9 a reassocia\u00e7\u00e3o de setores ap\u00f3s a escalabilidade para cima ou antes da escalabilidade para baixo. Novamente, o Kubernetes ajudar\u00e1 voc\u00ea com essa tarefa.<\/p>\n<p><i><b>Administra\u00e7\u00e3o<\/b><\/i><\/p>\n<p>As tarefas relacionadas \u00e0 administra\u00e7\u00e3o do seu cluster Kafka, especialmente a cria\u00e7\u00e3o de t\u00f3picos e a reatribui\u00e7\u00e3o de parti\u00e7\u00f5es, podem ser realizadas por meio de scripts shell dispon\u00edveis, acessando a interface de linha de comando em seus pods. No entanto, essa solu\u00e7\u00e3o n\u00e3o \u00e9 muito elegante. O Strimzi suporta a gest\u00e3o de t\u00f3picos por meio de outro operador. H\u00e1 espa\u00e7o para aprimoramento aqui.<\/p>\n<p><i><b>Backup e recupera\u00e7\u00e3o<\/b><\/i><\/p>\n<p>Agora, a disponibilidade do Kafka depender\u00e1 tamb\u00e9m da disponibilidade do Kubernetes. Se o seu cluster Kubernetes falhar, no pior dos casos, o cluster Kafka tamb\u00e9m falhar\u00e1. De acordo com a Lei de Murphy, isso certamente ocorrer\u00e1 e voc\u00ea perder\u00e1 dados. Para reduzir o risco desse tipo de situa\u00e7\u00e3o, \u00e9 aconselh\u00e1vel desenvolver bem a estrat\u00e9gia de backup. Pode-se usar o MirrorMaker, outra alternativa \u00e9 utilizar o S3, como descrito neste <noindex><a rel=\"nofollow\" href=\"https:\/\/jobs.zalando.com\/tech\/blog\/backing-up-kafka-zookeeper\/\">post<\/a><\/noindex> da Zalando.<\/p>\n<h4>Conclus\u00e3o<\/h4>\n<p>\nAo trabalhar com clusters Kafka pequenos ou m\u00e9dios, \u00e9 definitivamente sensato utilizar o Kubernetes, pois ele proporciona flexibilidade adicional e facilita o trabalho com operadores. Se voc\u00ea tiver requisitos n\u00e3o funcionais muito rigorosos relacionados a lat\u00eancia e\/ou largura de banda, talvez seja melhor considerar outra op\u00e7\u00e3o de implanta\u00e7\u00e3o.<br \/>\n<br \/>Fonte: <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.3 - 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\/pt\/blog\/administrirovanie\/kafka-na-kubernetes-eto-horosho\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\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\/pt\/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 no Kubernetes \u2014 \u00e9 uma boa ideia? | ProHoster","description":"Sauda\u00e7\u00f5es, Habr! No seu tempo, n\u00f3s fomos os primeiros a apresentar ao mercado russo o tema","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/kafka-na-kubernetes-eto-horosho","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","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\/pt\/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\/pt\/wp-json\/wp\/v2\/posts\/36822","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=36822"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/36822\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/27586"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=36822"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=36822"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=36822"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}