【flink】flink1.12 application mode on k8s


補充上一篇沒有講到的內容。

k8s節點之間的通信

k8s有一個名為kube-apiserver的進程,該進程運行在Master上。這個進程提供了一個rest服務,所有的操作例如pod、service的增刪改查watch的操作都是基於此接口執行的。agent機器上的kubectl其實也是基於該rest接口操作的。所以其實無論spark還是flink,它的命令提交都是通過http的方式去提交指令的。這意味着啟動flink和spark的client不需要k8s的master或者agent上運行。在目前使用的庫上,flink和spark都是先去~/.kube里面去找認證文件,然后通過http的方式攜帶認證提交命令的。

flink on k8s簡單原理

flink client會創建一個deployment,該deployment會創建jobmanager和一個rest用於訪問的頁面。然后會掛載一個configMap,該configMap中包含了提交任務的命令和提交任務的client的conf里面相關內容。

deployment創建jobmanager的pod,然后根據configMap在jobmanager的pod啟動taskmanager的pod。整個機制大概是這樣的

日志回收問題

按照官方說法,為了節省資源,tm在運行完成之后,所在pod會被直接銷毀。

所以簡單的方式是將flink的log方式改為logback,默認是log4j。然后追加es或者kafka的appender

這里操作比較復雜,需要刪除原本鏡像的log4j包。

 由於項目過去一段時間,具體操作未及時更新,后面再補。

 

以上


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM