真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

FlinkNativeKubernetes有什么用

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

在源城等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站制作、成都做網(wǎng)站、外貿(mào)營(yíng)銷網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需定制制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),成都營(yíng)銷網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站建設(shè),源城網(wǎng)站建設(shè)費(fèi)用合理。

回顧Flink Kubernetes

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

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

  2. 在kubernetes上有兩種方式運(yùn)行flink:session cluster和job cluster,其中session cluster是一套服務(wù)可以提交多個(gè)任務(wù),而job cluster則是一套服務(wù)只對(duì)應(yīng)一個(gè)任務(wù);

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

關(guān)于Flink Native Kubernetes

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

  2. 看看Native Kubernetes是如何運(yùn)行的,如下圖,創(chuàng)建session cluster的命令來自Flink安裝包: Flink Native Kubernetes有什么用

  3. 更有趣的是,提交任務(wù)的命令也來自Flink安裝包,就是我們平時(shí)提交任務(wù)用到flink run命令,如下圖: Flink Native Kubernetes有什么用

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

Flink Kubernetes和Flink Native Kubernetes的區(qū)別

至此,可以小結(jié)Flink Kubernetes和Flink Native Kubernetes的區(qū)別:

  1. Flink Kubernetes1.2版本首次出現(xiàn),Flink Native Kubernetes1.10版本首次出現(xiàn);

  2. Flink Kubernetes是把JobManager和TaskManager等進(jìn)程放入容器,在kubernetes管理和運(yùn)行,這和我們把java應(yīng)用做成docker鏡像再在kubernetes運(yùn)行是一個(gè)道理,都是用kubectl在kubernetes上操作;

  3. Flink Native Kubernetes是在Flink安裝包中有個(gè)工具,此工具可以向kubernetes的Api Server發(fā)送請(qǐng)求,例如創(chuàng)建Flink Master,并且可以和Flink Master通訊,用于提交任務(wù),我們只要用好Flink安裝包中的工具即可,無需在kubernetes上執(zhí)行kubectl操作;

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

  1. Flink Native Kubernetes只是Beta版,屬于實(shí)驗(yàn)性質(zhì)(官方原話:still experimental),請(qǐng)勿用于生產(chǎn)環(huán)境!

  2. 只支持session cluster模式(一個(gè)常駐session執(zhí)行多個(gè)任務(wù)),還不支持Job clusters模式(一個(gè)任務(wù)對(duì)應(yīng)一個(gè)session)

盡管還沒有進(jìn)入Release階段,但這種操作模式對(duì)不熟悉kubernetes的開發(fā)者來說還是很友好的,接下來通過實(shí)戰(zhàn)來體驗(yàn)吧;

官方要求

為了體驗(yàn)Native Kubernetes,flink官方提出了下列前提條件:

  1. kubernetes版本不低于1.9

  2. kubernetes環(huán)境的DNS是正常的

  3. KubeConfig文件,并且這個(gè)文件是有權(quán)對(duì)pod和service資源做增刪改查的(kubectl命令有權(quán)對(duì)pod和service做操作,也是因?yàn)樗褂昧藢?duì)應(yīng)的KubeConfig文件),這個(gè)文件一般在kubernetes環(huán)境上,全路徑:~/.kube/config

  4. pod執(zhí)行時(shí)候的身份是service account,這個(gè)service account已經(jīng)通過RBAC賦予了pod的增加和刪除權(quán)限;

前面兩點(diǎn)需要您自己保證已達(dá)到要求,第三和第四點(diǎn)現(xiàn)在先不必關(guān)心,后面有詳細(xì)的步驟來完成;

實(shí)戰(zhàn)環(huán)境信息

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

實(shí)戰(zhàn)內(nèi)容簡(jiǎn)介

本次實(shí)戰(zhàn)是在kubernetes環(huán)境創(chuàng)建一個(gè)session cluster,然后提交任務(wù)到這個(gè)sessionc cluster運(yùn)行,與官方教程不同的是本次實(shí)戰(zhàn)使用自定義namespace和service account,畢竟生產(chǎn)環(huán)境一般是不允許使用default作為namespace和service account的;

實(shí)戰(zhàn)

  1. 在CetnOS7電腦上操作時(shí)使用的是root賬號(hào);

  2. 在kubernetes的節(jié)點(diǎn)上,確保有權(quán)執(zhí)行kubectl命令對(duì)pod和service進(jìn)行增刪改查,將文件~/.kube/config復(fù)制到CentOS7電腦的~/.kube/目錄下;

  3. 在kubernetes的節(jié)點(diǎn)上,執(zhí)行以下命令創(chuàng)建名為flink-session-cluster的namespace:

kubectl create namespace flink-session-cluster
  1. 執(zhí)行以下命令創(chuàng)建名為flink的serviceaccount:

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

kubectl create clusterrolebinding flink-role-binding-flink \
  --clusterrole=edit \
  --serviceaccount=flink-session-cluster:flink
  1. SSH登錄部署了flink的CentOS7電腦,在flink目錄下執(zhí)行以下命令,即可創(chuàng)建名為session001的session cluster,其中-Dkubernetes.namespace參數(shù)指定了namespace,另外還指定了一個(gè)TaskManager實(shí)例使用一個(gè)CPU資源、4G內(nèi)存、內(nèi)含6個(gè)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. 如下圖,控制臺(tái)提示創(chuàng)建成功,并且紅框中提示了flink web UI的訪問地址是http://192.168.50.135:31753Flink Native Kubernetes有什么用

  2. 下載鏡像和啟動(dòng)容器需要一定的時(shí)間,可以用kubectl getkubectl describe命令觀察對(duì)應(yīng)的deployment和pod的狀態(tài):

Flink Native Kubernetes有什么用 9. pod啟動(dòng)成功后訪問flink web,如下圖,此時(shí)還沒有創(chuàng)建TaskManager,因此Slot為零: Flink Native Kubernetes有什么用 10. 回到CentOS7電腦,在flink目錄下執(zhí)行以下命令,將官方自帶的WindowJoin任務(wù)提交到session cluster:

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

  2. 頁面上也會(huì)同步顯示增加了一個(gè)TaskManager,對(duì)應(yīng)6個(gè)slot,已經(jīng)用掉了一個(gè): Flink Native Kubernetes有什么用

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

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

Flink Native Kubernetes有什么用 15. 在kubernetes環(huán)境查看pod情況,如下圖紅框所示,有個(gè)新建的pod狀態(tài)是Pending,看來這就是第七個(gè)任務(wù)不能執(zhí)行就是因?yàn)檫@個(gè)新建的pod無法正常工作導(dǎo)致的: Flink Native Kubernetes有什么用 16. 再看看這個(gè)namespace的事件通知,如下圖紅框所示,名為session001-taskmanager-1-2的pod有一條通知信息:由于CPU資源不足導(dǎo)致pod創(chuàng)建失?。?Flink Native Kubernetes有什么用 17. 窮到?jīng)]錢配置kubernetes環(huán)境,連一核CPU都湊不齊:

Flink Native Kubernetes有什么用 

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

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

20. 接下來的操作是先停掉當(dāng)前的session cluster,再重新創(chuàng)建一個(gè),創(chuàng)建的時(shí)候參數(shù)-Dkubernetes.taskmanager.cpu的值從1改為0.5 

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

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

  2. 稍等一分鐘左右,再去查看pod,發(fā)現(xiàn)已經(jīng)全部不見了: Flink Native Kubernetes有什么用

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

./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. 從控制臺(tái)提示得到新的flink web UI端口值,再訪問網(wǎng)頁,發(fā)現(xiàn)啟動(dòng)成功了: Flink Native Kubernetes有什么用

  2. 像之前那樣提交任務(wù),連續(xù)提交7個(gè),這一次很順利,在提交了第七個(gè)任務(wù)后,新的TaskManager創(chuàng)建成功,7個(gè)任務(wù)都成功執(zhí)行了: Flink Native Kubernetes有什么用

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

清理資源

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

  1. 在web頁面點(diǎn)擊Cancel Job停止正在運(yùn)行的任務(wù),如下圖紅框: 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節(jié)點(diǎn)清理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相關(guān)的ConfigMap、Service、Deployment、Pod等資源,都通過kubernetes的ownerReferences配置與service關(guān)聯(lián),因此一旦service被刪除,其他資源被被自動(dòng)清理掉,無需處理;

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Flink Native Kubernetes有什么用”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!


本文題目:FlinkNativeKubernetes有什么用
標(biāo)題鏈接:http://weahome.cn/article/jsoogh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部