风一样的男人
作者风一样的男人·2017-09-29 14:26
系统工程师·长春一汽

Kubernetes 1.8火热出炉:稳定性、安全性与存储支持能力全面提升

字数 2527阅读 1622评论 0赞 4

周三,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的稳定性。此外,新打造的度量服务器拥有更高可读性更加易懂的错误输出,能帮助在问题发生时指示出错原因和位置。

同时,Workload API处于beta状态。他们提供了必要的管理Kuberentes上部署的应用的抽象。Chiang解释了四种类型:

1、DaemonSet用于管理在所有节点、或者是基于用户指定条件的部分节点上运行Pod的复杂度。
2、ReplicaSet提供了一个基础的高可用原语,来保证指定数量的Pod副本处于运行状态。
3、Deployment controller使得可以对Pod和ReplicaSet进行声明式更新,并提供关键功能如金丝雀更新和滚动更新。
4、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致力让安装更加容易。只需两行命令就能架设好一个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验证特性,能让客户端有更加健壮的体验。这次更新能让CRD定义资源在服务端的验证,而不是目前这种客户端使用的没有schema的“值包(bag of values)”。

未来有何期待

Sinha说,Alpha的特性能预示未来发展的方向。他们将集中精力于让一切更加稳定,这些包括:

优先级和抢占:你能指定一个特定的Pod优先级高于其他Pod,这意味着在集群中资源不足时较低优先级的Pod可以被牺牲。

节点的自动污点标记:Taints and tolerations(污点和包容)是1.6引入的特性。它有很多的使用方式。例如你可以将一个节点专门供某一个特定类型的应用使用,然后说这个节点不能用于调度。在这次发布中,Kuberetes能自动判断,相当现于它会说,“OK,这个节点是有污点的(tainted),因为它好像已经挂掉或者出了什么错或者发生了其他什么状况;它不应该用于调度”。

卷快照更新:在存储端,你已经能指定持久性卷的大小,但是现在新增了调整大小的特性。

扩展kubectl、命令行接口的能力,来自定义合集群的交互也是1.8版本中的新功能。

本文转自微信公众号: Docker

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

4

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广