Kubernetes 1.9:Windows Server 容器支持进入 Beta 阶段

Tags: 

Kubernetes v1.9 已经发布,“到处可用,人人可用”的目标又前进一步。我们对 Windows 服务器的支持在 Windows 和 Kubernetes 两方面都有很大进步,现已提升到 Beta 阶段。SIG-Windows 从 2016 年 3 月开始工作,目的是为 Windows 应用和负载打开 Kubernetes 大门,这一目标极大的扩展了 Kubernetes 的应用场景,同时也降低了企业用户应用 Kubernetes 的门槛。

各种规模的企业都有大笔在 .NET 和 Windows 应用的投资。Gartner 声称(注1) 80% 的企业应用在 Windows 上运行。根据 StackOverflow 的分析,40% 的个人开发者在使用 .NET 开发(包括 .NET Core)。

这些信息的重要性在哪?有传统企业应用,也有为云而生的微服务,覆盖各种编程框架。企业正在将现有/传统应用以“抬起-搬走”的方式进行容器化。容器化进程还给传统应用带来了特有的弹性。不论是传统还是微服务应用,容器都已经成为打包、发布以及管理的事实标准。IT 组织寻求一种简单的、同质的方式来对 Windows 和 Linux 容器进行编排和管理。现在 Kubernetes 1.9 为 Windows Server 容器提供了 Beta 支持,使之成为编排多种容器的不二之选。

特性

Kubernetes 对 Windows Server 容器的支持,在 Alpha 阶段就成功的完成了 PoC 过程,让 Windows 的 Kubernetes 支持路线变得清晰。然而毕竟是 Alpha,其中还是有一些明显的弱点,缺少一些功能,尤其是网络方面。SIG-Windows 成员(包括微软、Cloudbase Solutions、Apprenda 等)协力贡献出了全面进步的 Beta 版本,让 Kubernetes 用户可以开始评估和使用 Windows。

Kubernetes 的一些 Windows Server 方面的关键特性包括:

  • Pod 支持增强!现在可以用一个 Pod 包裹多个 Windows Server 容器,从而通过 Windows Server 的 network compartments 共享网络命名空间。这一特性同 Linux 容器达成了一致。
  • 每个 Pod 使用一个网络端点,简化了网络。
  • 使用 Virtual Filtering Platform(VFP) Hyper-v Switch 扩展(类似 Linux 的 iptables),提供了内核级别的负载均衡。
  • 容器运行时接口(CRI) Pod 和 Node 级别的统计。Windows Server 容器现在可以使用来自 Pod 和 Node 的指标进行分析和 HPA 了。
  • 能够使用 kubadm 命令把 Windows Server 节点加入 Kubernetes 环境了。Kubeadm 简化了 Kubernetes 集群的实施过程,有了对 Windows Server 的支持,就可以用单一工具进行 Kubernetes 部署了。
  • 加入对 ConfigMap、Secret 以及 Volume 的支持。这些是将配置和实现进行分离(和加密)的关键功能。

然而,如果说 Kubernetes 1.9 的 Windows Server 支持是一顶王冠,那么王冠上的名珠就是网络部分的增强了。Windows Server 1709 的发布,微软在操作系统以及 Windows Host Networking Service(HNS)中放出了一些关键的网络功能,为 CNI 插件铺平了道路。支持 Kubernetes 1.9 的三层路由和网络叠加插件有:

  1. Upstream L3 Routing - 上级 ToR 配置 IP 路由
  2. Host-Gateway - 在每一 Node 上配置 IP 路由。
  3. Open vSwitch (OVS) & Open Virtual Network (OVN) with Overlay - STT 和 Geneve 隧道支持。

可以跟进阅读 configuration, setup, and runtime capabilities)(注2) 来获得 Kubernetes 网络栈选择的更多信息。

虽然还需要在 Linux 中运行 Kubernetes 控制平面以及 Master 组件,但是已经可以让 Wndows Server 作为一个 Node 出现了。这是社区的巨大进步,是一个里程碑事件。我们将会在 Kubernetes 中见到 .NET、.NET Core、ASP.NET、IIS、Windows 服务、Windows EXE 等更多基于 Windows 应用的运行。

下一步

Beta 阶段意味着完成了很多任务,社区认为进入 GA 之前还需要继续投入更多,才能够投入生产使用。2018 上半年的一些关键点包括:

  1. 持续网络方面的工作,更多的 CNI 插件正在开发或接近完成:
    • Overlay - win-overlay(vxlan 或 Flannel 的 IP-in-IP )
    • Win-l2bridge(host-gateway)
    • OVN using cloud networking - 无叠加
  2. 在 OVN 中支持 Kubernetes 网络策略。
  3. 支持 Hyper-V 隔离。
  4. 为有状态应用提供 StatefulSet 功能。
  5. 生成安装工件和文档,能够适配任何基础设施,以及多数公有云提供商。
  6. SIG-Windows 的持续集成和持续发布基础设施。
  7. 弹性和性能测试。

虽然还没有提交 GA 时间线,SIG-Windows 预测 GA 版本将会在 2018 上半年发布。

  1. http://www.gartner.com/document/3446217

  2. https://kubernetes.io/docs/getting-started-guides/windows/