周三,Kubernetes 1.8公布了,包含了一些环绕着稳定性、简洁性和安全性的更新。
“这次公布没有包含各种眼花缭乱的新特性。而重点在对已有特性的增强”,来自谷歌的Kubernetes产品经理Aparna Sinha说。Google起初将Kubernetes作为开源项目公布,如今代码库则由CNCF(云原生计算基金会)管理。
Kubernetes是一个开源的容器编排引擎,预定每三个月公布一次。最新版本号的贡献者中,既包含个人开发人员,也包含来自Avi Networks、CoreOS、Google、Heptio、华为、微软和三星SDS等公司的员工。
依据一家分析公司Remonk的分析报告,全球100强公司中有约54%的公司正在以某种方式使用Kubernetes。据一位CNCF的开发大使和Kuberentes 1.8的功能公布领头人Ihor Dvoretskyi 说。市场的主要需求点在于稳定性、简洁性和安全性。
在新的公布中:
安全性发面:基于角色的訪问控制(RBAC),这是一个在1.6版本号中为beta状态现已稳定的特性。
它能同意集群的管理者动态地定义角色并通过Kubernetes API来施加訪问的策略。CoreOS的Eric Chiang在一篇博客(https://coreos.com/blog/kubernetes-1.8-announcement)中提到,它在GA的过程中,并没有修改核心类型的API。另外的与RBAC相关的特性也正在开发中。包含一些新的决定用户在系统中能执行哪些动作的API。
通过网络策略过滤下行流量如今处于Beta状态,这是对已有的Pod上传流量过滤特性的增强。Kubelet节点中agent的TLS证书轮换在最新版本号中处于beta状态。
稳定性方面:Pod的横向自己主动伸缩自己定义特性处于beta状态。
Sinha解释说。“在过去,Kubernetes同意基于CPU利用率来进行向上或者向下伸缩,可是开发人员也想能够依据其它类型的指标来伸缩应用”。
提供这样的特性须要依赖于资源指标API和自己定义指标API的稳定性。此外,新打造的度量server拥有更高可读性更加易懂的错误输出。能帮助在问题发生时指示出错原因和位置。
同一时候,Workload API处于beta状态。他们提供了必要的管理Kuberentes上部署的应用的抽象。
Chiang解释了四种类型:
-
DaemonSet用于管理在全部节点、或者是基于用户指定条件的部分节点上执行Pod的复杂度。
-
ReplicaSet提供了一个基础的高可用原语,来保证指定数量的Pod副本处于执行状态。
-
Deployment controller使得能够对Pod和ReplicaSet进行声明式更新,并提供关键功能如金丝雀更新和滚动更新。
-
StatefulSet是一个用来支持须要持久化能力的Pod的机制。它通过给它们赋予一个唯一标识来确保满足排序和持久卷訪问保证。
Chiang引述了Bootkube,这个项目能启动高可用自托管集群。CoreOS在该项目中使用了Workload API。
对于Kubernetes 1.8,这些API已经从theextensions/v1beta1 API组移到了dedicatedapps/v1beta2 API组,这为workload在未来的版本号中被提升进GA奠定了基础。
存储方面:如今能对暂时存储设置限定条件。能够指定挂载选项。同一时候也覆盖了很多其它与存储使用相关的指标。同一时候引入了flex驱动的部署,该特性如今处于alpha状态,能同意源代码树外(out-of-tree)的卷驱动。
Kubernetes的存储运作中包含一个存储驱动和一个存储插件框架。在曾经,这些驱动必须在Kubernetes的源代码内编写并编译。他们被称作是entry volume驱动。解耦之后,卷驱动能够在源代码树外进行编写,Sinha说。
简洁性方面:团队一年前就通过公布kubeadm致力让安装更加easy。
仅仅需两行命令就能架设好一个Kuebernetes集群。如今kubeadm命令加入了集群升级的支持。
除此之外。Sinha说,非常多用户在Kubernetes上执行机器学习、大数据和其它高级计算负载。
对他们来说。beta版的cron job会是一个好消息。在执行一些特别的作业中,拥有调度和计时能力。Cron已经在Swarm中支持,这是一个Docker自有的编排引擎。
同一时候,团队已经为支持Spark数据分析框架努力了一年多。如今Kubernetes能够原生地支持Spark。
Custom Resource Definition(CRD。自己定义资源定义)特性在1.8版本号中仍然处于beta版。CRD能同意对Kubernetes API进行扩展,并提供内核中没有的特性,但在用户看来就像Kubernetes的头等公民API一样。
这样的转变须要用户将Third Party Resources集成到CRD。
在1.8中,CRD加入了schema验证特性,能让client有更加健壮的体验。这次更新能让CRD定义资源在服务端的验证,而不是眼下这样的client使用的没有schema的“值包(bag of values)”。
未来有何期待
Sinha说,Alpha的特性能预示未来发展的方向。他们将集中精力于让一切更加稳定。这些包含:
优先级和抢占:你能指定一个特定的Pod优先级高于其它Pod。这意味着在集群中资源不足时较低优先级的Pod能够被牺牲。
节点的自己主动污点标记:Taints and tolerations(污点和包容)是1.6引入的特性。它有非常多的使用方式。比如你能够将一个节点专门供某一个特定类型的应用使用,然后说这个节点不能用于调度。在这次公布中,Kuberetes能自己主动推断,相当现于它会说,“OK,这个节点是有污点的(tainted)。由于它好像已经挂掉或者出了什么错或者发生了其它什么状况;它不应该用于调度”。
卷快照更新:在存储端,你已经能指定持久性卷的大小,可是如今新增了调整大小的特性。
扩展kubectl、命令行接口的能力,来自己定义合集群的交互也是1.8版本号中的新功能。
原文链接:https://thenewstack.io/kubernetes-1-8-arrives-improvements-simplicity-stability-security-storage-improvements/
Spring Cloud实战训练营
点击阅读原文链接就可以报名