flink on native k8s by application mode

flink1.13于5月4日發布,版本迭代之快,更是體現了其勢不可擋的發展速度。社區活躍度逐步攀升,當然少不了與云原生等技術的集成。 本文主要講解flink的原生k8s application模式部署步驟,原生k8本質上是flink內部集成了k8s,能夠做到Taskmanager的彈性伸縮。

image

而之所以采用application模式部署,是因其規避了session模式的資源隔離問題、per-job模式的集群生命周期問題,以及兩者共同的客戶端資源消耗問題,也因其顯著優點被廣泛用于生產環境。

image
image

1.準備

  • Kubernetes版本大于等于1.9。

  • 可以訪問列表,創建,刪除容器和服務,可以通過進行配置~/.kube/config。您可以通過運行來驗證權限kubectl auth can-i <list|create|edit|delete> pods

  • 啟用Kubernetes DNS。

    • RBAC:default service account 具有創建,刪除Pod的權限。
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/
image
image

3.部署flink client(client上云)

image

4.部署jobmanager、taskmanager

進入flink-client pod內部

image

執行如下命令:

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包傳遞的自定義參數

image

執行命令后會自動 1個jobmanager、1個或多個taskmanager。

image

5.程序監控

jobmanager、taskmanager均有日志輸出用于查看程序執行進程。

image
image

也可通過k8s master節點ip加上圖中暴露的端口7447訪問flink dashboard.

image

關注公眾號HEY DATA,添加作者微信,一起討論更多。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容