目錄
一、環境准備
- Kubernetes:v1.18.13
- Kubernetes宿主機:CentOS Linux release 7.6.1810 (Core)
- Nfs服務器:192.168.99.151
- Helm:v3.6.1
- Kafka:2.0.1
- Zookeeper:3.5.5
接下來的實戰之前,請您准備好:K8S、Helm、NFS、StorageClass!
二、准備工作
2.1 添加helm倉庫(該倉庫中有kafka):
$ helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator
# 如果上述命令添加倉庫失敗了 可以使用以下命令進行添加
$ helm repo add incubator https://charts.helm.sh/incubator
2.2 獲取kafka的chart包
$ helm pull incubator/kafka --untar
2.3 修改具體的values 對應的值
1) 首先要設置在K8S之外的也能使用kafka服務,修改external.enabled的值,改為true!
2)找到configurationOverrides,下圖兩個框中的內容原本是注釋的,請刪除注釋符號,另外,如果您之前設置過跨網絡訪問kafka,就能理解下面寫入K8S宿主機IP的原因了!
3)設置數據卷,找到persistence,按需要調整大小,再設置已准備好的storageclass的名稱!
4)設置zookeeper的數據卷!
三、部署
3.1 先創建namespace
$ kubectl create namespace kafka-test
3.2 安裝
$ helm -n kafka-test install kafka ../kafka/ -f values.yaml
kafka啟動依賴zookeeper,整個啟動會耗時數分鍾,期間可見zookeeper和kafka的pod逐漸啟動!
3.3 查看kafka的版本
$ kubectl exec kafka-0 -n kafka-test -- sh -c 'ls /usr/share/java/kafka/kafka_*.jar'
如下圖紅框所示,scala版本2.11,kafka版本2.0.1:
四、驗證
4.1 對外暴露zookeeper
apiVersion: v1
kind: Service
metadata:
name: zookeeper-nodeport
namespace: kafka-test
spec:
type: NodePort
ports:
- port: 2181
nodePort: 32181
selector:
app: zookeeper
release: kafka
4.2 驗證
找一台電腦安裝kafka包,就能通過里面自帶的命令遠程連接和操作K8S的kafka了!
4.2.1 安裝kafka軟件包
訪問kafka官網:http://kafka.apache.org/downloads ,剛才確定了scala版本2.11,kafka版本2.0.1,因此下載下圖紅框中的版本:
4.2.2 查看當前topic
$ ./kafka-topics.sh --list --zookeeper 192.168.99.151:32181
# 空空如也
4.2.3 創建topic
$ ./kafka-topics.sh --create --zookeeper 192.168.99.151:32181 --replication-factor 1 --partitions 1 --topic test001
4.2.4 查看名為test001的topic
$ ./kafka-topics.sh --describe --zookeeper 192.168.99.151:32181 --topic test001
Topic:test001 PartitionCount:1 ReplicationFactor:1 Configs:
Topic: test001 Partition: 0 Leader: 1 Replicas: 1 Isr: 1
4.2.5 進入創建消息的交互模式
$ ./kafka-console-producer.sh --broker-list 192.168.99.151:31090 --topic test001
4.2.6 執行命令消費消息
$ ./kafka-console-consumer.sh --bootstrap-server 192.168.99.151:31090 --topic test001 --from-beginning
自行測試! 本人暫時對kafka 沒什么深入研究 ! 隨后有時間繼續完善!