---【前言】---
https://www.cnblogs.com/cmt/p/14306142.html
問題來自于博客園,討論容器編排,跨集群部署(腳踩2只船)問題,
---【(腳踩2只船)問題,K8s的解決方案】---
博客園提出“假如整個 kubernetes 集群宕機怎么辦?”
在我的理解,問題可以看成“k8s的master崩潰咋辦?”
這個問題真實存在的,請看:
問:“如何洗掉namespace下的所有的資源?就是namespace 和她下面的資源 pod development 這些,目前洗掉后一直重新恢復?”
老司機都知道,是會有這類的問題,因為這里環節太多:
go呼叫了http,又呼叫了其他pod,和埠,最終又呼叫了etcd資料庫,
問:“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只船了,謝謝觀看,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/252512.html
標籤:其他
