Kubernetes中的大部分概念如Node、Pod、Replication Controller、Service等均可以看做一種「資源對象」,幾乎全部的資源對象均可以經過Kubernetes提供的kubectl工具(或者API編程調用)執行增、刪、改、查等操做並將其保存在etcd中持久化存儲。從這個角度來看,Kubernetes實際上是一個高度自動化的資源控制系統,它經過跟蹤比對etcd庫裏保存的「資源指望狀態」與當前環境中的「實際資源狀態」的差別來實現自動控制和自動糾錯的高級功能。node
Masterlinux
Kubernetes裏的Master指的是集羣控制節點,每一個Kubernetes集羣裏須要有一個Master節點來負責整個集羣的管理和控制,基本上Kubernetes全部的控制命令都是發給它,它來負責具體的執行過程,咱們後面全部執行的命令基本都是在Master節點上運行的。Master節點一般會佔據有一個獨立的X86服務器(或者一個虛擬機),一個主要的緣由是它過重要了,它是整個集羣的"首腦",若是它宕機或者不可用,那麼咱們全部的控制命令都將失效。docker
Master節點上運行着如下一組關鍵進程。編程
其實Master節點上每每還啓動了一個etcd Server進程,由於Kubernetes裏的全部資源對象的數據所有是保存在etcd中的。api
Node服務器
除了Master,Kubernetes集羣中 其餘機器被稱爲Node節點,在較早的版本中也被稱爲Minion。與Master同樣,Node節點能夠是一臺物理主機,也能夠是一臺虛擬機。Node節點纔是Kubernetes集羣中的工做負載節點,每一個Node都會被Master分配一些工做負載(Docker容器),當某個Node宕機時,其上的工做負載會被Master自動轉移其餘節點上去。負載均衡
每一個Node節點上都運行着如下一組關鍵進程。工具
Node節點能夠在運行期間動態增長到Kubernetes集羣中,前提是這個節點上已經正確安裝、配置和啓動了上述關鍵進程,在默認狀況下kubelet會向Master註冊本身,這也是Kubernetes推薦的Node管理方式。一旦Node被歸入集羣管理範圍,kubelet進程就會定時向Master節點彙報自身的情報,例如操做系統、Docker版本、機器的CPU和內存狀況,以及以前有哪些Pod在運行等,這樣Master能夠獲取每一個Node的資源使用狀況,並實現高效均衡的資源調度策略。而某個Node超過指定時間不上報信息時,會被Master斷定爲「失聯」,Node的狀態被標記爲不可用(Not Ready),隨後Master會觸發「工做負載大轉移」的自動流程。spa
咱們能夠執行下述命令查看集羣中有多少個Node:操作系統
# kubectl get nodes
NAME STATUS AGE
kubernetes-minion1 Ready 2d
而後,經過kubectl describe node<node_name>來查看某個Node的詳細信息:
$ kubectl describe node kubernetes-minion1
Name: k8s-node-1
Labels: beta.kubernetes.io/arch=amd64
beta.kubernetes.io/os=linux
kubernetes.io/hostname=k8s-node-1
Taints: <none>
CreationTimestamp: Wed,06 Jul 2016 11:46:51 +8000
Phase:
Conditions:
Type Status LastHeartbeatTime
OutOfDisk False Sat, 09 Jul 2016 08:17:39 +0800 Wed ...
MemoryPressure False Sat, 09 Jul 2016 08:17:39 +0800 Wed ...
Ready True Sat, 09 Jul 2016 08:17:39 +0800 Wed ...
Addresses: 192.168.18.131,192.168.18.131
Capacity:
alpha.kubernetes.io/nvidia-gpu: 0
cpu: 4
memory: 186892Ki
pods: 110
Allocatable:
alpha.kubernetes.io/nvidia-gpu: 0
cpu: 4
memory: 186892Ki
pods: 110
System Info:
Machine ID :6e4e2af2afeb42b9aac47d866aa56ca0
System ID :564D63D3-9664-3393-A3DC-9CD424ED42C1
Boot ID :b0c34f9f-76ab-478e-9771-bd4fe6e98880
Kernel Version:3.10.0-327.22.2.e17.x86_64