Kubernetes 1.5 发布,改进了 StatefulSet,增加了对 Windows Server 2016 的 alpha 支持

阅读数:1554 2017 年 1 月 3 日

话题:DevOps语言 & 开发Kubernetes

Cloud Native Computing Foundation(CNCF)发布了Kubernetes容器编排和调度系统的1.5 版。其核心改进之处在于提供了与带状态应用的部署和扩展以及不中断应用的情况下执行集群操作相关的 beta 功能。它也提供了对可插拔容器运行时、Windows Server 2016 节点以及 Windows Server 容器调度的 alpha 支持。由于配置存在潜在安全问题,建议所有用户跳过 1.5.0 版,改为使用具有更安全的默认配置的 1.5.1 版。

Kubernetes 的初始1.5 版主要关注标记为“alpha”和“beta”的交付:

  • StatefulSet(之前叫“PetSet”)功能提升为 beta,进一步支持 Kubernetes 上持久标识和每实例存储的创建和管理;
  • PodDisruptionBudget也提升为 beta,可用于确保完成应用程序服务级别目标(SLO)的同时安全地排除节点;
  • 在 alpha 中发布了改进的联合支持,包括一个新命令“kubefed”
  • 通过进一步改进kubeadm命令简化了集群的部署;
  • 高可用的主节点的 alpha 支持;
    • 这一功能通过使用“kube-up”和“kube-down”脚本复制 Kubernetes 主节点实现,现在只有Google Compute Engine (GCE)具有该功能。
  • Windows Server 2016节点的 alpha 支持和对 Windows Server 容器以及 Hyper-V 容器调度的 alpha 支持;
  • 在 alpha 中引入了Container Runtime Initiative(CRI) API,这样就能支持可插拔的容器运行时;
    • 一个实验性的Docker-CRI集成插件已准备测试和获取反馈;
    • cri-o是 Kubernetes 容器运行时接口的一个基于 OCI 的实现。该接口使用了runc。cri-o 也可用了,但是当前被标记为“预览测试版”;
    • Kelsey Hightower是一位 Google Staff Advocate,在 Kubernetes 社区无人不晓。他在 GitHub 上发布了开源工程cri-o Tutorial,献给那些渴望试用这项功能的开发人员;
  • 对访问 Kubelet API 的验证和授权能力;
  • dashboard 界面现在显示所有用户面向的对象以及它们的资源使用情况。

在 12 月 12 号发布 Kubernetes 的初始 1.5.0 版之后,在谷歌 Kubernetes 声明小组内进行的一场讨论,强调了几处配置选项的改动可能导致潜在的安全问题,这些配置在单独使用时没有问题,但是合在一起就会导致集群不安全。为了解决这一问题,Kubernetes 的1.5.1 版第二天就发布了。建议所有用户跳过 1.5.0 版,改为使用具有更安全的默认配置的 1.5.1 版。本文接下来介绍添加到最初的 1.5.0 版本的新功能。

beta 阶段的StatefulSet(之前叫“PetSet”)支持 Kubernetes 上持久标识和每实例存储的创建扩展删除修复。该功能做了几点关键的安全性提升。为了确保绝不会有 pod 具有相同标识,Kubernetes 节点控制器不再自动“强制删除”无响应节点上的 pod,而是等待下列三个条件之一成立:Kubelet 确认老的 pod 被结束了;集群管理员删除了对应的节点;集群管理员通过命令行接口“强制删除”了 pod。有一份升级指南帮助操作员从 PetSet 升级到 StatefulSet。

beta 阶段的PodDisruptionBudget是一个 API 对象,它指定了一个 pod 集合任何时候可用时副本的最少数目或最小比例。根据 Kubernetesd 的发布说明,通过使用 PodDisruptionBudget,应用部署人员能够确保完成组织的服务级目标(SLO),通过保证自愿清除 pod 的集群操作绝不会同时清除过多的 pod 以致数据丢失、宕机或者“不可接受的服务降级”。

alpha 版的Kubefed是一个新的命令行工具,辅助联合集群的管理、降低部署新的联合控制面板的难度以及从现有联合集群中添加或者移除集群。集群联合方面还为ConfigMapsDaemonSets以及部署联合 API新加了 alpha 版的 API 功能,因此可以从单一端点创建、更新和删除跨多个集群的对象。

Windows server 容器 containers为 Windows Server 2016 节点和Windows Server 容器 Containers以及Hyper-V 容器 Containers的调度提供了初步支持。该功能的实现是由 Apprenda 领衔多厂商联袂打造的,其中谷歌、小红帽和微软作出了卓越的贡献。在 1.5 版本中,Kubernetes 控制面板(API 服务器、调度器、控制器管理器等等)继续运行在 Linux 上,而 kubelet 和 and kube-proxy 可以在 Windows Server 上运行。网络通信功能是使用 L3 路由实现的。但是依据 Kubernetes 文档,当前第三方网络插件(例如,flannel、calico 等等)无法直接在 Windows Server 上运行,因此为了提供核心的网络通信功能,依赖了 Windows 和 Linux 内置的现成技术。

Kubernetes 的 1.5 版可以从 GitHub 和 get.k8s.io 上下载。在 Kubernetes 博客上可以找到本次发布的额外信息。

查看英文原文: Kubernetes 1.5 Released with Improved StatefulSets and Alpha Support for Windows Server 2016


感谢冬雨对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们。