Kubernetes简介

Kubenetes(k8s)是一款由Google开发的开源的容器编排工具,在Google使用已经超过15年。那么k8s是用来解决集群容器运行时的什么问题呢?

调度

需要确保应用程序能够运行在它应该运行的地方。将应用运行在集群中正确的主机上对你的应用程序而言是很重要的一件事情,因为并不是集群中所有主机都是一样的。

负载均衡

需要保证来自客户端的负载(请求)能够均匀的分布到集群的节点当中。这对于你的应用程序能够以最佳的方式利用每台主机的资源来处理客户端负载是非常重要的。你并不希望当中一些容器正在满负荷的工作,而另外一些却处在空闲的状态。

应用伸缩(扩展和收缩)

需要能够启动一些新的容器来处理负载(当请求高峰时),同时可以清理掉一些(容器)当不再需要这些容器的时候。这很重要,因为这样才能够有效的(按需的)处理客户端请求的峰值。

集群管理和监控

现在你的应用程序已经可以在这个庞大的集群中高效的运行,这时你必须要管理它。 你需要明确知道它们 (集群中的相关服务)都是正常运行的,如部署,弹性伸缩,负载均衡以及容器的健康状态。当然这并不是一个轻松的活儿。


k8s可以解决这些问题,它是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展。如果你曾经用过Docker容器技术部署容器,那么可以将Docker看成Kubernetes内部使用的低级别组件。Kubernetes不仅仅支持Docker,还支持Rocket,这是另一种容器技术。

使用Kubernetes可以:

1、自动化容器的部署和复制
2、随时扩展或收缩容器规模
3、将容器组织成组,并且提供容器间的负载均衡
4、很容易地升级应用程序容器的新版本
5、提供容器弹性,如果容器失效就替换它,等等...



上图是k8s的组件框图

在Kubernetes中Pod是指一组容器,它们一起工作,并且对外提供一个(或者一组)功能,Pod是Kubernetes中的调度的(最小)单元。

当一个pod被创建,调度器将会寻找最适合运行它的Node节点(集群当中的主机)。这个(调度)过程主要由kube-scheduler组件负责完成,它会在集群中选择备选节点,并且确保其(节点)提供的资源能够满足pod中容器的需求。

Kubernetes中Service服务是逻辑上的一组Pod(也被称为Replicas副本),这组Pod提供了相同的功能,Service服务解除了这些Pod副本与它们客户端之间的耦合。

在Kuernetes中,负载均衡在默认情况下是由Service来处理。 对于每一个Service实例你可以提供一个lable selector(标签选择器),用于标识(与该服务关联的)Pod的Replica副本。由于Service服务与Replica副本的物理位置并不相关,因此当客户端使用它们(Pod副本)所提供的功能时,客户端既不知道也不关心它们实际运行的位置。调度器使用标签选择器为请求选择正确的服务,并且确保客户端负载始终均衡。

Kubernetes的Replication controller 控制器可以确保在集群中始终运行制定数量的Pod副本。

Replication控制器通过确保要运行的副本数量来实现应用程序的扩展伸缩。如果副本数量(可能有一个或者多个副本因为某些原因死掉),Replication控制器则会启动更多的实例,直到达到目标数量。而如果当存在过多的副本时(在弹性伸缩的情况下),则会自动关闭部分实例。


Kubernetest Dashboard是一个基于Web的集群监控UI,包括管理运行中的pod实例,以及查看CPU,内存使用情况等指标。 在默认情况下Kubernetest并不会部署Dashboard,但通过kubectl命令你可以快速部署Dashboard,并开始使用它。

kubectl 是 Kubernetes 自带的客户端,可以用它来直接操作 Kubernetes。

posted on 2018-05-30 10:40  sichenzhao  阅读(141)  评论(0编辑  收藏  举报

导航