http://www.javashuo.com/article/p-weyvoayj-nz.htmlhtml
問題來自於博客園,討論容器編排,跨集羣部署(腳踩2只船)問題。node
博客園提出「假如整個 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對這個問題的解法。
問:「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即:《kaiiit生產級別的容器編排系統》
https://gitee.com/chuanjiao10/k4t
預計2021年6月發佈alphi1版
中文名:《海賊帝·優秀的怕被沽溝暗殺·黑毛腿》
中文別名:《ps1倚天劍》
這是一套基於《卡死你3000》打造的,全功能,容器集羣的自動化部署、擴容以及運維的平臺。(國產k8s)。它採用開放式架構,具備網絡簡單穩定,使用簡單,腳本操控靈活的特色。
powershell傳教士 業餘時間 做品
羣名稱:k4t官方1羣 羣 號:722528388
問:完美版的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只船了,謝謝觀看。