Kubernetes 1.6版已经发布一段时间了,在k8s1.6中新增包含Beta版本的RBAC机制,让集群管理员可以针对特定使用者、服务账号,进行更精确的资源访问控制。除此之外,新版本更让丛集规模从2,000个,扩大至5,000个节点,比前一版多了2.5倍
先前Kubernetes在新版规画中,就预告了1.6版将新增角色访问控制机制(Role-Based Access,RBAC),引起众人高度期待这个可以让容器丛集管理更进一步的功能。果不其然, Kubernetes 1.6版中,如期推出了RBAC机制Beta版本,让集群管理员可以针对特定使用者或服务账号的角色,进行更精确的资源访问控制。除此之外,新版本可支持的集群规模从2,000个节点,扩大至5,000个,可支持的Pod总数量也提高到15万个。
第一特色:扩大集群规模,加强集群联邦功能
在此版本中,Kubernets总共新增了5大特色。Kubernetes早在半年前就开始采用CoreOS的组态管理、服务探查工具etcd,这次改版更将Kubernetes底层架构预设改成etcd v3版本,因此可支持的集群规模也扩大至5,000个节点,可支持的Pod规模也增加到15万个(Pod是由多个容器组合的一个容器包)。
Google表示,若需要规模超过5,000个集群,或是服务靠跨多个数据中心或多云架构,新版本还加强了集群联邦(Federation)功能,用户得以组合不同区域的Kubernetes集群,而系统会确保跨区的集群的环境部署的一致性。
Kubernetes在1.5版中就推出的命令程序接口Kubefed仍处于Beta版,不过增加了更多本地端功能,例如开发者可以利用Kubefed指令,系统可自动完成丛集的DNS组态设定。
第二特色:靠角色访问控制机制加强安全
过去,Kubernetes是透过节点本地端的配置文件来设定权限,使用ABAC(Attribute-Based Access Control)模式,例如可透过配置设定不同账号所能存取的API权限。
但在新版中,则新增了角色访问控制机制,可以直接用API来取得不同账号的权限管理政策,来控制使用者账号或服务,可将系统资源指派给特定命名空间,让所属账号来存取。
对于想要将Kubernetes升级至1.6版本的企业,在系统权限控管转换时,Google提出了两种解法。第一种作是让ABAC、RBAC机制并行使用。Google举例,系统会先透过RBAC authorizer处理API请求。如果RBAC authorizer并未核准,接着ABAC authorizer则会接手。
第三特色:储存动态分配
1.6版现在内建了常用云端储存服务对象,包括 AWS、Azure、GCP、OpenStack和VMware vSphere的储存空间,都不需要在手动配置就能使用。这也意味着,当有对象删除释出储存空间时,就可以用程序自动闲置的外部储存资源指派给新的Pod,来实现动态储存分配的效果。
另外,Google表示,现在Kubernetes中的持久磁盘(Persistent Volume)子系统也提供两组API资源,让用户、系统管理员了解储存资源的使用现况。这两组API分别是PVC(PersistentVolumeClaim)以及PV(PersistentVolume)对象,让储存可以摆脱各异质环境所制定的相异规则,使Pod可以横跨不同的云端、本地端环境运作。此外,Google表示,结合StorageClass对象及动态建置磁盘(Dynamic Volume Provisioning)功能,企业不需要先前准备建置作业,就可随需建立、删除储存对象。
在新版本中,StorageClass也预设支持AWS、Azure、GCP、OpenStack以及VMware vSphere等环境,「使用者不需手动设置StorageClass对象。」Google表示。
第四特色:强化使用者对Pod的控制
新版本中,Kubernetes也加强使用者对Pod的控制程度,像是指定每个Pod一个节点标签(Node Label),藉此限制Pod只能在特定节点、丛集中运行,目前此功能也处于Beta阶段。
而节点标签所能完成的设定不仅只是如此,开发者也能自己调整,指定特定的主机名、硬件架构、操作系统版本等参数。
除了限制Pod在特定节点上运作,开发者也可以将Pod排除于特定节点上运作。Google举例,企业可藉此限制使用者只能存取部分节点,或是利用节点标签,让Pod在特殊规格的硬件上运作。
第五特色:更新容器Runtime接口及背景常驻程序
「虽然使用者不见得会直接和容器Runtime、API Server直接互动,但它们是组成Kubernetes的基础组件。」Google表示,在1.6版中负责检查节点组态是否正确的Kubelet,现在已经支持Docker容器Runtime接口(Container Runtime Interface,CRI),不过此功能目前还处于Beta版。
此外,Kubernetes现阶段也有支持其他的容器Runtime,像是符合开放容器实作标准的Cri-O、以Hypervisor为基础的Frakit,以及CoreOS的rkt。
原文: https://www.kubernetes.org.cn/1838.html Kubernetes 1.6新增主要功能介绍