Basic knowledge
第一:docker是一款開源的容器,其實這個技術並不新鮮。早期在linux中就有LXC這樣的輕量級的虛擬化系統。Docker其實只是換了一種語言來實現而已。Kubernetes意思是航海的舵手,它是docker的一款具有強大功能的編排+監控+災備+負載管理系統
第二:kubernetes是基於google十五年的容器使用經驗的總結和最佳實踐,是google內部使用的borg系統的開源版本。改善了docker中很多的不足,可以說是與docker互補的一項技術。
第三:kubernetes和docker一樣是用go語言寫的,這就說明它們契合度非常高
第四:go語言也是google開源的,大公司就是拽。
第五:docker現在是一家公司,以前叫做DotCloud,社區項目叫moby,免費版本叫做
docker CE,企業版本的叫docker EE。
更多信息可以戳我
element
Replications Controller 複製控制器,它的目的只有一個,那就是保活。Replication Controller確保任何時候Kubernetes集羣中有指定數量的pod副本(replicas)在運行
Pod 可以看作是容器的再次封裝,同一個Pod共享一個namespace。其內部通過localhost進行互相通信
Label 標籤是一個很先進的概念,就是通過給容器打上不同的標籤進行區分,後期也可以通過標籤進行識別,從而進行更多的操作
Service是定義一系列Pod以及訪問這些Pod的策略的一層抽象。Service是通過通過Label找到Pod組。
Node
節點可以是物理或者虛擬機器,作爲Kubernetes worker,通常稱爲Minion。每個節點都運行如下Kubernetes關鍵組件:
Kubelet:是主節點代理。
Kube-proxy:Service使用其將鏈接路由到Pod,如上文所述。
Docker或Rocket:Kubernetes使用的容器技術來創建容器。
Kubernetes Master
集羣擁有一個Kubernetes Master。Kubernetes Master提供集羣的獨特視角,並且擁有一系列組件,比如KubernetesAPI Server。API Server提供可以用來和集羣交互的REST端點。master節點包括用來創建和複製Pod的Replication Controller。
Architec
kubernetes大概分爲5個組件
kube-apiserver:是一個水平設計的控制平臺,對外暴露api
etcd:是一個先進的KV存儲,提供後端的存儲功能,類似的還有zookeeper
kube-scheduler:用於根據外部訪問來調度
kube-controller-manager:管理kubelet,運行在管理節點上,用於處理集羣日常任務的後臺線程
原文翻譯
1、節點控制:負責節點下線時的通知和應答
2、複製控制:負責維持在複製控制器中所定義的pods正確數量
3、端點控制:填充端點對象(加入服務,加入pods)
4、服務賬戶和令牌控制:
kubelet:node的管理插件,用來採集node上的相關信息
kube-proxy:用於node上的網絡訪問
結構如下圖:其中的cAdcisor是用於Pod內部的監控。