flink1.13于5月4日發(fā)布,版本迭代之快,更是體現(xiàn)了其勢不可擋的發(fā)展速度。社區(qū)活躍度逐步攀升,當(dāng)然少不了與云原生等技術(shù)的集成。 本文主要講解flink的原生k8s application模式部署步驟,原生k8本質(zhì)上是flink內(nèi)部集成了k8s,能夠做到Taskmanager的彈性伸縮。
而之所以采用application模式部署,是因其規(guī)避了session模式的資源隔離問題、per-job模式的集群生命周期問題,以及兩者共同的客戶端資源消耗問題,也因其顯著優(yōu)點(diǎn)被廣泛用于生產(chǎn)環(huán)境。
1.準(zhǔn)備
Kubernetes版本大于等于1.9。
可以訪問列表,創(chuàng)建,刪除容器和服務(wù),可以通過進(jìn)行配置
~/.kube/config
。您可以通過運(yùn)行來驗(yàn)證權(quán)限kubectl auth can-i <list|create|edit|delete> pods
。-
啟用Kubernetes DNS。
- RBAC:d
efault service account
具有創(chuàng)建,刪除Pod的權(quán)限。
- RBAC:d
kubectl create clusterrolebinding flink-role --clusterrole=edit --serviceaccount=namespacwe:default
2. Flink鏡像制作及推送
dockerfile如下:
FROM flink:1.12
COPY dataprocess-0.0.1-SNAPSHOT.jar $FLINK_HOME/
3.部署flink client(client上云)
4.部署jobmanager、taskmanager
進(jìn)入flink-client pod內(nèi)部
執(zhí)行如下命令:
flink run-application \
--target kubernetes-application \
-Dkubernetes.namespace=xxx \
-Dkubernetes.cluster-id=jobmanager-application \
-Dkubernetes.rest-service.exposed.type=NodePort \
-Dkubernetes.container.image=10.4.xx.xx/library/flink:dhf \
-Dkubernetes.container.image.pull-policy=Always local:///opt/flink/dataProcess-0.0.1-SNAPSHOT-jar-with-dependencies.jar \
-kafkaBroker "192.168.xx.xx:9092,192.xx.xx.227:9093,192.168.xx.xx:9094" \
-kafkaSchemaTopic connector9 \
-kafkaDataTopics "connector9.dhf1.tab1,connector9.dhf1.test"
最后三行為向jar包傳遞的自定義參數(shù)
執(zhí)行命令后會自動 1個jobmanager、1個或多個taskmanager。
5.程序監(jiān)控
jobmanager、taskmanager均有日志輸出用于查看程序執(zhí)行進(jìn)程。
也可通過k8s master節(jié)點(diǎn)ip加上圖中暴露的端口7447訪問flink dashboard.
關(guān)注公眾號HEY DATA,添加作者微信,一起討論更多。