使用HELM在阿里云下布署KAFKA
一、helm安装1)下载helm客户端helm githttps://github.com/helm/helm/blob/master/docs/install.md?spm=a2c4e.11153940.blogcont159601.23.670342e63B1sLX&file=install.mdkafka-manager下载https://github.com/y...
一、helm安装
1)下载helm客户端
helm git
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
更多推荐
所有评论(0)