本篇文章給大家分享的是有關Bare Metal K8S集群是怎樣在Chick-fil-A 大規(guī)模使用的,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
創(chuàng)新互聯(lián)專注于企業(yè)網(wǎng)絡營銷推廣、網(wǎng)站重做改版、興安網(wǎng)站定制設計、自適應品牌網(wǎng)站建設、H5響應式網(wǎng)站、商城網(wǎng)站制作、集團公司官網(wǎng)建設、外貿(mào)營銷網(wǎng)站建設、高端網(wǎng)站制作、響應式網(wǎng)頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為興安等各大城市提供網(wǎng)站開發(fā)制作服務。
美國快餐連鎖店Chick-fil-A在其2000多家餐廳的邊緣計算中使用著Kubernetes,在規(guī)模上看,這意味著有大約6000臺設備上同時運行著Kubernetes。其中與此相關的最大的一個挑戰(zhàn)是:如何在餐廳的物理機上部署和管理這么多Kubernetes集群。本文由Chick-fil-A的技術團隊所寫,分享他們在Kubernetes集群管理技術選型、物理機上Kubernetes集群的安裝和管理方面的經(jīng)驗。
大多數(shù)情況下,Kubernetes都在云中部署,或由熟練Kubernetes的技術人員在物理機上部署(再或者至少配有遠程訪問)。但對Chick-fil-A而言,我們的Kubernetes部署是由那些僅關注初始硬件安裝的安裝人員完成的。因為其自啟動的特性,它們從不需要直接連接到計算設備——而是連接以太網(wǎng)和電源線,并通過查看應用程序app來檢查集群的狀態(tài) 。整個替換過程由對技術并不太專業(yè)的餐廳老板/運營者或他們的團隊完成。
最大的挑戰(zhàn)是,我們的邊緣計算部署并不完全在“數(shù)據(jù)中心環(huán)境”中。
集群管理:我們考慮過的選擇
為了解決集群管理的挑戰(zhàn),我們做過全面的技術調(diào)研,曾考慮過如下幾個選項:
Kubespray - 我們最開始調(diào)查了基于Ansible的Kubespray,但我們發(fā)現(xiàn)它相當脆弱。當事情進展順利時,我們能得到了一個集群;但當事情進展不太順利時,我們就會創(chuàng)建一塊難以變回計算機的“磚塊”。我們還發(fā)現(xiàn)使用Kubespray啟動集群的過程非常緩慢,通常在我們的硬件棧上花費的時間長達30分鐘。我們相信Kubespray能有更長遠的發(fā)展,但就我們的調(diào)研結果而言,我們認為得從別的方向探索別的解決方案。
Openshift - Openshift可以創(chuàng)建Kubernetes集群,但我們不喜歡在至關重要的基礎設施部分跟供應商的解決方案捆綁地太過緊密,不想承擔未來可能被技術鎖定的風險。
Kops - 我們是Kops的忠實粉絲,我們用它來部署我們云的“控制面板”Kubernetes集群。不幸的是,當我們將其使用到我們的邊緣計算中時,Kops并不是一個可行的裸機解決方案。我們期待看到它在未來的發(fā)展。
Kubeadm - Kubeadm是另一個不錯的Kubernetes集群實用程序。Kubeadm項目看起來很有發(fā)展前景,但我們認為它比一些替代品 (尤其在其靈活性上)復雜的多,包括...
RKE
就我們目前的選擇而言,RKE是最終贏家。RKE是由Rancher Labs提供的開源的Kubernetes集群管理引擎。雖然我們暫時未使用Rancher 2.0來管理我們的集群,但我們確實喜歡使用RKE來初始化和維護集群的簡單性。
要使用RKE,你需要確定一個領導節(jié)點并為其提供一個配置YAML文件,YAML文件中包含有關該集群的數(shù)據(jù),主要是參與集群活動的節(jié)點的主機名。
如果集群中的節(jié)點發(fā)生添加、刪除、或死亡,則配置文件需要擁有一個對當前和未來節(jié)點的準確描述。如果配置不能保持持續(xù)最新,集群就會失敗。雖然我們認為缺少節(jié)點不應該使群集初始化/更新失敗,但目前來看實際情況正是如此。
安裝過程
我們在餐廳的安裝過程非常簡單——將設備拆箱,將其插入電源和標記的交換機端口,就是這樣。它們會自動啟動電源,并實現(xiàn)自引導和集群創(chuàng)建。RKE讓非技術用戶能夠在不了解Kubernetes甚至整體架構的情況下,通過無比簡單的過程執(zhí)行安裝和替換的工作,這一體驗非常棒,不過它也確實需要一些更復雜的引導過程。
尚未被納入集群的節(jié)點之間,需要彼此協(xié)調(diào)以確定誰將被納入到集群中。他們還需要選出一個主節(jié)點來通過RKE執(zhí)行集群創(chuàng)建。
Highlander
為了解決這個問題,我們開發(fā)了Highlander。因為我們只能有一個集群發(fā)起者。
Highlander是我們基礎邊緣鏡像的一部分。當每個節(jié)點啟動時,UDP會廣播其存在并詢問是否存在已建立的領導者。它也會開始傾聽自己。幾秒鐘后沒有回復,它將發(fā)送另一個廣播,宣布自己成為領導者。有什么異議嗎?如果沒有反對的訊息,該節(jié)點將很快成為集群領導者,并以領導者身份回應未來接收到的所有請求。
如果另一個節(jié)點已經(jīng)聲明了自己領導者的角色,新節(jié)點將確認該聲明?,F(xiàn)有的領導者會執(zhí)行“RKE up”將新節(jié)點納管到現(xiàn)有的集群中。
節(jié)點們會定期溝通以確保領導者仍在其中。如果舊領導者已經(jīng)死亡,一個新的領導者將通過一個使用隨機睡眠和領導聲明的簡單協(xié)議來選舉而出。雖然這很簡單不復雜,容易推理和理解,但它能實現(xiàn)成規(guī)模地有效工作。
領導者選舉完成后,Highlander還能確保集群被正確得配置。在我們的環(huán)境中,這包括:
? 將 KubeDNS切換成CoreDNS
? 創(chuàng)建Istio或其他核心控制面板節(jié)點
? OAuth身份認證
注意:我們的每個節(jié)點都有自己的身份和短暫的JWT來訪問已驗證的資源。Highlander提供此身份,并以Kubernetes秘鑰的形式來提供token令牌。
整合過程
盡管我們在文中主要關注集群初始化,接下來我們也介紹一下在餐廳中實時進行節(jié)點初始化的整個流程。
以上就是Bare Metal K8S集群是怎樣在Chick-fil-A 大規(guī)模使用的,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學到更多知識。更多詳情敬請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。