|NO.Z.00275|——————————|^^ 部署 ^^|——|KuberNetes&中间件容器化及helm.V22|——|中间件.v02|helm.v3.5.4|下载部署|zookeeper&kafka|

一、使用helm部署zookeeper和kafka;下载部署
### --- 添加bitnami的helm仓库并添加版本库
~~~     添加bitnami的helm仓库

[root@k8s-master01 zookeeper-kafka]# helm repo add bitnami https://charts.bitnami.com/bitnami
### --- 查看添加的仓库

[root@k8s-master01 zookeeper-kafka]# helm repo list
NAME            URL                                                              
bitnami         https://charts.bitnami.com/bitnami 
### --- 查看bitnami仓库下zookeeper和kafka的程序包
~~~     注:可以直接安装,也可以下载后更改values值后安装

[root@k8s-master01 zookeeper-kafka]# helm search repo zookeeper
NAME                        CHART VERSION   APP VERSION DESCRIPTION                                       
bitnami/zookeeper           6.7.2           3.7.0       A centralized service for maintaining configura...
bitnami/kafka               12.18.1         2.8.0       Apache Kafka is a distributed streaming platform. 
二、将zookeeper和kafka的包下载下来,部署
### --- 下载zookeeper和kafka的helm包文件

[root@k8s-master01 zookeeper-kafka]# helm pull bitnami/zookeeper
[root@k8s-master01 zookeeper-kafka]# helm pull bitnami/kafka
[root@k8s-master01 zookeeper-kafka]# ls
kafka-12.18.1.tgz  zookeeper-6.7.2.tgz
### --- 解压包文件,修改配置参数

[root@k8s-master01 zookeeper-kafka]# tar -zxf zookeeper-6.7.2.tgz 
[root@k8s-master01 zookeeper-kafka]# tar -zxf kafka-12.18.1.tgz 
[root@k8s-master01 zookeeper-kafka]# ls
kafka  kafka-12.18.1.tgz  zookeeper  zookeeper-6.7.2.tgz
三、部署zookeeper
### --- 修改zookeeper的配置参数

[root@k8s-master01 zookeeper-kafka]# vim zookeeper/values.yaml
  enabled: false        # 将存储卷更改为false
  # storageClass: "-"   
# 若是内存和CPU配置比较低,实验环境可以更改CPU和内存大小
 resources:
  requests:
    memory: 100Mi
    cpu: 100m
### --- 安装zookeeper

[root@k8s-master01 zookeeper]# pwd
/root/README/install-some-apps/zookeeper-kafka/zookeeper
[root@k8s-master01 zookeeper]# helm install zookeeper -n public-service --set replicaCount=1 --set auth.enabled=false --set allowAnonymousLogin=true .
NAME: zookeeper
LAST DEPLOYED: Sat May 22 17:26:29 2021
NAMESPACE: public-service
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
** Please be patient while the chart is being deployed **
ZooKeeper can be accessed via port 2181 on the following DNS name from within your cluster:
    zookeeper.public-service.svc.cluster.local    // 可以通过dnsname的2181端口访问到zookeeper
To connect to your ZooKeeper server run the following commands:
    export POD_NAME=$(kubectl get pods --namespace public-service -l "app.kubernetes.io/name=zookeeper,app.kubernetes.io/instance=zookeeper,app.kubernetes.io/component=zookeeper" -o jsonpath="{.items[0].metadata.name}")
    kubectl exec -it $POD_NAME -- zkCli.sh
To connect to your ZooKeeper server from outside the cluster execute the following commands:
    kubectl port-forward --namespace public-service svc/zookeeper 2181:2181 &
    zkCli.sh 127.0.0.1:2181
~~~     # 启动参数详解
~~~     注:可以指定namespace
~~~     注:若是生产环境下:集群副本数更改为3,打开metrics,可以让promise可以采集它的一些信息

  --set replicaCount=3             // 副本数设置为1
  --set auth.enabled=false         // 认证方式关闭;因为zookeeper集群不会暴露到公网,所以认证方式给关闭
  --set allowAnonymousLogin=true   // 允许匿名访问
### --- 查看部署的zookeeper的pod

[root@k8s-master01 zookeeper]# kubectl get po -n public-service -owide
NAME          READY   STATUS    RESTARTS   AGE     IP              NODE         NOMINATED NODE   READINESS GATES
zookeeper-0   1/1     Running   0          18m     172.27.14.246   k8s-node02   <none>           <none>
四、部署kafka
### --- 配置kafka的values配置文件

[root@k8s-master01 kafka]# vim values.yaml 
# 注:
replicaCount: 1                                          // 副本数量设置为1
### --- 部署kafka

[root@k8s-master01 kafka]# pwd
/root/README/install-some-apps/zookeeper-kafka/kafka
[root@k8s-master01 kafka]# helm install kafka -n public-service --set zookeeper.enabled=false --set replicaCount=1 --set externalZookeeper.servers=zookeeper .
~~~     # 启动参数详解

helm install kafka bitnami/kafka                         // 若是在当前目录,可以删除这个路径bitnami/kafka,若不是需要加上仓库的名称
  --set zookeeper.enabled=false                          // 因为我们刚才创建了zookeeper,所以直接使用刚才创建的zookeeper供这个kafka使用。把它内部的kafka关闭;所以此项设置为false,若是设置为true的话,会再次创建zookeeper
  --set replicaCount=3
  --set externalZookeeper.servers=ZOOKEEPER-SERVICE-NAME // 外部的service地址,因为它们在同一个namespace下,所以可以直接写成zookeeper的名称即可
### --- kafka和zookeeper一般都是在一起使用的
### --- 查看创建的kafka
~~~     注:显示是pending状态

[root@k8s-master01 zookeeper-kafka]# kubectl get po -n public-service -owide
NAME          READY   STATUS    RESTARTS   AGE     IP              NODE         NOMINATED NODE   READINESS GATES
kafka-0       0/1     Pending   0          4m22s   <none>          <none>       <none>           <none>
### --- 创建kafka

[root@k8s-master01 kafka]# helm install kafka -n public-service --set zookeeper.enabled=false --set replicaCount=1 --set externalZookeeper.servers=zookeeper .
NAME: kafka
LAST DEPLOYED: Sat May 22 18:15:02 2021
NAMESPACE: public-service
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
** Please be patient while the chart is being deployed **

Kafka can be accessed by consumers via port 9092 on the following DNS name from within your cluster:

    kafka.public-service.svc.cluster.local

Each Kafka broker can be accessed by producers via port 9092 on the following DNS name(s) from within your cluster:

    kafka-0.kafka-headless.public-service.svc.cluster.local:9092

To create a pod that you can use as a Kafka client run the following commands:

    kubectl run kafka-client --restart='Never' --image docker.io/bitnami/kafka:2.8.0-debian-10-r24 --namespace public-service --command -- sleep infinity
    kubectl exec --tty -i kafka-client --namespace public-service -- bash

    PRODUCER:
        kafka-console-producer.sh \
            
            --broker-list kafka-0.kafka-headless.public-service.svc.cluster.local:9092 \
            --topic test

    CONSUMER:
        kafka-console-consumer.sh \
            
            --bootstrap-server kafka.public-service.svc.cluster.local:9092 \
            --topic test \
            --from-beginning
### --- 查看创建的kafka资源

[root@k8s-master01 kafka]# kubectl get po -n public-service -owide
NAME                              READY   STATUS    RESTARTS   AGE     IP               NODE           NOMINATED NODE   READINESS GATES
kafka-0                           1/1     Running   0          76s     172.25.244.203   k8s-master01   <none>           <none>
五、查看创建的zookeeper和kafka资源
### --- 查看helm创建的2个应用

[root@k8s-master01 zookeeper-kafka]# helm list -n public-service
NAME        NAMESPACE       REVISION    UPDATED                                 STATUS      CHART           APP VERSION
kafka       public-service  1           2021-05-22 17:41:14.104792854 +0800 CST deployed    kafka-12.18.1   2.8.0      
zookeeper   public-service  1           2021-05-22 17:26:29.604378029 +0800 CST deployed    zookeeper-6.7.2 3.7.0  
### --- 查看创建的2个pod
~~~     注:生成环境中:同一类型的服务,尽量不要部署在同一台宿主机上
~~~     注:生成环境中,最少3个实例起步,一定要启奇数个,防止脑裂 

[root@k8s-master01 zookeeper-kafka]# kubectl get po -n public-service -owide
NAME          READY   STATUS    RESTARTS   AGE   IP              NODE         NOMINATED NODE   READINESS GATES
kafka-0       1/1     Running   0          19m   172.17.125.23   k8s-node01   <none>           <none>
zookeeper-0   1/1     Running   0          86m   172.27.14.246   k8s-node02   <none>           <none>  
### --- 查看service

[root@k8s-master01 zookeeper-kafka]# kubectl get svc -n public-service
NAME                 TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
kafka                ClusterIP   10.111.68.94     <none>        9092/TCP                     43m
kafka-headless       ClusterIP   None             <none>        9092/TCP,9093/TCP            43m
zookeeper            ClusterIP   10.107.222.142   <none>        2181/TCP,2888/TCP,3888/TCP   92m
zookeeper-headless   ClusterIP   None             <none>        2181/TCP,2888/TCP,3888/TCP   92m
### --- 查看ep

[root@k8s-master01 zookeeper-kafka]# kubectl get ep -n public-service
NAME                 ENDPOINTS                                                  AGE
kafka                172.17.125.23:9092                                         44m
kafka-headless       172.17.125.23:9092,172.17.125.23:9093                      44m
zookeeper            172.27.14.246:3888,172.27.14.246:2181,172.27.14.246:2888   92m
zookeeper-headless   172.27.14.246:3888,172.27.14.246:2181,172.27.14.246:2888   92m

附录一:
### --- 报错现象:

[root@k8s-master01 zookeeper-kafka]# kubectl describe po kafka-0 -n public-service
Events:
  Type     Reason            Age   From               Message
  ----     ------            ----  ----               -------
  Warning  FailedScheduling  9s    default-scheduler  0/5 nodes are available: 5 pod has unbound immediate PersistentVolumeClaims.
  Warning  FailedScheduling  9s    default-scheduler  0/5 nodes are available: 5 pod has unbound immediate PersistentVolumeClaims.
### --- 报错分析:
~~~     关闭持久存储的pvc接口  和zookeeper一样,也是因为pvc的问题导致的,关闭pvc即可

[root@k8s-master01 kafka]# pwd
/root/README/install-some-apps/zookeeper-kafka/kafka
### --- 解决方案:关闭持久存储参数

[root@k8s-master01 kafka]# vim values.yaml   
 ## Persistence parameters
##
persistence:
  enabled: false                                       // 将存储卷更改为false
~~~     # 删除历史创建:重新触发,查看结果
~~~     注:helm是不允许修改配置文件的,只能删除后重新创建

[root@k8s-master01 kafka]# helm upgrade kafka -n public-service --set zookeeper.enabled=false --set replicaCount=1 --set externalZookeeper.servers=zookeeper .
Error: UPGRADE FAILED: cannot patch "kafka" with kind StatefulSet: StatefulSet.apps "kafka" is invalid: spec: Forbidden: updates to statefulset spec for fields other than 'replicas', 'template', and 'updateStrategy' are forbidden
~~~     # 删除kafka

[root@k8s-master01 kafka]# helm uninstall kafka -n public-service
release "kafka" uninstalled

 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

 

posted on   yanqi_vip  阅读(92)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示