什么是容器(container)
容器是轻量级应用代码包,它还包含依赖项,例如编程语言运行时的特定版本和运行软件服务所需的库。
容器支持在操作系统级别轻松共享 CPU、内存、存储空间和网络资源,并提供了一种逻辑打包机制,以这种机制打包的应用可以脱离其实际运行的环境。
一个例子:我部署一个服务运行好后,我再想移植到另外一个地方,我可以不用再安装一套操作系统和依赖环境。这就像集装箱运载一样,我把货物一辆兰博基尼跑车(好比开发好的应用APP),打包放到一容器集装箱里,它通过货轮可以轻而易举的从上海码头(CentOS7.2环境)运送到纽约码头(Ubuntu14.04环境)。而且运输期间,我的兰博基尼(APP)没有受到任何的损坏(文件没有丢失),在另外一个码头卸货后,依然可以完美风骚的赛跑(启动正常)。
kubernetes特点
- 可移植:支持公有云、私有云、混合云、多重云(Multi-cloud)。
- 可扩展:模块化、插件化、可挂载、可组合。
- 自动化:自动部署、自动重启、自动复制、自动伸缩/扩展。
kubernetes架构图
C/S架构,master作为服务端,node作为客户端。kubernetes系统具有多个master可以实现高可用(HA)。在默认的情况下,一个Master服务端即可完成所有工作。
master
Master服务端也被称为主控节点,它在集群中主要负责如下任务。
- 集群的“大脑”,负责管理所有节点(Node)。
- 负责调度Pod在哪些节点上运行。
- 负责控制集群运行过程中的所有状态。
master主要包含以下组件
kube-apiserver
组件:集群的HTTP REST API接口,是集群控制的入口。kube-controller-manager
组件:集群中所有资源对象的自动化控制中心。kube-scheduler
组件:集群中Pod资源对象的调度服务。
node
Node客户端也被称为工作节点,它在集群中主要负责如下任务。
- 负责管理所有容器(Container)。
- 负责监控/上报所有Pod的运行状态。
node主要包含以下组件
kubelet
组件:负责管理节点上容器的创建、删除、启停等任务,与Master节点进行通信。kube-proxy
组件:负责Kubernetes服务的通信及负载均衡服务。container
组件:负责容器的基础管理服务,接收kubelet组件的指令。