helm安装kafka集群

helm安装kafka集群

k8s之安装kafka集群+高可用配置

安装helm

安装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

Helm基本命令

添加仓库
helm repo add 

查询 charts
helm search repo

更新repo仓库资源
helm repo update

查看当前安装的charts
helm list

安装
helm install

卸载
helm uninstall

更新
helm upgrade

部署zookeeper与kafka

下载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] 
helm安装kafka集群
image-20210623085007428

部署zookeeper

编辑values配置

  • • 进入zookeeper工作目录:cd ~/kafka/zookeeper,配置时区、持久化存储、副本数等

建议首次部署时直接修改values中的配置,而不是用–set的方式,这样方便后期upgrade。

vim values.yaml
镜像
bitnami/zookeeper:3.7.0-debian-10-r127
# 手动添加时区
# 该模版无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

安装

cd ~/zookeeper
kubectl create ns kafka
helm install zookeeper -n kafka .
  • • 查看zookeeper节点状态

进入pod
kubectl exec -it -n kafka zookeeper-0 -- bash

查看状态
zkServer.sh status

安装kafka

编辑values配置

  • • 进入kafka工作目录:cd ~/kafka/kafka,配置zookeeper、持久化存储、副本数、时区、默认分区数、默认副本数、日志过期时间等等

vim values.yaml
镜像
bitnami/kafka:2.8.0-debian-10-r84

基础配置

  • • 时区、副本数、持久化存储、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               

高可用配置

  • • 默认分区数、默认副本数、日志过期时间。(需根据kafka节点数设定)

## 允许删除topic(按需开启)
deleteTopicEnable: true

## 日志保留时间(默认一周)
logRetentionHours: 168

## 自动创建topic时的默认副本数
defaultReplicationFactor: 2

## 用于配置offset记录的topic的partition的副本个数
offsetsTopicReplicationFactor: 2

## 事务主题的复制因子
transactionStateLogReplicationFactor: 2

## min.insync.replicas
transactionStateLogMinIsr: 2

## 新建Topic时默认的分区数
numPartitions: 3
helm安装kafka集群
image-20210815141616563

安装

cd ~/kafka
helm install kafka -n kafka .

调试

查询、创建

  • • 进入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

4. 查询group
kafka-consumer-groups.sh --bootstrap-server kafka:9092 --list
kafka-consumer-groups.sh --describe --bootstrap-server kafka:9092 --group [group]

生产、消费

  • • 生产

kafka-console-producer.sh --broker-list kafka:9092 --topic test001
  • • 消费(另开一个窗口进入pod)

kafka-console-consumer.sh --bootstrap-server kafka:9092 --from-beginning --topic event.home.mac  --consumer-property group.id=cmd_test

查看消费组
kafka-consumer-groups.sh --bootstrap-server kafka:9092 --list

查看组中消费者状态
kafka-consumer-groups.sh --bootstrap-server kafka:9092 --group scene_algorithm --describe 

修改、删除

  • • 修改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 

维护须知

  • • 若zookeeper所有节点宕机/卸载后重新部署,zookeeper恢复后还需要重新启动kafka集群。

Kafka-Eagle

system-config.properties

######################################
# multi zookeeper & kafka cluster list
######################################
kafka.eagle.zk.cluster.alias=cluster
cluster.zk.list=zookeeper:2181

######################################
# broker size online list
######################################
cluster.kafka.eagle.broker.size=20

######################################
# zk client thread limit
######################################
kafka.zk.limit.size=25

######################################
# kafka eagle webui port
######################################
kafka.eagle.webui.port=8048

######################################
# kafka offset storage
######################################
cluster.kafka.eagle.offset.storage=kafka

######################################
# kafka metrics, 30 days by default
######################################
kafka.eagle.metrics.charts=false
kafka.eagle.metrics.retain=30

######################################
# kafka sql topic records max
######################################
kafka.eagle.sql.topic.records.max=5000
kafka.eagle.sql.fix.error=false

######################################
# delete kafka topic token
######################################
kafka.eagle.topic.token=keadmin

######################################
# kafka sasl authenticate
######################################
cluster.kafka.eagle.sasl.enable=false
cluster.kafka.eagle.sasl.protocol=SASL_PLAINTEXT
cluster.kafka.eagle.sasl.mechanism=SCRAM-SHA-256
# 密码长度有限制
cluster.kafka.eagle.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="admin" password="xxxxx";
cluster.kafka.eagle.sasl.client.id=
cluster.kafka.eagle.sasl.cgroup.enable=false
cluster.kafka.eagle.sasl.cgroup.topics=

######################################
# kafka sqlite jdbc driver address
######################################
#kafka.eagle.driver=org.sqlite.JDBC
#kafka.eagle.url=jdbc:sqlite:/hadoop/kafka-eagle/db/ke.db
#kafka.eagle.username=root
#kafka.eagle.password=www.kafka-eagle.org

######################################
# kafka mysql jdbc driver address
######################################
kafka.eagle.driver=com.mysql.jdbc.Driver
kafka.eagle.url=jdbc:mysql://xxx:3306/ke?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
kafka.eagle.username=xxx
kafka.eagle.password=xxx
kubectl create configmap kafka-eagle-config -n kafka --from-file=kafka_client_jaas.conf –-from-file=system-config.properties

kafka_client_jaas.conf

KafkaClient {
  org.apache.kafka.common.security.plain.PlainLoginModule required
  username="admin"
  password="admin-secret";
};
kubectl create configmap kafka-eagle-config -n public --from-file=kafka_client_jaas.conf --from-file=system-config.properties

Deploy

apiVersion: apps/v1
kind: Deployment
metadata:
  name: kafka-eagle
  namespace: public
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      workload.user.cattle.io/workloadselector: deployment-kafka-kafka-eagle
  template:
    metadata:
      labels:
        workload.user.cattle.io/workloadselector: deployment-kafka-kafka-eagle
      annotations:
        version/date: "2021071304"
        version/author: "licong"        
    spec:
      containers:
      - image: buzhiyun/kafka-eagle:latest
        imagePullPolicy: Always
        name: kafka-eagle
        ports:
        - containerPort: 8048
          name: 8048tcp01
          protocol: TCP
        resources: {}
        securityContext:
          allowPrivilegeEscalation: false
          privileged: false
          procMount: Default
          readOnlyRootFilesystem: false
          runAsNonRoot: false
        stdin: true
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        tty: true
        volumeMounts:
        - mountPath: /opt/kafka-eagle/conf
          name: conf
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
      volumes:
      - configMap:
          defaultMode: 256
          name: kafka-eagle-config
          optional: false
        name: conf
---
apiVersion: v1
kind: Service
metadata:
  name: kafka-eagle-client
  namespace: public
spec:
  type: ClusterIP
  ports:
    - port: 8048
      targetPort: 8048
  selector:
    workload.user.cattle.io/workloadselector: deployment-kafka-kafka-eagle

helm安装kafka集群


原文始发于微信公众号(背带裤的云原生):helm安装kafka集群

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/218818.html

(0)
青莲明月的头像青莲明月

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!