本文安装思路参考自: Kubernetes全栈架构师:基于世界500强的k8s实战课程
文章目录
1. 安装helm
1.1. 安装helm
-
helm项目地址:https://github.com/helm/helm
-
安装(可选择最新版本的helm):
# 下载
wget https://get.helm.sh/helm-v3.6.1-linux-amd64.tar.gz
# 解压
tar zxvf helm-v3.6.1-linux-amd64.tar.gz
# 安装
mv linux-amd64/helm /usr/local/bin/
# 验证
helm version
1.2. Helm基本命令
# 添加仓库
helm repo add
# 查询 charts
helm search repo
# 更新repo仓库资源
helm repo update
# 查看当前安装的charts
helm list
# 安装
helm install
# 卸载
helm uninstall
# 更新
helm upgrade
2. 部署zookeeper与kafka
2.1. 下载chart包
# 添加bitnami仓库
helm repo add bitnami https://charts.bitnami.com/bitnami
# 查询chart
helm search repo bitnami
# 创建工作目录
mkdir ~/kafka
cd ~/kafka
# 拉取zookeeper和kafka
helm pull bitnami/kafka
helm pull bitnami/zookeeper
# 解压
tar zxvf [kafka/zookeeper]
2.2. 部署zookeeper
2.2.1. 编辑values
- 进入zookeeper工作目录:
cd ~/kafka/zookeeper
,配置时区、持久化存储、副本数等
建议首次部署时直接修改values中的配置,而不是用–set的方式,这样方便后期upgrade。
vim values.yaml
# 手动添加时区
# 该模版无extraEnvVars字段,直接复制以下三行
# 部署后,可通过查看logs验证时区是否生效
extraEnvVars:
- name: TZ
value: "Asia/Shanghai"
# 允许任意用户连接(默认开启)
allowAnonymousLogin: true
---
# 关闭认证(默认关闭)
auth:
enable: false
---
# 修改副本数
replicaCount: 3
---
# 4. 配置持久化,按需使用
persistence:
enabled: true
storageClass: "rook-ceph-block" # storageClass
accessModes:
- ReadWriteOnce
2.2.2. 安装
cd ~/zookeeper
kubectl create ns kafka
helm install zookeeper -n kafka .
- 查看zookeeper节点状态
# 进入pod
kubectl exec -it -n kafka zookeeper-0 -- bash
# 查看状态
zkServer.sh status
2.3. 安装kafka
2.3.1. 编辑values
- 进入kafka工作目录:
cd ~/kafka/kafka
,配置zookeeper、持久化存储、副本数、时区、默认分区数、默认副本数、日志过期时间等等
vim values.yaml
2.3.2. 基础配置
- 时区、副本数、持久化存储、zookeeper连接
# 在extraEnvVars下添加时区
extraEnvVars:
- name: TZ
value: "Asia/Shanghai"
---
# 副本数
replicaCount: 3 # 副本数
---
# 持久化存储
persistence:
enabled: true
storageClass: "rook-ceph-block" # sc
accessModes:
- ReadWriteOnce
size: 8Gi
---
# 配置zookeeper外部连接
zookeeper:
enabled: false # 不使用内部zookeeper
externalZookeeper: # 外部zookeeper
servers: zookeeper
2.3.3. 高可用配置
- 默认分区数、默认副本数、日志过期时间。(需根据kafka节点数设定)
## 允许删除topic(按需开启)
deleteTopicEnable: true
## 日志保留时间(默认一周)
logRetentionHours: 168
## 自动创建topic时的默认副本数
defaultReplicationFactor: 2
## 用于配置offset记录的topic的partition的副本个数
offsetsTopicReplicationFactor: 2
## 事务主题的复制因子
transactionStateLogReplicationFactor: 2
## min.insync.replicas
transactionStateLogMinIsr: 2
## 新建Topic时默认的分区数
numPartitions: 3
2.3.4. 安装
cd ~/kafka
helm install kafka -n kafka .
3. 调试
3.1. 查询、创建
- 进入pod
kubectl exec -it -n kafka kafka-0 -- bash
- 创建topic(3分区+2副本)
kafka-topics.sh --zookeeper zookeeper:2181 --topic test001 --create --partitions 3 --replication-factor 2
- 列出topic;查询topic详情
kafka-topics.sh --list --zookeeper zookeeper:2181
kafka-topics.sh --zookeeper zookeeper:2181 --describe --topic test001
3.2. 生产、消费
- 生产
kafka-console-producer.sh --broker-list kafka:9092 --topic test001
- 消费(另开一个窗口进入pod)
kafka-console-consumer.sh --bootstrap-server kafka:9092 --from-beginning --topic test001
3.3. 修改、删除
- 修改topic配置:增加分区至4个(分区只可增不可减),并调整日志保留时间为10天(需换算为毫秒)
kafka-topics.sh --zookeeper zookeeper:2181 --alter --config retention.ms=864000000 --partitions 4 --topic test001
- 删除topic(需要设置deleteTopicEnable: true)
kafka-topics.sh --delete --zookeeper zookeeper:2181 --topic test001
3.4. 维护须知
- 若zookeeper所有节点宕机/卸载后重新部署,zookeeper恢复后还需要重新启动kafka集群。
若本篇内容对您有所帮助,请三连点赞,关注,收藏支持下~