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