1.master
(1)指集群控制節點,每個集群中至少有乙個master負責集群的管理和控制。k8s集群中所有的控制命令都發給master節點,它負責具體的執行過程。master若不可用,對於集群的管理都將失效。
(2)master節點上執行的關鍵程序
kube-apiserver:提供http rest介面的關鍵服務程序,是k8s裡所有資源的增刪改查的操作的唯一入口,也是集群控制的入口程序。
kube-controller-manager:k8s裡所有資源物件的自動化控制中心。
kube-scheduler:負責資源排程(pod排程)的程序。
(3)etcd資料庫:儲存master節點上所有資源物件的資料。
2.node
(1)除了master外,集群中其他機器被稱為node。node作為k8s集群中的工作負載節點,每個node會被master分配工作負載,當node宕機時,上面的工作負載會被master自動轉移到其他node。
(2)node節點上執行的關鍵程序
kubelet:負責pod對應容器的建立、啟停等任務,同時與master合作,實現集群管理的基本功能。
kube-proxy:實現k8s service的通訊與負載均衡機制的重要元件。
docker engine:docker引擎,負責本機的容器建立和管理工作。
(3)node可以在執行期間動態增加到k8s集群中,但前提是節點上已經正確安裝、配置和啟動了上面的程序。預設kubelet會向master註冊自己,這也是k8s推薦的node管理方式。一旦node被納入集群管理範圍,kubelet程序就會定時向master匯報自身情況,例如作業系統、docker版本、cpu和記憶體,當前有哪些pod在執行,這樣master就能獲取每個pod的資源使用情況,實現高效均衡的資源排程策略。同時若node在指定資訊內不向master上報資訊,就會被master判定為「失聯」,此時node的狀態就會被標記為「not ready」(不可用)。隨後master會觸發「工作負載轉移」。
$kubectl get nodes 檢視集群中有多少node
$kubectl describe nodes 檢視node的詳細資訊
3.pod
(1)pod是k8s為了解決兩個難題設計出來的。1.將一組容器作為乙個單元時,不能對「整體」進行判斷,此時引入業務無關且不易死亡的pause容器作為pod的根容器,以它的狀態代表整個容器組的狀態。2.pod之間的多個業務容器共享pause容器的ip,共享pause容器掛載的volume。這樣能簡化業務之間的通訊問題,也解決了他們之間的檔案共享。
(2)k8s為每個pod都分配了唯一的ip位址,稱為pod ip,容器中的多個容器共享pod ip.(k8s要求底層網路支援集群內任意兩個pod之間的tcp/ip直接通訊,這是採用虛擬二層技術實現,如:flannel、openvswitch)。總之,在k8s集群中,乙個pod裡容器能直接和另外主機的pod進行通訊。
(3)pod分為兩種型別:普通pod和靜態pod(static pod),靜態pod很特殊,不被存放在kubernetes的etcd儲存裡,而是被存放在某個node的檔案上,並且後續只在此node上啟動、執行。而且普通的pod一旦被建立,就會被放到etcd儲存,隨後會被master排程到某個node上進行繫結(binding),隨後該pod被對應的node上的kubelet程序例項化成一組相關的docker容器並啟動。
排程是指:如果pod裡的某個容器停止時,k8s會自動檢測到這個問題並重新啟動這個pod(即重啟pod裡所有容器),如果pod所在的node宕機,就會將這個node上所有的pod排程到其他節點。
(4)k8s所有資源都能用yaml或json格式的檔案來定義或描述
k8s基本概念
前期對springboot springcloud的config eruka fein hystrix以及docker都有了一定的了解,後邊想重點學習一下k8s,個人認為前邊這些最後再加上k8s才是微服務最好的實踐方案,這也是學習k8s的最初原因。對我來講學習乙個新框架最重要的要知道這個東西,怎麼來...
k8s基本概念
最近在看 kubernates權威指南 寫的確實好,能讓你對各種概念有個詳細的了解。1 節點的概念 k8s集群有兩類節點 master節點 與 node節點 非master master節點 是集群控制節點,是集群的大腦。其上面會有四個關鍵的程序 node節點 可以理解為集群工作負載節點,docke...
K8S基本概念
kubernetes master node 如果大家對諸如hadoop這樣的分布式集群有所了解,就會發現k8s的設計理念和其他分布式架構的非常類似的 master節點負責接收使用者的指令 分配任務以及記錄各個node的情況 而node節點負責接收master的指令,啟動相應的pod k8s的最小執...