其主要功能如下:
1) 用戶不需要關心需要多少台機器,只需要關心軟件(服務)運行所需的環境。以服務為中心,你需要關心的是api,如何把大服務拆分成小服務,如何使用api去整合它們。
2) 以集群的方式運行管理容器。
3) 解決Docker跨機器容器之間的通訊問題。
4) Kubernetes的Pods自我修復機制使得容器集群總是運行在用戶指定的狀態。
Kubernetes有幾個重要的概念:
1.
Pod
Pod是k8s的最基本的操作單元,包含一個或多個緊密相關的容器,類似於豌豆莢的概念。一個Pod可以被一個容器化的環境看作應用層的“邏輯宿主機”(Logical Host).一個Pod中的多個容器應用通常是緊耦合的。Pod在Node上被創建、啟動或者銷毀。
為什么k8s使用Pod在容器之上再封裝一層呢?一個很重要的原因是Docker容器之間的通信受到Docker網絡機制的限制。在Docker的世界中,一個容器需要通過link方式才能訪問另一個容器提供的服務(端口)。大量容器之間的link將是一個非常繁重的工作。通過Pod的概念將多個容器組合在一個虛擬的“主機”內,可以實現容器之間僅需通過Localhost就能相互通信了。
一個Pod中的應用容器共享同一組資源:
(1)PID命名空間:Pod中的不同應用程序可以看見其他應用程序的進程ID
(2)網絡命名空間:Pod中的多個容器能訪問同一個IP和端口范圍
(3)IPC命名空間:Pod中的多個容器能夠使用SystemV IPC或POSIX消息隊列進行通信。
(4)UTS命名空間:Pod中的多個容器共享一個主機名
(5)Volumes(共享存儲卷):Pod中的各個容器可以訪問在Pod級別定義的Volumes
不建議在k8s的一個pod內運行相同應用的多個實例。也就是說一個Pod內不要運行2個或2個以上相同的鏡像,因為容易造成端口沖突,而且Pod內的容器都是在同一個Node上的
一個Pod包含一個或者多個容器。
Pod的YAML 描述方式:
kubectl create -f ./hello-world.yaml
運行如下命令就會查看Pod狀態:
$ kubectl get pods
2. minion/node
minion和node的意思是一樣的,是一個主機節點的意思。例如一個虛擬機、一個物理主機。注意,一個Pod不會跨越node。就是即使一個Pod有多個容器,里面的容器會同時存在在同一個Node中,不會分別在不同的Node中。 Kubernetes的調度器會根據Pod的資源需求定義來將Pod分配到不同的Node中(如今支持定義CPU需求、內存需求)。Kubernetes的master/slave程序運行在node里面。
3. Replication Controller
Replication 是復制的意思,用來解決Pod的線性擴容縮容問題,Replication Controller可以創建一個pod的多個副本,並且可以保證集群中該Pod的副本數量保持平衡。例如副本數量規定為10,如果某個pod掛了,數量變為9,那么Replication Controller會自動創建一個Pod,恢復到10個副本的水平。 多個副本可以在不同的Node中。
Replication Controller的YAML 描述方式:
template是對Pod的描述。ReplicationController根據template創建多個Pod(數量=replicas),標簽為app: nginx。
運行如下命令就會創建Replication Controller:
kubectl create -f ./nginx-rc.yaml
4. Service
Service用來解決Pod的服務發現問題,因為Pod的運行狀態可以動態變化(機器切換、宕機),所以訪問端最好不要直接去訪問某個Pod,而是通過service,service能夠將請求進行轉發。
服務的YAML描述如下:
該定義創建了一個服務,會將標簽為app:nginx(selector選的)的Pod納入服務中,也就是說該服務接收到的請求會轉發給標簽為app: nginx的Pod處理。注意:service是負載均衡的,會自動分配請求給不同的Pod。有沒有覺得很方便?把Serivce暴露給客戶端,客戶端只需要請求service,不需要知道后台是個集群。
運行如下命令就會創建Service:
5. Label
標簽,用來做邏輯上的標記。用來關聯service、replication controller和pod.
Kubernetes架構
下圖為官方的架構圖。
從圖中看出,Kubernetes的架構是典型的master/Slave架構。
Master負責總體的協調控制,Slave負責具體的任務。Master/Slave的組件如下:
盜個圖,下圖能更清晰的展示Kubernates。
持續更新~~~

![clipboard[7] clipboard[7]](/image/aHR0cHM6Ly9pbWFnZXMyMDE1LmNuYmxvZ3MuY29tL2Jsb2cvMzM3NjQxLzIwMTYwMS8zMzc2NDEtMjAxNjAxMjExNTMwMjA3NjUtNTY5MTA1MDAwLnBuZw==.png)
![clipboard[8] clipboard[8]](/image/aHR0cHM6Ly9pbWFnZXMyMDE1LmNuYmxvZ3MuY29tL2Jsb2cvMzM3NjQxLzIwMTYwMS8zMzc2NDEtMjAxNjAxMjExNTMwMjEzNzUtMTcwODM2NjU0LnBuZw==.png)
![clipboard[9] clipboard[9]](/image/aHR0cHM6Ly9pbWFnZXMyMDE1LmNuYmxvZ3MuY29tL2Jsb2cvMzM3NjQxLzIwMTYwMS8zMzc2NDEtMjAxNjAxMjExNTMwMjIwMTUtMjAwMDg0MzI2NS5wbmc=.png)
![clipboard[10] clipboard[10]](/image/aHR0cHM6Ly9pbWFnZXMyMDE1LmNuYmxvZ3MuY29tL2Jsb2cvMzM3NjQxLzIwMTYwMS8zMzc2NDEtMjAxNjAxMjExNTMwMjUxMjUtMjAyNzM5OTcyMC5wbmc=.png)
![clipboard[11] clipboard[11]](/image/aHR0cHM6Ly9pbWFnZXMyMDE1LmNuYmxvZ3MuY29tL2Jsb2cvMzM3NjQxLzIwMTYwMS8zMzc2NDEtMjAxNjAxMjExNTMwMjYxODctMTU5MTk4OTcyNC5wbmc=.png)