加入helm的repo
helm repo add incubator http://mirror.azure.cn/kubernetes/charts-incubator/ helm repo update
然後我們就可以配置需要安裝的 Values 文件了,可以直接使用默認的 values.yaml 文件,然後可以用它來進行定制,比如指定我們自己的 StorageClass:
curl https://raw.githubusercontent.com/helm/charts/master/incubator/kafka/values.yaml > kfk-values.yaml
指定設定好的配置檔安裝
helm install kafka ./kafka -f kfk-values.yaml
如果你沒有配置 StorageClass 可用的 PV,或者安裝的時候 kafka 的 Pod 就會出現 Pending 狀態,所以一定提前配置好數據卷。
正常情況隔一會兒Kafka就可以安裝成功了:
> kubectl get pods NAME READY STATUS RESTARTS AGE kafka-0 1/1 Running 0 25m kafka-1 1/1 Running 0 11m kafka-2 1/1 Running 0 2m kafka-zookeeper-0 1/1 Running 0 25m kafka-zookeeper-1 1/1 Running 0 22m kafka-zookeeper-2 1/1 Running 0 18m
默認會安裝 3 個 ZK Pods 和 3 個 Kafka Pods,這樣可以保證應用的高可用,也可以看下我配置的持久卷信息:
> kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kafka ClusterIP 10.100.205.187 9092/TCP 31m kafka-headless ClusterIP None 9092/TCP 31m kafka-zookeeper ClusterIP 10.100.230.255 2181/TCP 31m kafka-zookeeper-headless ClusterIP None 2181/TCP,3888/TCP,2888/TCP 31m kubernetes ClusterIP 10.96.0.1 443/TCP 14d
> cat < apiVersion: v1 kind: Pod metadata: name: testclient namespace: default spec: containers: - name: kafka image: confluentinc/cp-kafka:5.0.1 command: - sh - -c - "exec tail -f /dev/null" EOF > kubectl get pod testclient NAME READY STATUS RESTARTS AGE testclient 1/1 Running 0 23s
客戶端Pod創建成功後我們就可以開始進行一些簡單的測試了。首先讓我們創建一個名為test1的有一個單獨的和復制因子'1'的主題:
> kubectl exec -it testclient -- /usr/bin/kafka-topics --zookeeper kafka-zookeeper:2181 --topic test1 --create --partitions 1 --replication-factor 1 Created topic "test1".
然後創建一個生產者,將消息發佈到這個話題主題上:
> kubectl exec -ti testclient -- /usr/bin/kafka-console-producer --broker-list kafka:9092 --topic test1 >
然後再打一個終端頁面,讓我們打開一個消費者會話,這樣我們就可以看到我們發送的消息了。
> kubectl exec -ti testclient -- /usr/bin/kafka-console-consumer --bootstrap-server kafka:9092 --topic test1
現在我們在生產者的窗口發送消息,在上面的消費者會話窗口中就可以看到對應的消息了:
到這裡證明 Kafka 就應該注意正常工作了。 比如需要 zk 我們並沒有做持久化,如果是環境環境一定記得做下數據持久化,在 values.yaml 文件中根據需要進行定制生產,當然適合 環境還是推薦使用 Operator 來搭建 Kafka 集群,例如 strimzi-kafka-operator。
參考網址:https://www.qikqiak.com/post/deploy-kafka-ha-on-k8s/