一张图解释k8s和容器关系,k8s入门秘籍,拿走不谢!
要想应用跑的稳,全靠k8s指挥准
什么是k8s?
k8s 是一个编排容器的工具,其实也是管理应用的全生命周期的一个工具,从创建应用,应用的部署,应用提供服务,扩容缩容应用,应用更新,都非常的方便,而且可以做到故障自愈,例如一个服务器挂了,可以自动将这个服务器上的服务调度到另外一个主机上进行运行,无需进行人工干涉。
我们需要了解几个k8s核心概念
Container
包含在Pod下,可以理解为容器,比如docker镜像。
Pods
在k8s里面,集群调度的最小单元就是一个pod,一个pod可以是一个容器,也可以是多个容器,例如你运行一个程序,其中使用了nginx,使用mysql了,使用了jetty,那么可以将这三个使用在同一个pod中,对他们提供统一的调配能力,一个pod只能运行在一个主机上,而一个主机上可以有多个pod。
Labels
Lable(标签用于区分对象):每个对象可以有多个标签,通过标签关联对象。 是一个key=value的键值对,其中key与value由用户自己指定。可以附加到各种资源对象上,一个资源对象可以定义任意数量的Label。可以通过LabelSelector(标签选择器)查询和筛选资源对象。
Node
Node是Pod真正运行的主机,可以物理机,也可以是虚拟机。为了管理Pod,每个Node节点上至少要运行container runtime(比如docker或者rkt)、kubelet和kube-proxy服务。
Services
Service定义了Pod的逻辑集合和访问该集合的策略,是真实服务的抽象。Service提供了一个统一的服务访问入口以及服务代理和发现机制,关联多个相同Label的Pod,用户不需要了解后台Pod是如何运行。
Master
集群拥有一个Kubernetes Master。Kubernetes Master提供集群的独特视角,并且拥有一系列组件,比如Kubernetes API Server。API Server提供可以用来和集群交互的REST端点。master节点包括用来创建和复制Pod的Replication Controller。
举例
没有容器编排
以咱们日常生活中能遇见的买东西为例,我们先定义下(container=一个商店),在没有容器编排的情况下,A城市,大家(用户)买东西都需要去商店(container),经常遇到某个店铺一款商品断货,有的人买的到,有的人买不到的情况,这个时候就有人想是不是能有一个系统可以看到全国其他店铺这款产品的库存,把其他店铺的产品的库存调过来满足其他店铺用户的需求
有容器编排
我们可以将kubernetes理解为这样一个可以看到库存,并且可调度的系统
在系统中,我们把包含这款产品的店铺按照城市做下划分,比如A城市,A城市当中有三个商店包含这个产品,那么我们就把这三个店铺划给城市A,这个城市的划分我们就可以理解为Pod,一个pod可以包含一个或者多个店铺(container)。
店铺按照城市被划分了,接下来我们就来定义一下Labels(标签),标签表示店铺当中的某款产品。
那么Node(节点),我们就可以理解成省,一个省当中包含了很多城市,一个城市有很多很多店铺。
最后就是service,可以理解成能够调动商品库存的人,他直接对接的是缺少商品的店铺,你要多少库存我就想办法从其他店铺帮你调取多少。
最重要的是kubernetes是非常强大的,它可以无限的复制店铺(包括产品),所以对于需要产品的用户来说永远不会出现商品买不到的情况。
点关注,不迷路~