容器編排,跨集羣部署(腳踩2只船)問題研究

---【前言】---

http://www.javashuo.com/article/p-weyvoayj-nz.htmlhtml

問題來自於博客園,討論容器編排,跨集羣部署(腳踩2只船)問題。node

 

 

---【(腳踩2只船)問題,K8s的解決方案】---

博客園提出「假如整個 kubernetes 集羣宕機怎麼辦?」linux

在個人理解,問題能夠當作「k8s的master崩潰咋辦?」git

這個問題真實存在的。請看:shell

問:「如何刪除namespace下的全部的資源?就是namespace 和她下面的資源 pod development 這些。目前刪除後一直從新恢復?」數據庫

 

老司機都知道,是會有這類的問題。由於這裏環節太多:後端

go調用了http,又調用了其餘pod,和端口,最終又調用了etcd數據庫。api

 

問:「k8s的master崩潰咋辦?」網絡

答:用多master,或重啓master的機子唄。多master理論上還有etcd同步失敗問題。還必須遵照分佈式約束【3master壞1,5master壞2】壞多了,整個就癱瘓了。架構

 

問:「k8s的master崩潰咋辦?」

答:用多個集羣也行。就像文章開頭博客園那樣。不過,我我的以爲,應該是創建2套,毫無關聯的集羣k8s集羣,而後從外部lb,給這兩個集羣轉發流量。這裏以博客園爲例:

原來:

阿里雲lb---》k8s master1-》master1內部的負載均衡,master1內部的dns---》pod

 

如今:

阿里雲lb---》k8s master1-》master1內部的負載均衡,master1內部的dns---》pod

阿里雲lb---》k8s master2-》master1內部的負載均衡,master2內部的dns---》pod

 

這樣就達到了,文章最初的目的:容器編排跨集羣部署(腳踩2只船)。下面我來談談,k4t對這個問題的解法。

 

---【(腳踩2只船)問題,k4t的解決方案】---

問:「k4t的master崩潰咋辦?」

答:k4t基本不會崩潰。理由以下:

1 K4t調用的環節少。Linux文件目錄,壞的概率比較小。K4t的數據庫是一堆【目錄】和【xml文本文件】組成的樹形目錄結構。請問你家linux的文件或目錄,崩吧總壞嗎?退一萬步說,文件目錄壞了,也好修理恢復啊。

2 經過按期同步數據庫目錄,到master2,便可實現【單個集羣k4t高可用】。比k8s集羣至少3臺機子節省硬件。尚未【3壞1,5壞2】約束。

3 k4t不用虛擬網絡veth,沒有相關組件,天生就比k8s穩定。

4 程序代碼引擎是linux版powershell,powershell進程掛了,重啓一個powershell便可。就是這麼簡單粗暴。

5 根據下面【附錄:k4t組件介紹】中的說明,k4t的master機,實際上稱做【部署機子】更合適。K4t的部署機子,部署完應用後,便可關機。待下次須要變動部署,或者新增、刪除、部署時再開機便可。也就是說k4t-master機掛了無所謂。

而k4t真正的master機,實際上是負載均衡機。須要對負載均衡機進行高可用,具體作法,在本篇文章中,就很少談了。

 

問:容器編排,跨集羣部署(腳踩2只船)。k4t和k8s有啥區別?

答:根據下面【附錄:k4t組件介紹】中的說明,k4t的負載均衡機(envoy api-getway)是在外部的。k4t的dns機也是在外部的。這就是k4t集羣,和k8s集羣,去解決(腳踩2只船)問題最大的不一樣。

 

下面,我以腳踩3只船,來說解k4t的跨集羣部署,和k8s的區別。

系統架構:

集羣1:master1,帶node1,node2

集羣2:master2,帶node3,node4

集羣3:master3,帶node5,node6

集羣123,共用同一個【負載均衡器1】。共用同一個【dns1】。

 

用戶流量:

阿里雲lb---》【k4t負載均衡器1】---》node1,node2,node3上的ip---》node1,node2,node3上的容器

阿里雲lb---》【k4t dns1】---》node1,node2,node3上的ip---》node1,node2,node3上的容器

須要說明的是:k4t的dns,是非必要組件。K4t集羣,能夠只用負載均衡api-getway。

 

命令目的:把當集羣1內,應用1,的容器1,的ip,註冊到負載均衡集羣。

命令:

ssh root@你的k4y的負載均衡器的ip pwsh -f /etc/envoy_ps1/add-eds.ps1 -cname 'abc1' -ip 1.2.3.4 -port 80

 

說明:

1 這個命令,由【在node上的k4t-node引擎】發出,被k4t負載均衡器接收。與用戶無關,用戶也不須要寫任何代碼。

2 命令不分集羣,2個集羣的命令沒差異。

3 -cname 'abc1' ,表明應用1的名字。2個集羣的命令沒差異。固然了,這裏算是好處。固然也有壞處,2個集羣的2個應用,若不是同一應用,則不該該重名。

4 -ip 1.2.3.4 表明容器1的ip。2個集羣的命令沒差異。固然了,2個集羣的2個容器,ip必須不一樣。這個值來自於node內的ip設定。2個集羣內,Node內的ip不能重複。

 

結論:

K4t的負載均衡器,和k4t的dns,具備同時對多個【k4t容器集羣】服務的能力。

對【多個k4t容器集羣】和對【單個k4t容器集羣】操做,徹底相同!不須要任何額外的設置。

 

---【附錄:k4t簡介】---

k4t即:《kaiiit生產級別的容器編排系統》  

https://gitee.com/chuanjiao10/k4t

預計2021年6月發佈alphi1版

中文名:《海賊帝·優秀的怕被沽溝暗殺·黑毛腿》

中文別名:《ps1倚天劍》

 

這是一套基於《卡死你3000》打造的,全功能,容器集羣的自動化部署、擴容以及運維的平臺。(國產k8s)。它採用開放式架構,具備網絡簡單穩定,使用簡單,腳本操控靈活的特色。

powershell傳教士 業餘時間 做品

羣名稱:k4t官方1羣  羣   號:722528388

 

---【附錄:k4t 組件介紹】---

 問:完美版的k4t項目,由哪幾部分組件構成?

 答:

 1 master端。 正在開發中,預計2021年6月前發佈alphi1版。

 2 node端。已經開發完成,並部分開源免費成爲雛形版。

 3 動態負載均衡api網關。(外部)

提供反向代理,和負載均衡功能。用於給一組容器應用,造成統一的ip。

目前基於我編寫的envoy後端增刪腳本。

https://gitee.com/chuanjiao10/envoy_powershell

你也可diy,改爲本身喜歡的。

 

 4 動態dns。(外部)

是非必要組件。K4t集羣,能夠只用負載均衡器api-getway。

用於給一組容器應用,造成統一的服務名字。

目前基於未激活的無圖win2019。固然有圖版win2019也行。你也可diy,改爲本身喜歡的。例如:dnsmasq

 

---【後記】---

我滴媽呀,這個世界變化太快,微服務,容器都要腳踩2只船了,謝謝觀看。

相關文章
相關標籤/搜索