Kubernetes 1.4发布:让Kubernetes能在任何地方更简单地运行
Kubernetes 1.4
作者:kubernetes官方文档
译者:钟最龙
2017-01-17 07:56

今天我们很高兴地宣布Kubernetes 1.4发布了。

自我们十五个月前发布了正式版以来,Kubernetes一直在不断成长并赢得了各界广泛的认可。不论是新成立的创业公司或者大规模的商业公司,用户一致认为Kubernetes在构建、部署和管理分布式应用中发挥了重要作用。与此同时,一直以来一个最大的用户请求是让Kubernetes自身更易于安装和使用。我们对这个反馈非常地认真对待,并在1.4的版本中做出了很多重大改进。

众多在设置和易用性方面的改进是社区齐心协力的成果 – 来自“集群生命周期特别兴趣小组”(SIG-Cluster-Lifecycle)的超过20位贡献者共同努力大大地简化了Kubernetes的使用体验,包括在安装、启动、证书生成、(服务)发现、网络和应用部署方面的提升。

这次发布中的其他亮点包括简化在任何云环境中的部署,简化有状态应用的安装,大大地扩展集群联合(Cluster Federation)能力,跨集群和跨云环境的部署因此变得简单了。

有哪些新功能

两条命令创建一个集群

要开始使用Kubernetes用户必须配备好节点,安装Kubernetes并且启动集群。一个经常能听到的用户请求是希望能有一个在任何的云环境上(公共的,私有的或直接安装于裸机上的)适用的、简单的、可移植的安装方法。

  • Kubernetes 1.4引入了kubeadm(http://kubernetes.io/docs/getting-started-guides/kubeadm/)工具,让启动简化成了两条命令,再也无需复杂的脚本。一旦Kubernetes安装好,kubeadm init用来启动主节点,kubeadm join用来将其他节点加入集群中。
  • 对于绝大多数的Linux发行版(包括Red Hat和Ubuntu Xenia)来说,通过将Kubernetes和依赖合并打包,让安装过程变得更顺畅。这意味着用户可以使用熟悉的apt-get或者yum工具来安装Kubernetes。
  • 扩展功能的部署,如重叠网络(overlay network),可以通过使用一个Daemon Set(守护进程组)简化成一条命令。
  • 让这些简化成为可能的背后是一个新的证书API以及它在Kubelet的TLS启动中的应用,和一个新的服务发现API。 

扩展了对有状态应用的支持

尽管云原生的应用的构建之初是用来运行在容器之中的,很多已有的应用需要额外的特性辅助才能采用容器。最常见的,包括有状态的应用如批处理,数据库和键值型存储。在Kubernetes 1.4中,我们引入了很多的特性来简化这种应用的部署,包括:

  • 引入了处于Alpha阶段的Scheduled Job(http://kubernetes.io/docs/user-guide/scheduled-jobs/),让用户可以定期地运行批处理作业。
  • Init-containers处于Beta阶段了,解决了需要在启动主应用程序之前启动一个或者多个容器的问题,例如,可以在启动数据库或者多层应用的时候将依赖顺序化。
  • Dynamic PVC Provision(对动态持久型卷请求声明的配备)现在处于Beta阶段了。通过使用一个新的Storage Class API对象,这个特性现在能让集群的管理者暴露多个存储提供器并且让用户进行选择。
  • 经过精细心挑选组合和预先测试的Helm chart可以用于常见的有状态的应用如MariaDB,MySQL和Jenkins,只需要使用Helm Package Manager的v2版本的一个命令就可以启动起来。

扩展集群联合API的功能

我们全球客户请求最多的一个能力就是想构建能跨区域、跨云环境的应用。

  • Federated Replic Set(联合副本集合)Beta版——副本现在可分布在一些或者所有的集群中来进行跨区域或者跨云环境的复制。联合副本集合控制器(Federated replica-set controller)会不断调整个集群联合中副本总数,相应集群的权重/副本数量,以保证在每一个区域或者云环境的Pod数量满足需求。
  • Federated Service(联合服务)现在处于Beta阶段了。联合API还添加了Secret、Event和Namespaces的内容。
  • Federated Ingress(联合入口)Alpha版——从Google Cloud Platform(GCP)开始,用户可以创建一个七层的全局负载均衡虚拟IP地址,用来负载GCP中分散部署在集群联合中的服务。有了GCP中的联合入口,外部的客户端只需要指向一个IP地址,请求就会发送到GCP中最近的任何区域或者任何可用区中一个有可用容量的集群。 

容器安全支持

多租户的集群的管理员需要系统能提供组合不同权限能力,以供不同租户、基础设施的组件和最终用户使用。

  • Pod Security Policy(Pod安全策略)是一个新的对象,可以让集群管理创建或者验证容器或Pod的安全性场景。管理员可以结合服务账号、用户组和用户,用一组限制条件来定义一个安全性场景。
  • 加入了AppArmor(应用铠甲),能让管理员更安全地进行部署,更好地对系统能进行审计和监控。用户通过设置一个字段即可以让容器披上AppArmor铠甲运行。 

基础设施的提升

根据用户和生态系统的需求,我们继续完善调度器、存储和客户端的功能。

  • 调度器——对那些想自定义Kubernetes合放或者分散Pod的用户,我们发布了inter-pod(Pod间拓扑亲和力)和anti-affinity(Pod间拓扑反亲和力)的Alpha版本。同时,发布了对集群扩展如DNS,Heapster和Kube Dashboard的(高)优先级调度能力。
  • Disruption SLO(中断服务等级指标)——引入了Pod Disruption Budget(Pod中断预算)来限制集群的管理操作(比如节点升级)在任何一个时间将Pod删除带来的影响。
  • 存储——添加了新的支持Quobyte和Azure Data Disk的卷插件。
  • 客户端——添加了Swagger 2.0的支持,以支持非Go语言的客户端。

Kubernetes控制面板UI

最后,提供了一个十分好看的Kubernetes控制面板界面,具有命令行九成的能力,让你可以一览全局的管理。

在GitHub上的发布日志(https://github.com/kubernetes/kubernetes/pull/33410)上可以看到完整的更新列表。除了特性丰富之外,Kubernetes开发的最让人叹服的是贡献者社区。这对于1.4版本来讲尤其正确,这在接下来的数周里将会充分体现。

如何获取

Kubenetes可以在get.k8s.io(http://get.k8s.io/)上下载,或者通过GitHub(http://github.com/kubernetes/kubernetes)的开源仓库下载。要开始使用上手Kubernetes,可以尝试Hello World app(http://kubernetes.io/docs/hellonode/)。

要参与到项目中来,可以加入每周社区会议或者开始向项目做贡献。

用户和案例研究

自从Kubernetes 1.0正式版发布以来,在过去的十五个月里,对项目的采用和激情已经远远超出了每个人的想象。Kubernetes在数百的机构生产环境跑着,在开发环境跑着的则比这多出数千计。这里是一些使用Kubernetes的公司:

  • Box ——交付的时间加快了,推出一个服务的时间从六个月缩短到不到一周。查看这里(https://blog.box.com/blog/kubernetes-box-microservices-maximum-velocity/)看Box如何在生产环境用Kubernetes运行关键性服务的。
  • Pearsson ——将复杂度降到最低,并提升了工程师们的生产效率。查看这里(http://kubernetes.io/case-studies/pearson)看Pearson如何用Kubernetes改造世界上最大的教育类公司。
  • OpenAPI ——一个非盈利的人工智能研究公司,用Kuberetes来搭建深度学习的基础设施(https://openai.com/blog/infrastructure-for-deep-learning/),通过让研究者专注科学而极大提升了他们的生产效率。

我们非常感激社区,正是社区中超过900名贡献者超过5000次的代码提交,才让这次发布成为可能。要查看更多关于社区是如何使用Kubenerete的,欢迎加入用户大会KubeCon(http://events.linuxfoundation.org/events/kubecon)来直接聆听更多的用户和贡献者的分享。

连接

  • 在StackOverflow(http://stackoverflow.com/questions/tagged/kubernetes)上发表问题或者回答问题
  • 在Slack(http://slack.k8s.io/)上与社区保持联系
  • 在Twitter上关注我们@Kubernetesio(https://twitter.com/kubernetesio)的最新资讯

谢谢你们的支持!

——来自Aparna Sinha,Google项目经理

原文链接:

Kubernetes 1.4: Making it easy to run on Kubernetes anywhere

http://blog.kubernetes.io/2016/09/kubernetes-1.4-making-it-easy-to-run-on-kuberentes-anywhere.html 


510 comCount 0