91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Flink Native Kubernetes有什么用

發布時間:2021-12-31 10:46:01 來源:億速云 閱讀:292 作者:小新 欄目:大數據

這篇文章主要介紹了Flink Native Kubernetes有什么用,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

回顧Flink Kubernetes

Flink Kubernetes與Flink Native Kubernetes是不同的概覽,先回顧一下Flink Kubernetes:

  1. 如下圖,從1.2版本到目前最新的1.10,Flink官方都給出了Kubernetes上部署和運行Flink的方案: Flink Native Kubernetes有什么用

  2. 在kubernetes上有兩種方式運行flink:session cluster和job cluster,其中session cluster是一套服務可以提交多個任務,而job cluster則是一套服務只對應一個任務;

  3. 下圖是典型的session cluster部署操作,可見關鍵是準備好service、deployment等資源的yaml文件,再用kubectl命令創建: Flink Native Kubernetes有什么用

關于Flink Native Kubernetes

  1. 先對比官方的1.9和1.10版本文檔,如下圖和紅框和藍框所示,可見Flink Native Kubernetes是1.10版本才有的新功能: Flink Native Kubernetes有什么用

  2. 看看Native Kubernetes是如何運行的,如下圖,創建session cluster的命令來自Flink安裝包: Flink Native Kubernetes有什么用

  3. 更有趣的是,提交任務的命令也來自Flink安裝包,就是我們平時提交任務用到<font color="blue">flink run</font>命令,如下圖: Flink Native Kubernetes有什么用

  4. 結合官方給出的提交和部署流程圖就更清晰了:kubernetes上部署了Flink Master,由Flink Client來提交session cluster和job的請求: Flink Native Kubernetes有什么用

Flink Kubernetes和Flink Native Kubernetes的區別

至此,可以小結Flink Kubernetes和Flink Native Kubernetes的區別:

  1. <font color="blue">Flink Kubernetes</font>自1.2版本首次出現,<font color="red">Flink Native Kubernetes</font>自1.10版本首次出現;

  2. <font color="blue">Flink Kubernetes</font>是把JobManager和TaskManager等進程放入容器,在kubernetes管理和運行,這和我們把java應用做成docker鏡像再在kubernetes運行是一個道理,都是用kubectl在kubernetes上操作;

  3. <font color="red">Flink Native Kubernetes</font>是在Flink安裝包中有個工具,此工具可以向kubernetes的Api Server發送請求,例如創建Flink Master,并且可以和Flink Master通訊,用于提交任務,我們只要用好Flink安裝包中的工具即可,無需在kubernetes上執行kubectl操作;

Flink Native Kubernetes在Flink-1.10版本中的不足之處

  1. Flink Native Kubernetes只是Beta版,屬于實驗性質(官方原話:still experimental),<font color="red">請勿用于生產環境!</font>

  2. 只支持session cluster模式(一個常駐session執行多個任務),還不支持Job clusters模式(一個任務對應一個session)

盡管還沒有進入Release階段,但這種操作模式對不熟悉kubernetes的開發者來說還是很友好的,接下來通過實戰來體驗吧;

官方要求

為了體驗Native Kubernetes,flink官方提出了下列前提條件:

  1. kubernetes版本不低于<font color="blue">1.9</font>

  2. kubernetes環境的DNS是正常的

  3. KubeConfig文件,并且這個文件是有權對pod和service資源做增刪改查的(kubectl命令有權對pod和service做操作,也是因為它使用了對應的KubeConfig文件),這個文件一般在kubernetes環境上,全路徑:<font color="blue">~/.kube/config</font>

  4. pod執行時候的身份是service account,這個service account已經通過RBAC賦予了pod的增加和刪除權限;

前面兩點需要您自己保證已達到要求,第三和第四點現在先不必關心,后面有詳細的步驟來完成;

實戰環境信息

本次實戰的環境如下圖所示,一套kubernetes環境(版本是1.15.3),另外還有一臺CentOS7電腦,上面已部署了flink-1.10(這里的部署是說把安裝包解壓,不啟動任何服務): Flink Native Kubernetes有什么用 準備完畢,開始實戰了~

實戰內容簡介

本次實戰是在kubernetes環境創建一個session cluster,然后提交任務到這個sessionc cluster運行,與官方教程不同的是本次實戰使用自定義namespace和service account,畢竟生產環境一般是不允許使用default作為namespace和service account的;

實戰

  1. 在CetnOS7電腦上操作時使用的是root賬號;

  2. 在kubernetes的節點上,確保有權執行kubectl命令對pod和service進行增刪改查,將文件<font color="blue">~/.kube/config</font>復制到CentOS7電腦的<font color="blue">~/.kube/</font>目錄下;

  3. 在kubernetes的節點上,執行以下命令創建名為<font color="blue">flink-session-cluster</font>的namespace:

kubectl create namespace flink-session-cluster
  1. 執行以下命令創建名為<font color="blue">flink</font>的serviceaccount:

kubectl create serviceaccount flink -n flink-session-cluster
  1. 執行以下命令做serviceaccount和角色的綁定:

kubectl create clusterrolebinding flink-role-binding-flink \
  --clusterrole=edit \
  --serviceaccount=flink-session-cluster:flink
  1. SSH登錄部署了flink的CentOS7電腦,在flink目錄下執行以下命令,即可創建名為<font color="blue">session001</font>的session cluster,其中-Dkubernetes.namespace參數指定了namespace,另外還指定了一個TaskManager實例使用一個CPU資源、4G內存、內含6個slot:

./bin/kubernetes-session.sh \
  -Dkubernetes.namespace=flink-session-cluster \
  -Dkubernetes.jobmanager.service-account=flink \
  -Dkubernetes.cluster-id=session001 \
  -Dtaskmanager.memory.process.size=8192m \
  -Dkubernetes.taskmanager.cpu=1 \
  -Dtaskmanager.numberOfTaskSlots=4 \
  -Dresourcemanager.taskmanager-timeout=3600000
  1. 如下圖,控制臺提示創建成功,并且紅框中提示了flink web UI的訪問地址是<font color="blue">http://192.168.50.135:31753</font>: Flink Native Kubernetes有什么用

  2. 下載鏡像和啟動容器需要一定的時間,可以用<font color="blue">kubectl get</font>和<font color="blue">kubectl describe</font>命令觀察對應的deployment和pod的狀態:

Flink Native Kubernetes有什么用 9. pod啟動成功后訪問flink web,如下圖,此時還沒有創建TaskManager,因此Slot為零: Flink Native Kubernetes有什么用 10. 回到CentOS7電腦,在flink目錄下執行以下命令,將官方自帶的<font color="blue">WindowJoin</font>任務提交到session cluster:

./bin/flink run -d \
  -e kubernetes-session \
  -Dkubernetes.namespace=flink-session-cluster \
  -Dkubernetes.cluster-id=session001 \
  examples/streaming/WindowJoin.jar
  1. 控制臺提示提交任務成功: Flink Native Kubernetes有什么用

  2. 頁面上也會同步顯示增加了一個TaskManager,對應6個slot,已經用掉了一個: Flink Native Kubernetes有什么用

  3. 再連續提交5次相同的任務,將此TaskManager的slot用光: Flink Native Kubernetes有什么用

  4. 這時候再提交一次任務,按理來說應該增加一個TaskManager,可是頁面如下圖所示,TaskManager數量還是1,并沒有增加,并且紅框中顯示新增的任務并沒有正常運行起來:

Flink Native Kubernetes有什么用 15. 在kubernetes環境查看pod情況,如下圖紅框所示,有個新建的pod狀態是Pending,看來這就是第七個任務不能執行就是因為這個新建的pod無法正常工作導致的: Flink Native Kubernetes有什么用 16. 再看看這個namespace的事件通知,如下圖紅框所示,名為session001-taskmanager-1-2的pod有一條通知信息:由于CPU資源不足導致pod創建失敗: Flink Native Kubernetes有什么用 17. 窮到沒錢配置kubernetes環境,連一核CPU都湊不齊:

Flink Native Kubernetes有什么用 

18. 一時半會兒也找不出多余的CPU資源,唯一能做的就是降低TaskManager的CPU要求,剛才配置的是一個TaskManager使用一核CPU,我打算降低一半,即0.5核,這樣就夠兩個TaskManager用了; 

19. 您可能會疑惑:怎么會有0.5個CPU這樣的配置?這個和kubernetes的資源限制有關,kubernetes對pod的CPU限制粒度是千分之一個CPU,也是就是在kubernetes中,配置1000單位的CPU表示使用1核,我們配置0.5核,不過是配置了500單位而已(所以我還可以更窮....) 

20. 接下來的操作是先停掉當前的session cluster,再重新創建一個,創建的時候參數-Dkubernetes.taskmanager.cpu的值從1改為0.5 

21. 在CentOS7電腦上執行以下命令,將session cluster停掉,釋放所有資源:

echo 'stop' | \
  ./bin/kubernetes-session.sh \
  -Dkubernetes.namespace=flink-session-cluster \
  -Dkubernetes.cluster-id=session001 \
  -Dexecution.attached=true
  1. 控制臺提示操作成功: Flink Native Kubernetes有什么用

  2. 稍等一分鐘左右,再去查看pod,發現已經全部不見了: Flink Native Kubernetes有什么用

  3. 在CentOS7電腦的flink目錄下,執行以下命令,和之前相比,唯一變化就是-Dkubernetes.taskmanager.cpu參數的值:

./bin/kubernetes-session.sh \
  -Dkubernetes.namespace=flink-session-cluster \
  -Dkubernetes.jobmanager.service-account=flink \
  -Dkubernetes.cluster-id=session001 \
  -Dtaskmanager.memory.process.size=4096m \
  -Dkubernetes.taskmanager.cpu=0.5 \
  -Dtaskmanager.numberOfTaskSlots=6 \
  -Dresourcemanager.taskmanager-timeout=3600000
  1. 從控制臺提示得到新的flink web UI端口值,再訪問網頁,發現啟動成功了: Flink Native Kubernetes有什么用

  2. 像之前那樣提交任務,連續提交7個,這一次很順利,在提交了第七個任務后,新的TaskManager創建成功,7個任務都成功執行了: Flink Native Kubernetes有什么用

  3. 用kubectl describe pod命令查看TaskManager的pod,如下圖紅框所示,可見該pod的CPU用量是500單位,符合之前的推測: Flink Native Kubernetes有什么用 這里再提醒一下,降低CPU用量,意味著該pod中的進程獲取的CPU執行時間被降低,會導致任務執行變慢,所以這種方法不可取,正確的思路是確保硬件資源能滿足業務需求(像我這樣窮到一核CPU都湊不齊的情況還是不多的....)

清理資源

如果已完成Flink Native Kubernetes體驗,想徹底清理掉前面的所有資源,請按照以下步驟操作:

  1. 在web頁面點擊Cancel Job停止正在運行的任務,如下圖紅框: Flink Native Kubernetes有什么用

  2. 在CentOS7電腦上停止session cluster:

echo 'stop' | \
  ./bin/kubernetes-session.sh \
  -Dkubernetes.namespace=flink-session-cluster \
  -Dkubernetes.cluster-id=session001 \
  -Dexecution.attached=true
  1. 在kubernetes節點清理service、clusterrolebinding、serviceaccount、namespace:

kubectl delete service session001 -n flink-session-cluster
kubectl delete clusterrolebinding flink-role-binding-flink
kubectl delete serviceaccount flink -n flink-session-cluster
kubectl delete namespace flink-session-cluster
  1. 所有cluster session相關的ConfigMap、Service、Deployment、Pod等資源,都通過kubernetes的ownerReferences配置與service關聯,因此一旦service被刪除,其他資源被被自動清理掉,無需處理;

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Flink Native Kubernetes有什么用”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

馆陶县| 中西区| 南康市| 遂平县| 洛隆县| 海淀区| 新宾| 于田县| 织金县| 六枝特区| 南丹县| 成武县| 正定县| 宾阳县| 隆化县| 郯城县| 铁岭市| 安顺市| 长白| 营口市| 无为县| 恩施市| 彰化县| 乐东| 赤城县| 车致| 侯马市| 兴隆县| 香河县| 洱源县| 新丰县| 成武县| 河间市| 湾仔区| 远安县| 平和县| 石柱| 京山县| 竹北市| 潮州市| 宁海县|