Kubernetes的四大特性

 

在Kubernetes平台上,通过Pod、RC和Service的组合能够方便地部署微服务。同时Kubernetes还提供了Namespace、ConfigMap、Job等资源对象特性来满足集群更加实际的需求。

一、Namespace资源隔离

一种常见的工作场景是在一个组织内部,不同的工作组都要使用服务器资源,按照传统的做法,为不同的工作组购买不同的服务器显然比较浪费。更经济有效的做法是让他们在一个共享的资源池里工作,并且不同组部署的应用应该互不干扰。Kubernetes使用Namespace对不同的工作组进行区分,使得同一个集群的资源可以被共享使用,并且使不同工作组创建的应用相互隔离,如图1所示。

图1不同工作组共享同一个Kubernetes集群 

举例来说,一个软件开发团队有两个小组∶开发组和测试组。他们在同一个Kubernetes集群中同时工作,就可以为他们分别创建名为dev和test的Namespace。然后,不同的工作组在其自己的 Namespace下创建Pod、RC、Service 等资源对象,这些对象的名字可以相同,因为它们已经被隔离在不同的Namespace下了。

二、容器应用的资源配额管理

在Kubernetes集群中运行的实体是大规模的容器应用,对于单个容器以及一组容器进行资源限制就非常必要了。一方面要尽量保证每个容器应用都能正确运行;另一方面要保证整个集群的资源不被少数对资源无限制使用的容器耗尽。在 Kubernetes系统中,通过容器、Pod和Namespace 3个级别的资源管理来完成集群中各容器应用的资源限制、资源配额管理、资源分配等工作,让整个集群能够健康稳定地运行。如图2所示,Kubernetes在容器、Pod 和 Namespace 3 个级别对集群的资源进行限制和配额管理。在容器级别,主要对 CPU、内存进行限制。在 Pod 级别,可以对一个 Pod 中全部容器的可用资源进行限制。在Namespace级别,则可以既对全部Pod的计算资源进行限制,也可以对资源对象的数量进行限制,包括可创建的Pod、RC、Service等资源对象的个数。

 

图2  Kubernetes集群中3个级别的资源管理

 

这种分级管理能够灵活应对大部分的应用场景,同时它还能够为Master在进行任务调度时提供依据,以使得调度更加准确。

三、ConfigMap应用的统一配置管理

为了将应用程序在不同的环境中进行部署和运行,通常要将应用的配置与程序进行分离,这样应用程序就会更加单纯、复用性更高。在将应用程序容器化之后,配置信息可以通过环境变量或者外挂目录的方式注入容器中。但在大规模容器集群的环境中,多个容器的应用配置管理将变得非常复杂。Kubernetes 提供了一种统一的应用配置管理方案ConfigMap,其主要功能是把应用程序所需的配置信息(包括配置文件、配制项、启动参数、环境变量等)放在统一的配置中心进行管理。

四、Job批处理任务

微服务类的应用都是后台长时间运行的应用程序(long-running job)。与之相对的另一种典型应用称为一次性任务或者批处理任务(batch job)。Kubernetes引入 Job 资源对象来管理批处理任务。也就是说在Kubernetes平台上,除了能够运行持续不停的各种微服务应用之外,也能运行定时任务、并行计算等批处理任务。

posted @ 2022-11-04 17:00  梯度科技  阅读(32)  评论(0编辑  收藏  举报