国内最专业的IT技术学习网

UI设计

当前位置:主页 > UI设计 >

在K8S上运行Kafka合适吗?会遇到哪些陷阱?

发布时间:2019/09/05标签:   集群    点击量:

原标题:在K8S上运行Kafka合适吗?会遇到哪些陷阱?
Kubernetes计划的初志是运转无状况任务负载。这些平日采纳微效劳架构的任务负载,是轻量级,可程度扩大,遵守十二因素利用顺序,能够处置环形断路和随机Monkey测试。另一方面,Kafka实质上是一个散布式数据库。这象征着你必需处置状况,它比微效劳更分量级。Kubernetes支撑有状况的任务负载,但你必需慎重看待它,正如Kelsey Hightower在近来的两条推文中指出的那样:当初你应当在Kubernetes上运转Kafka吗?我的反诘是:没有它,Kafka会跑得更好吗?这就是为甚么我要指出Kafka和Kubernetes之间的彼此弥补性以及你能够碰到的圈套。1、运转时让咱们先看一下基础的货色——运转时自身。1、过程Kafka brokers对CPU很友爱。TLS能够会引入一些开支。假如Kafka客户端应用加密,则须要更多CPU,但这不会影响brokers。2、内存Kafka brokers是内存耗费小户。JVM堆平日能够限度为4-5 GB,但因为Kafka大批应用页面缓存,因而还须要充足的体系内存。在Kubernetes中,能够响应地设置容器资本限度和恳求。3、存储容器中的存储是长久的——重启后数据将丧失。能够对Kafka数据应用emptyDir卷,这将发生雷同的后果:brokers的数据将在停机后丧失。您的新闻在其余broker上作为正本仍是能够应用的。因而,从新启动后,失利的broker必需得复制全部的数据,这能够是一个耗时进程。这就是你应当应用长久存储的起因。应用XFS或ext4的非当地长久性块存储更适合。我忠告你:不要应用NFS。NFS v3和v4都不会起感化。简而言之,Kafka broker会由于NFS“笨拙重定名”成绩而无奈删除数据名目,自行停止。假如你依然不信任我,那末请认真浏览这篇博文[1]。存储必需长短当地的,以便Kubernetes在从新启动或从新定位时能够更机动地抉择另一个节点。4、收集与大少数散布式体系一样,Kafka机能在很大水平上取决于低收集耽误和高带宽。不要试图将全部代办放在统一节点上,由于这会下降可用性。假如Kubernetes节点呈现毛病,那末全部Kafka集群都市呈现毛病。不要跨数据核心扩大Kafka集群。这一样实用于Kubernetes集群。差别的可用地区是一个很好的衡量。2、设置1、清单Kubernetes网站包括一个十分好的教程[2],先容怎样应用清单设置ZooKeeper。因为ZooKeeper是Kafka的一局部,因而能够经过这个懂得哪些Kubernetes观点被利用在这里。一旦懂得,您也能够对Kafka集群应用雷同的观点。1)PodPod是Kubernetes中最小的可安排单位。它包括您的任务负载,它代表聚集中的一个过程。一个Pod包括一个或多个容器。团体中的每个ZooKeeper效劳器和Kafka集群中的每个Kafka broker都将在一个独自的Pod中运转。2)StatefulSetStatefulSet是一个Kubernetes工具,用于处置须要和谐的多个有状况任务负载。StatefulSets保障Pod的有序性和独一性的。3)Headless Services效劳经过逻辑称号将Pod与客户端分别。Kubernetes担任负载均衡。然而,关于ZooKeeper和Kafka等有状况任务负载,客户端必需与特定实例停止通讯。这就是 Headless Services施展感化的处所:作为客户端,依然能够取得逻辑称号,但不用间接拜访Pod。4)长久卷如上所述,须要设置非当地长久块存储。Yolean[3]供给了一套片面的清单,能够关心您开端应用Kubernetes上的Kafka。2、Helm ChartsHelm是Kubernetes的担保理器,相似yum,apt,Homebrew或Chocolatey等OS担保理器。它同意您装置Helm Charts中描写的预约义软件包。经心计划的Helm Charts能简化全部参数准确设置的庞杂义务,以便在Kubernetes上运转Kafka。有几张图表实用于Kafka的的可供抉择:一个是处于演进状况的民间图表[4],一个来自Confluent,另一个来自Bitnami,仅举几例。3、Operators因为Helm的一些限度,另一种东西变得十分风行:Kubernetes Operators。Operators不只能够为Kubernetes打包软件,还能够为Kubernetes安排和治理一个软件。评估很高的Operators名单中提到Kafka有两个,此中一个是Strimzi[5],Strimzi使得在几分钟内启动Kafka集群变得十分轻易,简直不须要任何设置,它增添了一些美丽的功效,如聚集间点对点TLS加密。Confluent还发布马上推出新的Operator。4、机能运转机能测试以对Kafka装置停止基准测试十分主要。在您碰到费事之前,它会为您供给无关能够的瓶颈的处所。荣幸的是,Kafka曾经供给了两特性能测试东西:kafka-producer-perf-test.sh和kafka-consumer-perf-test.sh。记得常常应用它们。作为参考,能够应用Jay Kreps的博客成果[6],或许 Stéphane Maarek在 Amazon MSK的批评[7]。3、运维1、监控可见性十分主要,不然您将不晓得产生了甚么。现在,有一种不错的东西能够用云原生方法监控目标。Prometheus和Grafana是两种风行的东西。Prometheus能够间接从JMX导出器网络全部Java过程(Kafka,ZooKeeper,Kafka Connect)的目标。增加cAdvisor目标可为供给无关Kubernetes资本应用情形的其余信息。Strimzi为Kafka供给了一个文雅的Grafana仪表板示例。它以十分直观的方法可视化要害目标,如未复制的和离线分区。它经过资本应用和机能以及稳固性目标来弥补这些目标。因而,能够收费取得基础的Kafka集群监控!

版权信息Copyright © IT技术教程 版权所有    ICP备案编号:鲁ICP备09013610号