目录
一、环境准备
- Kubernetes:v1.18.13
- Kubernetes宿主机:CentOS Linux release 7.6.1810 (Core)
- Nfs服务器:192.168.99.151
- Helm:v3.6.1
- Kafka:2.0.1
- Zookeeper:3.5.5
接下来的实战之前,请您准备好:K8S、Helm、NFS、StorageClass!
二、准备工作
2.1 添加helm仓库(该仓库中有kafka):
$ helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator
# 如果上述命令添加仓库失败了 可以使用以下命令进行添加
$ helm repo add incubator https://charts.helm.sh/incubator
2.2 获取kafka的chart包
$ helm pull incubator/kafka --untar
2.3 修改具体的values 对应的值
1) 首先要设置在K8S之外的也能使用kafka服务,修改external.enabled的值,改为true!
2)找到configurationOverrides,下图两个框中的内容原本是注释的,请删除注释符号,另外,如果您之前设置过跨网络访问kafka,就能理解下面写入K8S宿主机IP的原因了!
3)设置数据卷,找到persistence,按需要调整大小,再设置已准备好的storageclass的名称!
4)设置zookeeper的数据卷!
三、部署
3.1 先创建namespace
$ kubectl create namespace kafka-test
3.2 安装
$ helm -n kafka-test install kafka ../kafka/ -f values.yaml
kafka启动依赖zookeeper,整个启动会耗时数分钟,期间可见zookeeper和kafka的pod逐渐启动!
3.3 查看kafka的版本
$ kubectl exec kafka-0 -n kafka-test -- sh -c 'ls /usr/share/java/kafka/kafka_*.jar'
如下图红框所示,scala版本2.11,kafka版本2.0.1:
四、验证
4.1 对外暴露zookeeper
apiVersion: v1
kind: Service
metadata:
name: zookeeper-nodeport
namespace: kafka-test
spec:
type: NodePort
ports:
- port: 2181
nodePort: 32181
selector:
app: zookeeper
release: kafka
4.2 验证
找一台电脑安装kafka包,就能通过里面自带的命令远程连接和操作K8S的kafka了!
4.2.1 安装kafka软件包
访问kafka官网:http://kafka.apache.org/downloads ,刚才确定了scala版本2.11,kafka版本2.0.1,因此下载下图红框中的版本:
4.2.2 查看当前topic
$ ./kafka-topics.sh --list --zookeeper 192.168.99.151:32181
# 空空如也
4.2.3 创建topic
$ ./kafka-topics.sh --create --zookeeper 192.168.99.151:32181 --replication-factor 1 --partitions 1 --topic test001
4.2.4 查看名为test001的topic
$ ./kafka-topics.sh --describe --zookeeper 192.168.99.151:32181 --topic test001
Topic:test001 PartitionCount:1 ReplicationFactor:1 Configs:
Topic: test001 Partition: 0 Leader: 1 Replicas: 1 Isr: 1
4.2.5 进入创建消息的交互模式
$ ./kafka-console-producer.sh --broker-list 192.168.99.151:31090 --topic test001
4.2.6 执行命令消费消息
$ ./kafka-console-consumer.sh --bootstrap-server 192.168.99.151:31090 --topic test001 --from-beginning
自行测试! 本人暂时对kafka 没什么深入研究 ! 随后有时间继续完善!