1、Kubernetes概念
Kubernetes是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。
1.1、通过Kubernetes你可以:
1)快速部署应用
2) 快速扩展应用
3)无缝对接新的应用功能
4)节省资源,优化硬件资源的使用
1.2、Kubernetes 特点
1)可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)
2)可扩展: 模块化, 插件化, 可挂载, 可组合
3)自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展
2、核心概念
2.1、Master
Kubernetes 里的 Master指的是集群控制节点,每个Kubernetes 集群里需要有一个Master 节点来负责整个集群的管理和控制,基本上Kubernetes的所有控制命令都发给它,它来负责具体的执行过程,我们后面执行的所有命令基本都是在Master节点上运行的。Master 节点通常会占据一个独立的服务器(高可用部署建议用3台服务器),其主要原因是它太重要了,是整个集群的”首脑”,如果宕机或者不可用,那么对集群内容器应用的管理都将失效。
Kubernetes API Server:捉供了HTTP Rest接口的关键服务进程,是Kubernetes里所有资源的增、删、改、查等操作的唯一入口,也是集群控制的入口进程。
Kubernetes Scheduler:负责资源调度(Pod调度)的进程,相当于公交公司的“调度室”。
Kubernetes Controller Manager:Kubernetes里所有资源对象的自动化控制中心,可以理解为资源对象的“大总管”。
etcd:Kubernetes所有资源对象的数据全是保存在etcd中。
2.2、Node
除了Master, Kubernetes集群中的其他机器被称为Node节点,在较早的版本中也被称为 Minion。与 Master样,Node节点可以是一台物理主机,也可以是一台虚拟机。Node节点オ是 Kubernetes集群中的工作负裁节点,每个Node都会被 Master分配一世工作负载( Docker容器),当某个Node宕机时,其上的工作负载会被 Master自动转移到其他节点上去。
kubelet:负责Pod对应的容器的创建、启停等任务,同时与 Master节点密切协作,实现集群管理的基本功能。
kube- proxy:实现 Kubernetes Service的通信与负载均衡机制的重要组件。
Docker Engine( docker): Docker引峯,负责本机的容器创建和管理工作。
Fluentd:负责node之间的网络
Node节点可以在运行期问动态増加到 Kubernetes集群中,前提是这个节点上已经正确安装、配置和启动了。上述关键进程,在默认情况下 kubelet会向 Master注册自己,这也是 Kubernetes推荐的Node管理方式。一旦Node纳入集群管理范围, kubelet进程就会定时向 Master节点汇报自身的情报,例如操作系统、 Docker版本机器的CPU和内存情況,以及当前有哪些Pod在运行等,这样 Master可以获知每个Node的资源使用情况,并实现高效均衡商源调度详路。而果个Node超过指定时回不上报信息时,会被Masr判断カ“失联”,Node的状态被标记为不可用( Not Ready),随后 Master会触发“工作负大转移”的自动流程。
2.3、Pod
Pod是 Kubernetes的最重要也最星本的概念,如下图所示是Pod的组成示原图,我们看到每个Pod都有一个特殊的被成为“根容器”的 Pause容器。 Pause容器对应的镜像属于 Kubernetes平台的一部分,除了 Pause容器,每个Pod还包含一食或多个紧密相关的用户业务容器。(根据根容器判断Pod是否挂了 )
2.4、Label
Label是 Kubernetes系統中另外一个核心概念。一个 Label是一个key= value的键值对,其中key与value由用户自己指定。 Label可以附加到各种资源对象上,例如Node、Pod、 Service、RC等,一个资源对象可以定义任意数的 Label,同一个 Label也可以被添加到任意数呈的资源对象上去, Labeli通常在资源对象定义时确定,也可以在对象创建后动态添加或者删除。我们可以通过指定的资源对象掘一个或多个不同的 Label来实现多维度的资源分组管理功能,以便于灵活、方便地进行资源分配、调度、配置、部署等笆理工作。
2.5、Replication Controller
RC是 Kubernetes系统中的核心概念之ー,简单来说,它其实是定义了一个期望的场景,即声明某种Pod的副本数量在任意时刻都符合某个预期值,所以RC的定义包括如下几个部分。
1)Pod期待的副本数( replicas)
2)用于筛选目标Pod的 Label Selector。
3)当Pod的副本数量小于预期数量时,用于创建新Pod的Pod模版( template)。
2.6、Deployment
Deployment是 Kubernetes v1.,2引入的概念,引入的目的是为了更好地解决Pod的编排问题。为此,Deployment在内部使用了 Replica Set来实现目的,无论从 Deployment的作用与目的,它的YAML定义,还是从它的具体命令行操作来看,我们都可以把它看作RC的一次升级,两者相似度超过90%。
Deployment相对于RC的一个最大升级是我们随时知道当前Pod“部署”的进度。实际上由于ー个Pod的创建、调度、绑定节点及在目标Node上启动对应的容器这一完整过程需要一定的时间,所以我们期待系统启动N个Pod副本的目标状态,实际上是一个连续変化的“部署过程”导致的最终状态。
Deployment I的典型使用场景有以下几个:
1)创建一个 Deployment对象来生成对应的 Replica Set并完成Pod副本的创建过程。
2)检查 Deployment I的状态来看部署动作是否完成(Pod副本的数量是否达到预期的值)。
3)更新 Deployment以创建新的Pod(比如镜像升级)。
2.7、Service
Service也是 Kubernetes里的最核心的资源对象之ー, Kubernetes里的每个 Service其实就是我们经常提起的微服务架构中的一个“做服务”,之前我们所说的Pod、RC等资源对象其实都是为这节所说的“服务”— Kubernetes Service作“嫁衣”的。下图显示了Pod、RC与 Service的逻辑关系。
2.8、Volume(存储卷)
Volume是Pod中能够被多个容器访问的共享目录。 Kubernetes的 Volume概念、用途和目的与 Docker的 Volume比较类似,但两者不能等价。首先, Kubernetes中的 Volume定义在Pod上,然后被一个Pod里的多个容器挂载到具体的文件目录下;其次, Kubernetes中的 Volume中的数据也不会丢失。最后, Kubernetes支持多种类型的 Volume,例如 Gluster、Ceph等先进的分布式文件系统。
2.9、Namespace
Namespace(命名空间)是 Kubernetes系统中的另一个非常重要的概念, Namespace在很多情况下用于实现多租户的资源隔离。 Nameaspace通过将集群内部的资源对象“分配”到不同的 Namespce t中,形成逻辑上分组的不同项目、小组或用户组,便于不同的分组在共享使用整个集群的资源的同时还能被分别管理。
3.10 Annotation(注解)
Annotation与 Label类似,也使用key/value键值对的形式进行定义。不同的是 Label具有严格的命名规则,它定义的是 Kubernetes对象的元数据( Metadata),并且用于 Label Selector。而 Annotation则是用户任意定义的“附加”信息,以便于外部工具进行查找,很多时候, Kubernetes的模块自身会通过 Annotation的方式标记资源对象的特殊信息。
3、术语
https://kubernetes.io/docs/reference/glossary/?fundamental=true
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/15167.html