今天我们很高兴地宣布Kubernetes 1.5发布了。这次发布紧随KubeCon/CloudNativeCon之后。大会上用户云集,对他们如何在Kubernetes上运行应用做了精彩的分享。你们很多人曾表达过在容器中运行有状态应用的兴趣,和最终让所有应用运行在Kubernetes上的愿望。如果你一直等待在Kubernetes中尝试运行某分布式数据库,或者在寻找能让有状态和无状态应用的 应用中断SLO(服务等级指标) 得到保障的途径,那这次发布有你想要的解决方案。
StatefulSet ( 有状态集合 )和 PodDisruptionBudget ( Pod中断预算 )推进到beta版了。这些特性能简化有状态应用的部署和伸缩,并让一些集群操作,如不违背应用中断SLO的节点降级成为可能。
同时你会发现这次发布中包含各种易用性方面的提升,首先你能感受到的就是经常用到的 kubectl
命令行。对于那些感到要配置好一个多集群联合有诸多困难的用户,现在有一个新的 kubefed
命令能帮到你。同时一个呼声最高的用来配置跨多可用区的高可用Master配置脚本已经加入到了kube-up中。
你是否知道Kubernetes社区正在为支持Windows容器而努力呢?如果你的团队有.NET开发者,欢迎关注下这次发布中有关Windows容器的部分。相关工作都还处于早期的alpha阶段,我们期待得到你们的反馈。
最后,对于那些对Kubernetes内核感兴趣的用户,1.5引入了 容器运行时接口 ,简称CRI。它提供了一个内部的接口,将容器运行时从kubelet中抽象并分离出来。这种解耦运行时的设计,能让用户自由选择最能满足自身需求的运行时。这次发布同时引入了容器化的 节点一致性测试 ( node conformance test ),能验证节点的软件是否满足加入Kubernetes集群的最小化要求。
StatefulSet beta版(之前被叫做PetSet)能让那些需要有一致性标识符或者持久化存储的工作负载,能在Kubernetes上进行 创建 , 伸缩 , 删除 或者 修复 。你可以使用StatefulSet来简化任何有状态服务的部署,相关教程和示例能在代码仓库中找到。为了保证一个标识符永远不同一时间被两个Pod使用,Kubernetes的节点控制器不再强制删除一个不响应节点上的Pod,相反的它会等待老的Pod以如下几种方式挂掉:当kubelet报告并确认老的Pod已经生命结束而自动地挂掉;当集群管理员删除了该节点而自动地挂掉;或者当数据库管理员通过强制删除老的Pod并确认可以继续操作。现在用户若通过命令行试着强制删除Pod会收到警告。对于那些要从PetSet迁移到StatefulSet的用户,请遵循 升级指南 。
PodDisruptionBudget
beta版是一个API对象,能指定一个Pod集合在任何时候处于运行状态的副本的最小数量或者最小百分比。有了PodDisruptionBudget,应用部署者可以保证那些会主动移除Pod的集群操作永远不会同一时间放倒太多Pod,从而导致数据丢失,服务中断或者无法接受的服务降级等后果。在Kubernetes 1.5中, kubectl drain
命令支持PodDisruptionBudget,能允许在维护型操作中节点以安全的方式进行削减。同时这个特性很快也会在节点升级和集群自动伸缩器(在删除节点的时候)中采用。这对于那些基于quorum的应用的来说非常有用,能确保运行的副本数目永远不低于足以满足quorum的数目,或者对于一个WEB前端型应用,保证提供负载服务的副本数量永远不低于一个百分比。
Kubefed alpha版是一个新的帮助管理联合集群的命令行工具,能轻易部署新的联合控制面板,执行集群联合中的集群添加和集群删除操作。集群联合中的另外一个更新是,fedoration API新增了 ConfigMap beta版、 DaemonSet alpha版和 deployments alpha版,能让你通过一个端点跨集群地对这些对象进行创建,更新和删除操作。
高可用Masteralpha版允许在GCE上使用kube-up/kube-down脚本来创建或者删除有高可用(复制的)master的集群。能允许配置跨可用区分布式的高可用master,指定每个可用区至少有一个etcd副本,指定每个可用区至少有一个API服务器,以及配置选主式的组件如scheduler和controller-manager跨可用区分布。
Windows Server容器alpha版本提供了对Windows Server 2016节点和调度Windows Server Container的一些起始支持。
容器运行时接口(CRI)alpha版引入了v1版本的 CRI API,支持可插拔式的容器运行时;一个试验性的docker-CRI集成已经做好了接受测试和反馈的准备。
节点一致性测试beta版是一个容器化的测试框架,能为节点提供了系统校验和功能测试。该测试会验证节点是否满足Kubernetes的最低要求;通过了测试的节点被认定有资格加入Kubernetes。节点一致性测试可以在gcr.io/google_containers/node-test:0.2获取到,方便用户可以验证自己节点的设置。
这些我们最新发布中的一些值得重点关注的地方。完整的更新列表请查看 发布日志 。
Kubernetes 1.5能通过 Github上 下载或者通过 get.k8s.io 获得。要上手Kubernetes,可以试试最新的 互动式教程 。别忘了在圣诞假期之前试试1.5版本。
从GA发布以来已经过去一年半了,Kubernetes的用户采纳情况持续超乎预期。在Kubernetes上运行生产环境工作负载的机构已经囊括了世界上最大的公司,年轻的创业公司,和介于两者之前的所有其他公司。因为Kubernetes是开放的,并能在任何地方运行,我们已经看到它被用在各种平台上:Pokémon Go(Google Cloud),Ticketmaster(AWS),SAP(OpenStack),Box(实体机),以及对上面这些环境混合搭配的混杂环境。下面是一些精选的用户示例:
Kuberete的生态系统正在讯速的壮大,这包括微软在Azure Container Service中对Kubernetes的支持,VMWare在它的Photon Platform与Kubernetes的集成,和Canonical对于Kubernetes的商业化支持。除此之外还有已经为Kubernetes用户提供商业化服务的三十多家 技术和服务合作伙伴 。
CNCF最近宣布了 KMSP (Kubernetes管理服务提供商)计划,为那些有帮助企业成功采用Kubernetes的服务提供商提供了一个资格预获的平台。在加深了对Kubernetes的认识和了解后,Linux基金将会和CNCF一起开发和运营Kubernetes的培训和认证项目 - 第一个设计的课程是 Kubernetes基础 。
在过去的三个月里我们看到有超过100名新的贡献者加入项目,推送了约5000次提交,从而让项目完成了新的里程碑,核心项目1000+贡献者,4000+次提交。之所以能拥有如此强大的推动力,只因采用的开放设计,对新理念持有的开放态度,以及使开放社区能对新老贡献者兼收并蓄。在此由衷感谢1.5的发布团队 - 来自Google的Saad Ali,来自Mirantis的Davanum Srinivas和来自CoreOS的Caleb Miles,感谢他们的辛勤劳动让1.5与大家见面。
在线下,社区可以在世界各地的Kubernetes相关的 聚会 找到。在CloudNativeCon/KubeCon Seattle拥挤的大厅能切身感受到社区的力量和范围(摄录的用户分享可以 这里 找到)。下一个CloudNativeCon + KubeCon会在2017年3月29-30日举办,请赶快购票,如果你想做分享请确保在演讲征集截止日期12月16日前 提交演讲提议 。
准备好为社区添砖加瓦了吗?
感谢你们的贡献和支持!
-- Aparna Sinha,高级产品经理,Google
原文链接: Kubernetes 1.5: Supporting Production Workloads ,翻译:钟最龙