K8s理解初識到應用到理解
不寫點什麼就感覺自己沒學過一樣。
回憶一下Kubernetes中對應的學習過程
是什麼?
k8s是一個編排容器的工具,其實也是管理應用的全生命週期的一個工具,從建立應用,應用的部署,應用提供服務,擴容縮容應用,應用更新,都非常的方便,而且可以做到故障自愈,例如一個伺服器掛了,可以自動將這個伺服器上的服務排程到另外一個主機上進行執行,無需進行人工干涉。
幹什麼?
在Docker技術的基礎上,為容器化的應用提供部署執行、資源排程、服務發現和動態伸縮等一系列完整功能,提高了大規模容器叢集管理的便捷性。可以將Docker看成Kubernetes內部使用的低級別元件。Kubernetes不僅僅支援Docker,還支援Rocket,這是另一種容器技術。 使用Kubernetes可以:
- 自動化容器的部署和複製
- 隨時擴充套件或收縮容器規模
- 將容器組織成組,並且提供容器間的負載均衡
- 很容易地升級應用程式容器的新版本
- 提供容器彈性,如果容器失效就替換它,等等...
怎麼用?
使用階段常用命令
根據檔案建立相應的resource
kubectl create -f 檔名 複製程式碼
replace更新替換資源
kubectl replace -f 檔名 複製程式碼
Delete刪除資源
kubectl delete -f 檔名 複製程式碼
檢視pod資訊(包括IP和node資訊)
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 複製程式碼
內部構造?
我簡單說一些基本概念,想深入瞭解移步 十分鐘帶你理解Kubernetes核心概念 (形象的解釋各個元件之間關係的圖和更深入理解互動過程) 有幾張圖能很好看清互動關係

Pod
在k8s裡面,叢集排程的最小單元就是一個pod,一個pod可以是一個容器,也可以是多個容器,例如你執行一個程式,其中使用了nginx,使用mysql了,使用了jetty,那麼可以將這三個使用在同一個pod中,對他們提供統一的調配能力,一個pod只能執行在一個主機上,而一個主機上可以有多個pod。
Replication Controller
Recplication Controller用來管理pod的副本,保證叢集中存在置頂數量的pod副本,叢集中副本的數量大於置頂數量,則會殺掉置頂數量之外的多餘容器數量,反之則會啟動少於置頂數量個數的容器,保證數量不變,replication controller是實現彈性伸縮、動態擴容和滾動升級的核心。

Service
Service是定義一系列Pod以及訪問這些Pod的策略的一層抽象。Service通過Label找到Pod組。因為Service是抽象的,所以在圖表裡通常看不到它們的存在,這也就讓這一概念更難以理解。

Label
k8s中的容器api物件都是通過Label進行 ,label的實質是一系列的k/v鍵值對,label是replication controllerh和service執行的基礎,二者通過label進行判別node上執行的pod。