订阅博客
收藏博客
微博分享
QQ空间分享

kubernetes(k8s) helm安装kafka、zookeeper

频道:Kubernetes 标签: 时间:2018年11月14日 浏览:1202次 评论:0条

通过helm在k8s上部署kafka。zookeeper

  通过helm方法安装

  k8s上安装kafka,可以使用helm,将kafka作为一个应用安装。当然这首先要你的k8s支持使用helm安装。helm的介绍和参考见:https://yq.aliyun.com/articles/159601

  helm仓库地址https://github.com/helm/charts

    通过阿里仓库安装kafka

      helm repo add incubator https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator/

  helm repo update

  helm search kafka

 

  hlem fetch incubator/kafka                    # 下载tgz文件

      tar zxf kafka-0.2.1.tgz && cd kafka

      把./charts/zookeeper/templates/statefulset.yaml中的zookeeper的镜像地址改为registry.cn-hangzhou.aliyuncs.com/appstore/k8szk:v2 

  将以下两个文件中的橘红色部分改为你的storageclass。 

  storageclass查询命令: kubectl get sc --all-namespaces   

      ./templates/statefulset.yaml:      volume.beta.kubernetes.io/storage-class: ceph-kube

      ./charts/zookeeper/values.yaml: StorageClass: "ceph-kube"

  修改上面的StorageClass为自已的storageclass

  helm install ./ -n kafka  --namespace  xxx   #安装 

  kubectl get pvc -n xxx #查看pvc状态

  kubectl describe pvc  pvcname  -n xxx   #查看pvc详细信息排错使用  

        ➜  ~ kubectl get svc -n elk    # 查看svc地址

        NAME                       TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)             AGE

        kafka-kafka                ClusterIP   10.70.53.93   <none>        9092/TCP            22h

        kafka-kafka-headless       ClusterIP   None          <none>        9092/TCP            22h

        kafka-zookeeper            ClusterIP   10.70.254.8   <none>        2181/TCP            22h

        kafka-zookeeper-headless   ClusterIP   None          <none>        2888/TCP,3888/TCP   22h

  要想外网访问,修改服务的yaml文件,设置type为NodePort为30946

  还要在安全组中开放这个端口

  可以先在pod里面测试

  进入kafka的pod

  创建主题,进入容器中,或者访问svc 地址

  bin/kafka-topics.sh --create --zookeeper 10.70.254.8:2181 --replication-factor 1 --partitions 1 --topic device         这里面使用的是svc ip,容器间访问

  创建消费者

  bin/kafka-console-consumer.sh --bootstrap-server 10.70.53.93:9092 --topic device --from-beginning

  创建生产者

  bin/kafka-console-producer.sh --broker-list localhost:9092 --topic device     使用本地ip
  bin/kafka-console-producer.sh --broker-list 10.70.53.93:9092 --topic device     使用集群id
  bin/kafka-console-producer.sh --broker-list 10.121.7.176:30946 --topic device    使用服务器内网ip和nodeport

  现在pod内部可以访问了,现在尝试在外部创建生产者。

  实验发现,在k8s上部署服务来访问k8s上的kafka,依然没有问题。

  下面我们尝试直接在本地pc访问服务器k8s中的kafka。

  在本地电脑上cd到kafka的目录

 cd /home/lp/soft/kafka_2.11-1.1.0
 bin/kafka-console-producer.sh --broker-list 10.121.7.176:30946 --topic device

   发现访问不了。

   进入pod 
     在pod重启kafka。

 bin/kafka-server-stop.sh    关闭

  进入pod,执行

 bin/zookeeper-shell.sh 10.70.254.8:2181 <<< "get /brokers/ids/0"    使用的是zookeeper的集群ip


◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。