Kubernetes是一个完备的分布式系统支撑平台,具有完备的集群管理能力,多扩多层次的安全防护和准入机制、多租户运用支撑能力、透明的做事注册和创造机制、內建智能负载均衡器、强大的故障创造和自我修复能力、做事滚动升级和在线扩容能力、可扩展的资源自动调度机制以及多粒度的资源配额管理能力。同时Kubernetes供应完善的管理工具,涵盖了包括开拓、支配测试、运维监控在内的各个环节。
Kubernetes中,Service是分布式集群架构的核心,一个Service工具拥有如下关键特色:
Service的做事进程目前都是基于Socket通信办法对外供应做事,比如Redis、Memcache、MySQL、Web Server,或者是实现了某个详细业务的一个特定的TCP Server进程,虽然一个Service常日由多个干系的做事进程来供应做事,每个做事进程都有一个独立的Endpoint(IP+Port)访问点,但Kubernetes能够让我们通过做事连接到指定的Service上。有了Kubernetes内建的透明负载均衡和故障规复机制,不管后端有多少做事进程,也不管某个做事进程是否会由于发生故障而重新支配到其他机器,都不会影响我们队做事的正常调用,更主要的是这个Service本身一旦创建就不会发生变革,意味着在Kubernetes集群中,我们不用为了做事的IP地址的变革问题而头疼了。

容器供应了强大的隔离功能,所有有必要把为Service供应做事的这组进程放入容器中进行隔离。为此,Kubernetes设计了Pod工具,将每个做事进程包装到相对应的Pod中,使其成为Pod中运行的一个容器。为了建立Service与Pod间的关联管理,Kubernetes给每个Pod贴上一个标签Label,比如运行MySQL的Pod贴上name=mysql标签,给运行PHP的Pod贴上name=php标签,然后给相应的Service定义标签选择器Label Selector,这样就能奥妙的办理了Service于Pod的关联问题。
在集群管理方面,Kubernetes将集群中的机器划分为一个Master节点和一群事情节点Node,个中,在Master节点运行着集群管理干系的一组进程kube-apiserver、kube-controller-manager和kube-scheduler,这些进程实现了全体集群的资源管理、Pod调度、弹性伸缩、安全掌握、系统监控和纠错等管理能力,并且都是全自动完成的。Node作为集群中的事情节点,运行真正的运用程序,在Node上Kubernetes管理的最小运行单元是Pod。Node上运行着Kubernetes的kubelet、kube-proxy做事进程,这些做事进程卖力Pod的创建、启动、监控、重启、销毁以及实现软件模式的负载均衡器。
Kubernetes上风:- 容器编排
- 轻量级
- 开源
- 弹性伸缩
- 负载均衡
在Kubernetes集群中,它办理了传统IT系统中做事扩容和升级的两大难题。你只需为须要扩容的Service关联的Pod创建一个Replication Controller简称(RC),则该Service的扩容及后续的升级等问题将迎刃而解。在一个RC定义文件中包括以下3个关键信息。
目标Pod的定义目标Pod须要运行的副本数量(Replicas)要监控的目标Pod标签(Label)在创建好RC后,Kubernetes会通过RC中定义的的Label筛选出对应Pod实例并实时监控其状态和数量,如果实例数量少于定义的副本数量,则会根据RC中定义的Pod模板来创建一个新的Pod,然后将新Pod调度到得当的Node上启动运行,知道Pod实例的数量达到预定目标,这个过程完备是自动化。
Kubernetes的核心观点1.Master
k8s集群的管理节点,卖力管理集群,供应集群的资源数据访问入口。拥有Etcd存储做事(可选),运行Api Server进程,Controller Manager做事进程及Scheduler做事进程,关联事情节点Node。Kubernetes API server供应HTTP Rest接口的关键做事进程,是Kubernetes里所有资源的增、删、改、查等操作的唯一入口。也是集群掌握的入口进程;Kubernetes Controller Manager是Kubernetes所有资源工具的自动化掌握中央;Kubernetes Schedule是卖力资源调度(Pod调度)的进程
2.Node
Node是Kubernetes集群架构中运行Pod的做事节点(亦叫agent或minion)。Node是Kubernetes集群操作的单元,用来承载被分配Pod的运行,是Pod运行的宿主机。关联Master管理节点,拥有名称和IP、系统资源信息。运行docker eninge做事,守护进程kunelet及负载均衡器kube-proxy.
每个Node节点都运行着以下一组关键进程kubelet:卖力对Pod对付的容器的创建、启停等任务kube-proxy:实现Kubernetes Service的通信与负载均衡机制的主要组件Docker Engine(Docker):Docker引擎,卖力本机容器的创建和管理事情Node节点可以在运行期间动态增加到Kubernetes集群中,默认情形下,kubelet会想master注书籍身,这也是Kubernetes推举的Node管理办法,kubelet进程会定时向Master申报请示自身情报,如操作系统、Docker版本、CPU和内存,以及有哪些Pod在运行等等,这样Master可以获知每个Node节点的资源利用情形,并实现高效均衡的资源调度策略。
3.Pod
运行于Node节点上,多少干系容器的组合。Pod内包含的容器运行在同一宿主机上,利用相同的网络命名空间、IP地址和端口,能够通过localhost进行通。Pod是Kurbernetes进行创建、调度和管理的最小单位,它供应了比容器更高层次的抽象,使得支配和管理更加灵巧。一个Pod可以包含一个容器或者多个干系容器。
Pod实在有两种类型:普通Pod和静态Pod,后者比较分外,它并不存在Kubernetes的etcd存储中,而是存放在某个详细的Node上的一个详细文件中,并且只在此Node上启动。普通Pod一旦被创建,就会被放入etcd存储中,随后会被Kubernetes Master调度到摸个详细的Node上进行绑定,随后该Pod被对应的Node上的kubelet进程实例化成一组干系的Docker容器冰启动起来,在。在默认情形下,当Pod里的某个容器停滞时,Kubernetes会自动检测到这个问起并且重启这个Pod(重启Pod里的所有容器),如果Pod所在的Node宕机,则会将这个Node上的所有Pod重新调度到其他节点上。
4.Replication Controller
Replication Controller被用来管理Pod的副本,担保集群中存在指天命量的Pod副本。集群中副本的数量大于指天命量,则会停滞指天命量之外的多余容器数量,反之,则会启动少于指天命量个数的容器,担保数量不变。Replication Controller是实现弹性伸缩、动态扩容和滚动升级的核心。
5.Service
Service定义了Pod的逻辑凑集和访问该凑集的策略,是真实做事的抽象。Service供应了一个统一的做事访问入口以及做事代理和创造机制,关联多个相同Label的Pod,用户不须要理解后台Pod是如何运行。
6.Label
Kubernetes中的任意API工具都是通过Label进行标识,Label的本色是一系列的Key/Value键值对,个中key于value由用户自己指定。Label可以附加在各种资源工具上,如Node、Pod、Service、RC等,一个资源工具可以定义任意数量的Label,同一个Label也可以被添加到任意数量的资源工具上去。Label是Replication Controller和Service运行的根本,二者通过Label来进行关联Node上运行的Pod。
我们可以通过给指定的资源工具捆绑一个或者多个不同的Label来实现多维度的资源分组管理功能,以便于灵巧、方便的进行资源分配、调度、配置等管理事情。
Kubernetes架构和组件k8s架构
- 做事分组,小集群,多集群
- 做事分组,大集群,单集群
Kubernetes 组件Kubernetes Master掌握组件,调度管理全体系统(集群),包含如下组件:
1.Kubernetes API Server
作为Kubernetes系统的入口,其封装了核心工具的增编削查操作,以RESTful API接口办法供应给外部客户和内部组件调用。掩护的REST工具持久化到Etcd中存储。
2.Kubernetes Scheduler
为新建立的Pod进行节点(node)选择(即分配机器),卖力集群的资源调度。组件抽离,可以方便更换成其他调度器。
3.Kubernetes Controller
卖力实行各种掌握器,目前已经供应了很多掌握器来担保Kubernetes的正常运行。
4. Replication Controller
管理掩护Replication Controller,关联Replication Controller和Pod,担保Replication Controller定义的副本数量与实际运行Pod数量同等。
5. Node Controller
管理掩护Node,定期检讨Node的康健状态,标识出(失落效|未失落效)的Node节点。
6. Namespace Controller
管理掩护Namespace,定期清理无效的Namespace,包括Namesapce下的API工具,比如Pod、Service等。
7. Service Controller
管理掩护Service,供应负载以及做事代理。
8.EndPoints Controller
管理掩护Endpoints,关联Service和Pod,创建Endpoints为Service的后端,当Pod发生变革时,实时更新Endpoints。
9. Service Account Controller
管理掩护Service Account,为每个Namespace创建默认的Service Account,同时为Service Account创建Service Account Secret。
10. Persistent Volume Controller
管理掩护Persistent Volume和Persistent Volume Claim,为新的Persistent Volume Claim分配Persistent Volume进行绑定,为开释的Persistent Volume实行清理回收。
11. Daemon Set Controller
管理掩护Daemon Set,卖力创建Daemon Pod,担保指定的Node上正常的运行Daemon Pod。
12. Deployment Controller
管理掩护Deployment,关联Deployment和Replication Controller,担保运行指天命量的Pod。当Deployment更新时,掌握实现Replication Controller和 Pod的更新。
13.Job Controller
管理掩护Job,为Jod创建一次性任务Pod,担保完成Job指定完成的任务数目
14. Pod Autoscaler Controller
实现Pod的自动伸缩,定时获取监控数据,进行策略匹配,当知足条件时实行Pod的伸缩动作。
Kubernetes Node运行节点,运行管理业务容器,包含如下组件:1.Kubelet
卖力管控容器,Kubelet会从Kubernetes API Server吸收Pod的创建要求,启动和停滞容器,监控容器运行状态并申报请示给Kubernetes API Server。
2.Kubernetes Proxy
卖力为Pod创建代理做事,Kubernetes Proxy会从Kubernetes API Server获取所有的Service信息,并根据Service的信息创建代理做事,实现Service到Pod的要求路由和转发,从而实现Kubernetes层级的虚拟转发网络。
3.Docker
Node上须要运行容器做事
篇幅有限,上面紧张讲了k8s的观点、架构、组件,关于k8s搭建的实验只能在后面文章分享了,大家有兴趣的话可以关注下我哦,更多精彩内容等着你。