OpenShift中CPU限额单位m是个什么鬼
红帽的OpenShift定位于构建一个PaaS服务平台,即这个平台上必定会有不同的企业客户来租用资源。不同的企业,不同的进程在使用共同的物理计算资源,如何保证各个客户的应用不过度地占用资源,非常重要。
一个PaaS服务平台也有点像一个美食城。在物业管理层面上,美食城对来租店面经营餐饮业务的商家除了限制其营业面积(出多少钱,租多大店面)之外,还要有其他的限制或管理。比如,门前的公共通道的卫生、拉客的方式、店面的装修风格、播放音乐的音量、补给食材和物资的时间和路线、安装电器的功率等等,都要有具体的管理办法。否则,出现纠纷与冲突,会影响整个美食城的经济效益。
同理,为打造PaaS“美食城”而生的OpenShift也必须提供控制资源的技术手段。该有的,肯定会有。OpenShift提供了两种资源控制方法:一种是控制对象的数量,如:
·豆苞(pod)
·再生器(rc- replication controller)
·服务(service)
·密文(secret)
·永久卷请求(pvc – persistentvolumeclaim)
以上对象都是以数量来控制的。
另一种则按照计算使用量来控制,如存储、内存的大小和CPU的总使用量。存储、内存的使用量是以Gi为单位的,即GiB。
1 GiB = 1073741824 bytes = 10243 B = 230 B
而CPU的使用单位却是m,而OpenShift的教材上则写道:m means millicores,即m是“毫核”。毫核,是个什么鬼?OpenShift官方网站上,这样写道:
CPU的计量单位叫毫核。集群中的每一个节点可以通过操作系统确认本节点的CPU内核数量,将这个数量乘以1000,得到的就是节点总的CPU总数量。如,一个节点有两个核,那么该节点的CPU总量为2000m。如果你要使用单核的十分之一,则你要求的是100m。
还是有点晕,继续在网上翻找,终于我在Kubernetes的网站上找到相应的说明。顺便提一下,OpenShift使用的是Kubernetes + Docker + Etcd及其他开源技术栈构建起来的。原来,在一个豆苞内,Kubernetes通过两个参数来限制CPU的使用,即:
spec.containers[].resources.limits.cpu
//主动限制。这个月销售额必须达到1000万,否则给我卷铺盖走人。
spec.containers[].resources.requests.cpu
//主动请求限制。张飞大叫:只拨三千军与我去取武陵郡,活捉太守金旋来献!
而这个m的单位,则是将一个cpu抽象化,分成1000等份。每一份即为一个millicore,即千分之一个核,或毫核。跟米与毫米的关系是一样的。而且,Kubernetes的一个CPU核概念与下面各家的概念是等同的:
·1 AWS vCPU
(1个亚马逊云虚拟核)
·1 GCP Core
(1个谷歌计算平台核)
·1 Azure vCore
(1个微软Azure虚拟核)
·1 IBM vCPU
(1个IBM虚拟核)
·1 Hyperthread on a bare-metal Intel processor with Hyperthreading(Intel超级线程物理CPU上的1个线程)
这个限制最小的单位是100m,不允许制订更小的精度,如限制为90m或120m,只能以100为基数增减。有时候,也写作0.1。Intel的处理器的核的计算能力,恐怕各代产品都有所不同,所以这种限制也是相对的,是一种模糊的控制。但总比没有控制要好。
当然,本文只是作者对OpenShift这个宏大的云计算系统进行的一次卑微的管窥,希望能激发读者的兴趣,形成一个记忆点。是一面之缘,还是终身朋友,就看你的了。
OpenShift是红帽认证RHCA云计算五大核心课程之一,课程代码为DO280。腾科IT教育集团是国内最早开设红帽认证系列课程,包括RHCA认证课程的专业培训机构,目前在广州、深圳、上海设有分支机构,面向社会提供培训、考试及就业引荐一体化服务,欢迎到腾科报读红帽系列认证课程。
官方网址:http://www.togogo.net