k8s集羣啓動了上萬個容器(一個pod裏放上百個容器,起百個pod就模擬出上萬個容器)服務器超時,沒法操做的解決辦法

問題說明:node

一個POD裏放了百個容器,而後讓K8S集羣部署上百個POD,獲得可運行上萬個容器的實驗目的。docker

實驗環境:3臺DELL裸機服務器,16核+64G,硬盤容量忽略吧,上T了,確定夠。數據庫

1.一開始運行5000多個容器的時候(也就50個POD),集羣部署後,10幾分鐘就起來了,感受還不錯。服務器

2.增長壓力,把50個POD增長到100個POD,感受也不會很長時間,都等到下班後又過了半個小時,仍是沒有起來,集羣連接緩慢,使用kubect裏面的命令,很久都出不來信息,UI界面顯示服務器超時。ssh

心想,完了,起不來了,把服務器撐死了。讓其晚上慢慢啓動吧,明天早上查看。spa

 

 

噹噹噹,早上來上班了資源

打開服務器,使用SSH鏈接 master 節點,挺好,鏈接挺快,使用kubectl命令獲取pods 信息,竟然報服務器錯誤了,基本都是服務器超時的錯誤。……部署

而後用ssh鏈接 node 節點,直接連不上,本地一致在轉圈圈,去機房接顯示屏鏈接,直接也沒有反應。get

這下子壞了,難道要從新裝服務器了,鍵盤鼠標 CPU都給他分配資源了。這不壞了嘛。。ast

 

敲重點……還好,master節點很好,能夠鏈接。這一點Kubernetes作的比較好(我三臺服務器的配置同樣),有Master節點在就不用擔憂。

 

解決方案,上網,問大神,給的方法是 用etcd ,進入集羣的專用數據庫etcd,刪除其POD,而後讓服務器轉起來

又呵呵了,對與我這樣的小白,壓根都不會ETCD數據庫,K8S集羣纔剛搭建起來玩玩,怎麼會那麼高深的操做。

這下會不會被炒魷魚!!!!!!!!

 

忽然想到了一個絕招 ,用Docker 呀,看看Docker 是否好用,這也是本次實驗的殺手鐗了。。下面開始着重講述了

1.鏈接master節點,而後輸入docker images 和docker ps  和docker ps -a 命令也就會這三個,下了一跳 ,上萬個容器僵死在那裏,怪不得服務器起不來,上圖

 

 

2.先把全部的容器 stop掉 ,或者把你認爲想stop掉的容器均可以停掉,看下 面個人操做

 1 docker stop $(docker ps -q -f name=k8s_hello-ros-10*) //就是中止掉前綴名字爲 k8s_hello-ros-10 的容器

3.把停到的容器 刪除掉,容器太多,這一步運行的有點慢(上面的代碼和此次代碼作了一個合併)

 1 docker stop $(docker ps -q -f name=k8s_hello-ros-10*) & docker rm $(docker ps -aq -f name=k8s_hello-ros-10*) 

 

4.處理完以後,迅速回到Master節點的kubectl命令下,此時K8S集羣有反應了,先把你的建立的pod時用的yaml 文件刪除,輸入命令

 1 kubuetc delete -f XXX.yaml 

5. 刪除你的部署名,由於我是建立POD時,使用Deployments 部署的,因此刪除部署,省的根據副本控制器本身又建立POD,那又陷入死循環了

 1 1. kubeclt get deployments -n namespace名字 2 2.找到命令空間,刪除 3 kubectl delete deployemtns XXX -n XXX命名空間 

6.準備關機重啓吧

先關閉NODE節點機,再關閉MASTER機器,重啓看看吧

 

順利成功,K8S集羣啓動後,原先的POD已所有刪除,剩下了系統要用的POD,集羣正常運轉。

一次危機就這麼化解了……

 

而後又部署了5000個容器,不敢玩大了,下面圖

相關文章
相關標籤/搜索