strimzi实战之二:部署和消息功能初体验

打印 上一主题 下一主题

主题 912|帖子 912|积分 2736

欢迎访问我的GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos
本篇概览


  • 本篇是《strimzi实战》系列的第二篇,前文完成了介绍和准备工作,是时候体验strimzi的核心功能了:发送和接受kafka消息,为了完成这个目标,本篇会按照如下步骤开始实战:

  • 在kubernetes环境部署strimzi,这里面包含两个步骤:首先是将各类资源创建好,然后再启动strmzi
  • 验证基本功能:发送和接受kafka消息,这里面有两种操作(注意,是两种里面二选一,不是两步):如果您的kubernetes环境有pv,就可以选择使用pv的操作步骤,如果您没有pv,就选择不用pv的操作步骤
  • 删除操作


  • 接下来开始实战
部署


  • 创建namespace
  1. kubectl create namespace kafka
复制代码

  • 部署角色、权限、CRD等资源
  1. kubectl create -f 'https://strimzi.io/install/latest?namespace=kafka' -n kafka
复制代码
启动


  • 接下来的启动操作,根据您的实际情况,有两种可选

  • 第一种:如果您的k8s环境已经准备好了pv,请执行以下命令完成部署,strimzi会通过pvc去申请使用pv,这样就算pod有问题被删除重建了,kafka消息的数据也不会丢失
  1. kubectl apply -f https://strimzi.io/examples/latest/kafka/kafka-persistent-single.yaml -n kafka
复制代码

  • 第二种,如果您的k8s环境还没有准备好pv,请执行以下命令完成部署,这样创建的kafka服务也能正常使用,只不过所有数据都存在pod中,一旦pod被删除,数据就找不回来了
  1. kubectl apply -f https://strimzi.io/examples/latest/kafka/kafka-ephemeral-single.yaml -n kafka
复制代码

  • 以上两种方式只要选择一种去执行即可,执行完命令后,需要等待镜像下载和服务创建,尤其是镜像下载,实测真的慢啊,我用腾讯云服务器大约等了七八分钟
  1. [root@VM-12-12-centos ~]# kubectl get pod -n kafka
  2. NAME                                        READY   STATUS              RESTARTS   AGE
  3. strimzi-cluster-operator-566948f58c-h2t6g   0/1     ContainerCreating   0          16m
复制代码

  • 等到operator的pod运行起来后,就该创建zookeeper的pod了,继续等镜像下载...
  1. [root@VM-12-12-centos ~]# kubectl get pods -n kafka
  2. NAME                                        READY   STATUS              RESTARTS   AGE
  3. my-cluster-zookeeper-0                      0/1     ContainerCreating   0          7m59s
  4. my-cluster-zookeeper-1                      0/1     ContainerCreating   0          7m59s
  5. my-cluster-zookeeper-2                      0/1     ContainerCreating   0          7m59s
  6. strimzi-cluster-operator-566948f58c-h2t6g   1/1     Running             0          24m
复制代码

  • 如下图红色箭头所指,显示正在拉取zookeeper镜像

  • 等到zookeeper的pod创建完成后,终于轮到主角登场了:开始kafka的pod创建,最后,来个全家福,如下所示,一套具备基本功能的kafka环境
  1. [root@VM-12-12-centos ~]# kubectl get pods -n kafka
  2. NAME                                          READY   STATUS    RESTARTS   AGE
  3. my-cluster-entity-operator-66598599fc-sskcx   3/3     Running   0          73s
  4. my-cluster-kafka-0                            1/1     Running   0          96s
  5. my-cluster-zookeeper-0                        1/1     Running   0          14m
  6. my-cluster-zookeeper-1                        1/1     Running   0          14m
  7. my-cluster-zookeeper-2                        1/1     Running   0          14m
  8. strimzi-cluster-operator-566948f58c-h2t6g     1/1     Running   0          30m
复制代码
基本操作:收发消息


  • strimzi部署已经OK,现在收发消息试试,看kafka基本功能是否正常
  • 接下来的操作需要两个控制台窗口,一个用于发消息,一个用于收消息
  • 在发消息的窗口输入以下命令,就会创建名为my-topic的topic,并且进入发送消息的模式
  1. kubectl -n kafka \
  2. run kafka-producer \
  3. -ti \
  4. --image=quay.io/strimzi/kafka:0.32.0-kafka-3.3.1 \
  5. --rm=true \
  6. --restart=Never \
  7. -- bin/kafka-console-producer.sh --bootstrap-server my-cluster-kafka-bootstrap:9092 --topic my-topic
复制代码

  • 在收消息的窗口输入以下命令,就会进入消费消息的模式,topic是my-topic
  1. kubectl -n kafka \
  2. run kafka-consumer \
  3. -ti \
  4. --image=quay.io/strimzi/kafka:0.32.0-kafka-3.3.1 \
  5. --rm=true \
  6. --restart=Never \
  7. -- bin/kafka-console-consumer.sh --bootstrap-server my-cluster-kafka-bootstrap:9092 --topic my-topic --from-beginning
复制代码

  • 然后,在发送消息的窗口输入一些文字后再回车,消息就会发送出去,如下图,左侧红框显示一共发送了四次消息,最后一次是空字符串,右侧黄框显示成功收到四条消息

  • 如果您的kubernetes环境是按照《快速搭建云原生开发环境(k8s+pv+prometheus+grafana)》的方法来部署的,现在就能通过grafana看到命名空间kafka下面的资源了,如下图

  • 另外,如果您使用了pv,还可以关注一下pv的使用情况,如下图,kafka的zookeeper的数据都改为外部存储了,数据不会因为pod问题而丢失

  • 不过由于我们还没有将strimzi的监控配置好,现在还看不到kafka业务相关的指标情况,只能从k8s维度去查看pod的基本指标,这些会在后面的章节补齐
删除操作


  • 如果需要把strimzi从kubernetes环境删除,执行以下操作即可:
  • 如果您使用了pv,就执行以下命令完成删除
  1. kubectl delete -f https://strimzi.io/examples/latest/kafka/kafka-persistent-single.yaml -n kafka \
  2. && kubectl delete -f 'https://strimzi.io/install/latest?namespace=kafka' -n kafka \
  3. && kubectl delete namespace kafka
复制代码

  • 如果您没有使用pv,就执行以下命令完成删除
  1. kubectl delete -f https://strimzi.io/examples/latest/kafka/kafka-ephemeral-single.yaml -n kafka \
  2. && kubectl delete -f 'https://strimzi.io/install/latest?namespace=kafka' -n kafka \
  3. && kubectl delete namespace kafka
复制代码

  • 再去检查所有pod,已看不到strimzi的痕迹
  1. [root@VM-12-12-centos ~]# kubectl get pod -A
  2. NAMESPACE            NAME                                          READY   STATUS    RESTARTS   AGE
  3. calico-apiserver     calico-apiserver-67b7856948-bg2wh             1/1     Running   0          6d2h
  4. calico-apiserver     calico-apiserver-67b7856948-fz64n             1/1     Running   0          6d2h
  5. calico-system        calico-kube-controllers-78687bb75f-z2r7m      1/1     Running   0          6d2h
  6. calico-system        calico-node-l6nmw                             1/1     Running   0          6d2h
  7. calico-system        calico-typha-b46ff96f6-qqzxb                  1/1     Running   0          6d2h
  8. calico-system        csi-node-driver-lv2g2                         2/2     Running   0          6d2h
  9. kafka                my-cluster-entity-operator-66598599fc-fz7wx   3/3     Running   0          4m57s
  10. kafka                my-cluster-kafka-0                            1/1     Running   0          5m22s
  11. kafka                my-cluster-zookeeper-0                        1/1     Running   0          5m48s
  12. kafka                strimzi-cluster-operator-566948f58c-pj45s     1/1     Running   0          6m15s
  13. kube-system          coredns-78fcd69978-57r7x                      1/1     Running   0          6d2h
  14. kube-system          coredns-78fcd69978-psjcs                      1/1     Running   0          6d2h
  15. kube-system          etcd-vm-12-12-centos                          1/1     Running   0          6d2h
  16. kube-system          kube-apiserver-vm-12-12-centos                1/1     Running   0          6d2h
  17. kube-system          kube-controller-manager-vm-12-12-centos       1/1     Running   0          6d2h
  18. kube-system          kube-proxy-x8nhg                              1/1     Running   0          6d2h
  19. kube-system          kube-scheduler-vm-12-12-centos                1/1     Running   0          6d2h
  20. local-path-storage   local-path-provisioner-55d894cf7f-mpd2n       1/1     Running   0          3d21h
  21. monitoring           alertmanager-main-0                           2/2     Running   0          24h
  22. monitoring           alertmanager-main-1                           2/2     Running   0          24h
  23. monitoring           alertmanager-main-2                           2/2     Running   0          24h
  24. monitoring           blackbox-exporter-6798fb5bb4-4hmf7            3/3     Running   0          24h
  25. monitoring           grafana-d9c6954b-qts2s                        1/1     Running   0          24h
  26. monitoring           kube-state-metrics-5fcb7d6fcb-szmh9           3/3     Running   0          24h
  27. monitoring           node-exporter-4fhb6                           2/2     Running   0          24h
  28. monitoring           prometheus-adapter-7dc46dd46d-245d7           1/1     Running   0          24h
  29. monitoring           prometheus-adapter-7dc46dd46d-sxcn2           1/1     Running   0          24h
  30. monitoring           prometheus-k8s-0                              2/2     Running   0          24h
  31. monitoring           prometheus-k8s-1                              2/2     Running   0          24h
  32. monitoring           prometheus-operator-7ddc6877d5-d76wk          2/2     Running   0          24h
  33. tigera-operator      tigera-operator-6f669b6c4f-t8t9h              1/1     Running   0          6d2h
复制代码

  • 不过,对于pv来说,由于使用的策略是Retain,因此还会继续存在

  • 至此,strimzi基本功能实战已经完成,咱们知道了如何快速部署strimzi和收发消息,感受到operator给我们带来的便利,接下来的文章,还会有更多简单的操作,更多精彩的功能等着咱们去尝试,欢迎您继续关注欣宸原创,咱们一起学习共同进步
欢迎关注博客园:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

钜形不锈钢水箱

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表