由於我比較熟悉 GCP / GKE 的服務,這篇的操作過程都會以 GCP 平台作為範例,不過操作過程大體上是跨平台通用的。
30 天每天一文真的蠻逼人的,每一篇都是新寫,還要盡可能顧及文章品質,下班趕文章,各位大德寫看看就知道
寫文章真的是體力活,覺得我的文章還有參考價值,請左邊幫我點讚按個喜歡,右上角幫我按個追縱,底下歡迎留言討論。給我一點繼續走下去的動力。
Kafka 是分散式的 streaming platform,可以 subscribe & publish 訊息,可以當作是一個功能強大的 message queue 系統,由於分散式的架構,讓 kafka 有很大程度的 fault tolerance。
我們今天就來部屬一個 kafka。
我把我的寶藏都在這了https://github.com/chechiachang/kafka-on-kubernetes
下載下來的 .sh ,跑之前養成習慣貓一下
cat install.sh
#!/bin/bash
#
# https://github.com/helm/charts/tree/master/incubator/kafka
#HELM_NAME=kafka
HELM_NAME=kafka-1
helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator
# Stable: chart version: kafka-0.16.2 app version: 5.0.1
helm upgrade --install ${HELM_NAME} incubator/kafka --version 0.16.2 -f values-staging.yaml
我們這邊用 helm 部屬,之所以用 helm ,因為這是我想到最簡單的方法,能讓輕鬆擁有一套功能完整的 kafka。所以我們先用。
沒用過 helm 的大德可以參考 Helm Quickstart,先把 helm cli 與 kubernetes 上的 helm tiller 都設定好
helm init
一個 helm chart 可以當成一個獨立的專案,不同的 chart 可以在 kubernetes 上協助部屬不同的項目。
這邊使用了還在 incubator 的chart,雖然是 prod ready,不過使用上還是要注意。
使用前先把 incubator 的 helm repo 加進來
helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator
這邊是用 upgrade --install,已安裝就 upgrade,沒安裝就 install,之後可以用這個指令升版
helm upgrade --install ${HELM_NAME} incubator/kafka --version 0.16.2 -f values-staging.yaml
這邊使用的版本:
透過 helm chart,把啟動參數帶進去,這邊我們看幾個比較重要的,細節之後的文章在一起討論。
https://github.com/chechiachang/kafka-on-kubernetes/blob/master/values-staging.yaml
replicas: 3
安裝三個 kafka,topology 的東西也是敬待下篇XD
## The kafka image repository
image: "confluentinc/cp-kafka"
## The kafka image tag
底層執行的 kafka 是 conluent kafka
## Configure resource requests and limits
## ref: http://kubernetes.io/docs/user-guide/compute-resources/
resources: {}
# limits:
# cpu: 200m
# memory: 4096Mi
# requests:
# cpu: 100m
# memory: 1024Mi
kafkaHeapOptions: "-Xmx4G -Xms1G"
這邊可以調整在 kubernetes 上面的 limit 跟 request
prometheus
對我們有上 promethues,基本上就是 kafka-exporter 把 kafka metrics 倒出去 prometheus,這個也是詳見下回分解。
$ kubectl get po | grep kafka
NAME READY STATUS RESTARTS AGE
kafka-1-0 1/1 Running 0 224d
kafka-1-1 1/1 Running 0 224d
kafka-1-2 1/1 Running 0 224d
kafka-1-exporter-88786d84b-z954z 1/1 Running 0 224d
kafka-1-zookeeper-0 1/1 Running 0 224d
kafka-1-zookeeper-1 1/1 Running 0 224d
kafka-1-zookeeper-2 1/1 Running 0 224d
kafka
可以拿來取代 elk 中 client 的 beat 嗎 ?
kafka 沒有 beat 中收集 log, file, metrics 的功能。
我補上一篇 kafka 基本功能介紹。