kubernetes 分布式集群架構(gòu)
一,kubernetes?分布式集群架構(gòu)



服務(wù)注冊和服務(wù)發(fā)現(xiàn)問題怎么解決的?
每個(gè)服務(wù)分配一個(gè)不變的虛擬IP+端口
系統(tǒng)env環(huán)境變量里有每個(gè)服務(wù)的服務(wù)名稱到IP的映射

'scheme' => 'tcp',
'host' => getenv('REDIS_MASTER_SERVICE_HOST') ,
'port' => $read_port,
]);?




二,kubernetes集群架構(gòu)例子


1.創(chuàng)建redis-master Pod和服務(wù)


2. 創(chuàng)建redis-slave Pod和服務(wù)



3. 創(chuàng)建frontend Pod和服務(wù)



經(jīng)過上面的三個(gè)步驟,我們終于成功實(shí)現(xiàn)了留言板系統(tǒng)在Kubernetes
上的部署工作,現(xiàn)在到了一起來見證成果的時(shí)刻了,在你的筆記本上
打開瀏覽器,輸入下面的URL:
http://虛擬機(jī)IP:30001
如果看到如圖1.4所示的網(wǎng)頁,并且看到網(wǎng)頁上有一條留言——“Hello
World!”,那么恭喜你,之前的努力沒有白費(fèi),如果看不到這個(gè)網(wǎng)頁,
可能有幾個(gè)原因,比如防火墻的問題,無法訪問30001端口,或者因
為你是代理上網(wǎng),瀏覽器錯(cuò)把虛機(jī)的IP地址當(dāng)成遠(yuǎn)程地址了,如果這
種情況無法解決,那么也可以在虛機(jī)上直接運(yùn)行 curl localhost:30001
來驗(yàn)證此端口是否能被訪問,如果還是不能訪問,那么這肯定不是機(jī)
器的問題…?
三,集群運(yùn)維常見問題
1,資源隔離與調(diào)度問題

2,擴(kuò)容與升級(jí)問題

3,資源配額問題

當(dāng)Kubernetes啟動(dòng)一個(gè)容器時(shí),會(huì)將CPU配額值乘以1024并轉(zhuǎn)為整數(shù)傳遞給docker run的--cpu-shares參數(shù),之所以乘以1024是因?yàn)镈ocker的cpu-shares參數(shù)是以1024?為基數(shù)計(jì)算CPU時(shí)間的。另外,Docker官方文檔里解釋說cpu-shares是一個(gè)相對(duì)權(quán)重值?(relative weight),因此Kubernetes官方文檔里解釋cpu: 0.5表示該容器占用0.5個(gè)CPU計(jì)算時(shí)間的說法其實(shí)是不準(zhǔn)確的。僅當(dāng)該節(jié)點(diǎn)是單核心CPU而且只運(yùn)行兩個(gè)容器,每個(gè)容器的CPU配額設(shè)定為0.5時(shí),上述說法才成立。假如一個(gè)節(jié)點(diǎn)上同時(shí)運(yùn)行了3個(gè)容器A,B,C,其中A容器的CPU配額設(shè)置為1,B與C設(shè)置為0.5。那么,當(dāng)系統(tǒng)的CPU利用率達(dá)到100%時(shí),A容器只占用了1*100/(1+0.5+0.5)=50%的CPU時(shí)間,而B與C分別占用25%的CPU時(shí)間。如果此時(shí)我們加入一個(gè)新的容器D,它的CPU配額也設(shè)置為1,則通過計(jì)算我們得到A此時(shí)只占據(jù)33%的CPU時(shí)間。對(duì)于目前主流的多核CPU,容器的CPU配額會(huì)在多核心上進(jìn)行承擔(dān)。因此在多核CPU上,即使某個(gè)容器聲明CPU<1,它也可能會(huì)占滿多個(gè)CPU核。例如2個(gè)設(shè)定cpu=0.5的容器運(yùn)行在4核的CPU上,每個(gè)容器可能會(huì)用光4*0.5/(0.5+0.5)=2個(gè)CPU核。
4,私有docker registry
