不寫點什麼就感受本身沒學過同樣。
回憶一下Kubernetes中對應的學習過程node
k8s是一個編排容器的工具,其實也是管理應用的全生命週期的一個工具,從建立應用,應用的部署,應用提供服務,擴容縮容應用,應用更新,都很是的方便,並且能夠作到故障自愈,例如一個服務器掛了,能夠自動將這個服務器上的服務調度到另一個主機上進行運行,無需進行人工干涉。mysql
在Docker技術的基礎上,爲容器化的應用提供部署運行、資源調度、服務發現和動態伸縮等一系列完整功能,提升了大規模容器集羣管理的便捷性。能夠將Docker當作Kubernetes內部使用的低級別組件。Kubernetes不只僅支持Docker,還支持Rocket,這是另外一種容器技術。 使用Kubernetes能夠:nginx
搭建k8s集羣環境步驟git
根據文件建立相應的resourcesql
kubectl create -f 文件名
複製代碼
replace更新替換資源docker
kubectl replace -f 文件名
複製代碼
Delete刪除資源api
kubectl delete -f 文件名
複製代碼
查看pod信息(包括IP和node信息)bash
kubectl get pods -o wide
複製代碼
獲取service信息服務器
kubectl get svc -o wide
複製代碼
查看具體pod詳情,在排錯時尤其實用網絡
kubectl describe pod POD-NAME -n NAMESPACE
複製代碼
查看service詳情
kubectl describe svc SERVICE-NAME -n NAMESPACE
複製代碼
刪除資源的方式不生效,使用強制刪除
kubectl delete pods POD-NAME --grace-period=0 --force
複製代碼
使node歸屬在一個zone上
kubectl label nodes NODE-NAME zone=north
複製代碼
而後在啓動服務yml中增長nodeSelector
nodeSelector:
zone: north
複製代碼
樣例
這裏是有個坑的,正式用K8s部署服務器的時候,最開始一切正常可是,等幾個微服務都部署上去後,次日早上發現全部的服務都重啓了好幾十次,每一個服務都啓動了雙份或者多份,後來請運維人員查,才知道是服務器內存不足致使的,而後就增長了項目啓動的內存優化,設置啓動內存。後續還出現過一次服務器崩了的狀況,是上傳大文件把磁盤佔滿了,而後K8s直接掛掉了。(吸收教訓,之後長點心)
我簡單說一些基本概念,想深刻了解移步 十分鐘帶你理解Kubernetes核心概念(形象的解釋各個組件之間關係的圖和更深刻理解交互過程) 有幾張圖能很好看清交互關係
在k8s裏面,集羣調度的最小單元就是一個pod,一個pod能夠是一個容器,也能夠是多個容器,例如你運行一個程序,其中使用了nginx,使用mysql了,使用了jetty,那麼能夠將這三個使用在同一個pod中,對他們提供統一的調配能力,一個pod只能運行在一個主機上,而一個主機上能夠有多個pod。
Recplication Controller用來管理pod的副本,保證集羣中存在置頂數量的pod副本,集羣中副本的數量大於置頂數量,則會殺掉置頂數量以外的多餘容器數量,反之則會啓動少於置頂數量個數的容器,保證數量不變,replication controller是實現彈性伸縮、動態擴容和滾動升級的核心。
Service是定義一系列Pod以及訪問這些Pod的策略的一層抽象。Service經過Label找到Pod組。由於Service是抽象的,因此在圖表裏一般看不到它們的存在,這也就讓這一律念更難以理解。
k8s中的容器api對象都是經過Label進行 ,label的實質是一系列的k/v鍵值對,label是replication controllerh和service運行的基礎,兩者經過label進行判別node上運行的pod。
物理或者虛擬機器,做爲Kubernetes worker,一般稱爲Minion。每一個節點都運行以下Kubernetes關鍵組件
調度器把未調度的pod經過binding api綁定到節點上。調度器是可插拔的,而且咱們期待支持多集羣的調度,將來甚至但願能夠支持用戶自定義的調度器。
每個節點也運行一個簡單的網絡代理和負載均衡
全部master的持續狀態都存在etcd的一個實例中。這能夠很好地存儲配置數據。由於有watch(觀察者)的支持,各部件協調中的改變能夠很快被察覺。
flannel做爲coreos提供給k8s的組件,在運行過程當中經過與etcd進行通訊獲取整個集羣網段信息並進行子網的二次分配,使得每一個minion節點都能擁有一個惟一的子網網段,進而確保在整個k8s集羣中運行的docker容器都能得到惟一的ip地址。
連接:pan.baidu.com/s/1w3GolQSh… 提取碼:2080