k8s kafka集群 连接不上_kubernetes部署kafka集群

本文详细介绍了Kafka分布式日志系统的特点、应用场景和架构,并重点讲解了如何在Kubernetes集群上部署Kafka,包括Zookeeper、Kafka的yaml配置文件解析,以及部署后的测试步骤,帮助读者掌握Kubernetes环境下Kafka的部署和管理。
摘要由CSDN通过智能技术生成

一.kafka介绍

kafka是一个分布式、多副本、多订阅者、分区的,基于zoopkeeper协调的分布式日志系统。其主要特点为:

1.以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上的数据也能保证常数时间的访问性能。

2.高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K消息的传输。

3.支持kafka server间的消息分区以及分布式消费,同时保证每个partition内的消息顺序和传输。

4.同时支持离线数据处理和实时数据处理。

二.应用场景

1.日志收集

2.数据推送

3.作为大缓冲区使用

4.服务中间件

三.应用架构

如上图所示,一个kafka集群包含若干个Producer(服务器日志、业务数据、Web前端产生的page view等),若干个Broker(kafka支持水平扩展,一般broker数量越多,集群的吞吐量越大),若干个consumer group,一个zookeeper集群(kafka通过zookeeper管理集群配置、选举leader、consumer group等发生变化时进行rebalance)。

3.1 名词解释

broker

消息中间件处理节点(服务器),一个节点就是一个broker,一个kafka集群由一个或多个broker组成

Topic

kafka对消息进行归类,发送到集群的每一条消息都要指定一个topic

Partition

物理上的概念,每个topic包含一个或多个partition,一个partition对应一个文件夹,这个文件夹下存储partition的数据和索引文件,每个partition内部是有序的。

Producer

生产者,负责发布消息到broker

Consumer

消费者,从broker读取消息

ConsumerGroup

每个consumer属于一个特定的consumer group,可为每个consumer指定group name,若不指定,则属于默认的group,一条消息可以发送到不同的consumer group,但一个consumer group中只能有一个consumer能消费这条消息。

四.kubernetes集群部署kafka

4.1 部署前准备

创建好的至少三个节点的kubernetes集群(这里我们使用的版本1.13.10)

创建好的存储类StorageClass(这里我们使用的是cephfs)

4.2 部署yaml文件

1.部署zookeeper的yaml文件

[root@k8s001 kafka]# cat zookeeper.yaml

apiVersion: v1

kind: Service

metadata:

name: zk-hs

namespace: kafka

labels:

app: zk

spec:

ports:

- port: 2888

name: server

- port: 3888

name: leader-election

clusterIP: None

selector:

app: zk

---

apiVersion: v1

kind: Service

metadata:

name: zk-cs

namespace: kafka

labels:

app: zk

spec:

ports:

- port: 2181

name: client

selector:

app: zk

---

apiVersion: policy/v1beta1

kind: PodDisruptionBudget

metadata:

name: zk-pdb

namespace: kafka

spec:

selector:

matchLabels:

app: zk

maxUnavailable: 1

---

apiVersion: apps/v1

kind: StatefulSet

metadata:

name: zk

namespace: kafka

spec:

selector:

matchLabels:

app: zk

serviceName: zk-hs

replicas: 3

updateStrategy:

type: RollingUpdate

podManagementPolicy: Parallel

template:

metadata:

labels:

app: zk

spec:

nodeSelector:

travis.io/schedule-only: "kafka"

tolerations:

- key: "travis.io/schedule-only"

operator: "Equal"

value: "kafka"

effect: "NoSchedule"

- key: "travis.io/schedule-only"

operator: "Equal"

value: "kafka"

effect: "NoExecute"

tolerationSecond

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值