一、helm安装

1)下载helm客户端

helm git

https://github.com/helm/helm/blob/master/docs/install.md?spm=a2c4e.11153940.blogcont159601.23.670342e63B1sLX&file=install.md

kafka-manager下载

https://github.com/yahoo/kafka-manager/releases

 

2)helm客户端为v2.12.2版本,所以helm服务端建议使用相同版本的tiller(helm服务端程序)。

安装tiller时会报错,因会使用grc.io,google的镜像。

#helm init --upgrade

需使用国内镜像源。

#helm init --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.12.2 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

其他安装方式可以查看第一点安装说明。

3)安装完成后,查看helm服务端与客户端版本

#helm version

Client: &version.Version{SemVer:"v2.12.2", GitCommit:"7d2b0c73d734f6586ed222a567c5d103fed435be", GitTreeState:"clean"}

Server: &version.Version{SemVer:"v2.12.2", GitCommit:"7d2b0c73d734f6586ed222a567c5d103fed435be", GitTreeState:"clean"}

#helm search 

NAME                                  CHART VERSION APP VERSION   DESCRIPTION                                                 

incubator/ack-arms-pilot              0.1.1                       ARMS Pilot - Webhook Admission Controller                   

incubator/ack-hyperledger-fabric      0.2.2         1.1.0         Hyperledger Fabric Helm chart for Kubernetes on Alibaba C...

incubator/exposecontroller            2.3.82                                                                                  

incubator/glusterfs                   0.1.0                       GlusterFS is a scalable network filesystem                  

incubator/jenkins-x-platform          0.0.3193                    Jenkins X next gen cloud CI / CD platform for Kubernetes    

incubator/kafka                       0.2.1                       Apache Kafka is publish-subscribe messaging rethought as ...

..........

helm --help

Flags:

--debug enable verbose output

-h, --help help for helm

--home string location of your Helm config. Overrides $HELM_HOME (default "/Users/huming/.helm")

--host string address of Tiller. Overrides $HELM_HOST

--kube-context string name of the kubeconfig context to use

--kubeconfig string absolute path to the kubeconfig file to use

--tiller-connection-timeout int the duration (in seconds) Helm will wait to establish a connection to tiller (default 300)

--tiller-namespace string namespace of Tiller (default "kube-system")

4)向helm服务端查看已安装的chart

client#helm list 

如有报错,需在每台node上安装socat,以centos7为例。

k8s-node1#yum install socat

5)添加rbac,为tiller更新serviceaccount从default改为tiller.

自Kubernetes 1.6版本开始,API Server启用了RBAC授权。而目前的Tiller部署没有定义授权的ServiceAccount,这会导致访问API Server时被拒绝。我们可以采用如下方法,明确为Tiller部署添加授权。

client#kubectl create serviceaccount --namespace kube-system tiller

client#kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller

client#kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'

二、中间件布署

1、中间件特点:

1、中件间一般启动和关闭存在顺序执行;

2、使用比较大的共享存储。

3、使用存储时,因每个云厂商的存储驱动不一样,需要按需修改。

4、使用storageclass进行挂载volume极简单化。

2、kafka+zk中间件(kafka3节点,zk3节点,kafka manager1节点布署)

2.1添加一个 阿里云仓库:

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

client#helm repo update

client#helm search kafka

NAME           CHART VERSION APP VERSION DESCRIPTION                                                 

incubator/kafka 0.2.1                   Apache Kafka is publish-subscribe messaging rethought as ...

2.2下载kafka

client#heml fetch incubator/kafka

client# ls 

kafka-0.2.1.tgz

2.3解压和查看目录结构

client# tar xvf kafka-0.2.1.tgz && cd kafka

client#tree

2.4配置修改

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

2)查看华为云的storageclass,并做修改,查看到华为云支持的有多个类型的,我们目前选择普通IO型的云盘(alicloud-disk-efficiency),做为存储使用。

client$ kubectl get sc --all-namespaces
NAME                       PROVISIONER     AGE
alicloud-disk-available    alicloud/disk   43d
alicloud-disk-common       alicloud/disk   43d
alicloud-disk-efficiency   alicloud/disk   43d
alicloud-disk-ssd          alicloud/disk   43d

将以下两个文件中的橘红色部分,改为alicloud-disk-efficiency,这里如在阿里云操作,需改为阿里云提供支持的类型。

3)添加kafka manager配置。

#cd charts/ && helm create kafkamanager

后加需更新配置。

#helm update kafka ./

2.5安装kafka

client#cd kafka
client#helm install ./ -n kafka  --namespace  middle
client#helm status kafka
client#helm ls
client#kubectl get statefulset -n middle
client#kubectl get svc -n middle
client#kubectl get pvc -n middle

2.6测试。

配置kafkamanager:

场景:

1)k8s集群内的服务访问kafka;

2)群集外部应用访问kafka;

测试流程:

登录任意一个kafka pod,

1、创建一个topic

pod# bin/kafka-topics.sh --create --zookeeper 10.247.171.181:2181 --replication-factor 1 --partitions 1 --topic device

2、创建消费者

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

3、创建生产者

pod#bin/kafka-console-producer.sh --broker-list localhost:9092 --topic device 使用本地ip

pod#bin/kafka-console-producer.sh --broker-list 10.247.40.178:9092 --topic device 使用集群ip

集群外,可使用内部slb或nodeport形式访问kafka。

client#bin/kafka-console-producer.sh --broker-list 10.10.10.119:30946 --topic device 使用服务器内网ip和nodeport

client#bin/kafka-console-producer.sh --broker-list 10.10.31.211:30946 --topic device 使用SLB ip

 

Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐