本文发布时间已超过一年。较旧的文章可能包含过时内容。请检查页面中的信息自发布以来是否已过时。
Kubernetes v1.9 发布对 Windows Server 容器的 Beta 支持
发表时,Michael Michael 是 SIG-Windows 的负责人。
随着 Kubernetes v1.9 的发布,我们致力于确保 Kubernetes 在任何地方都能良好运行并惠及所有人的使命迈出了重要一步。我们已将对 Windows Server 的支持推进到 Beta 阶段,同时在 Kubernetes 和 Windows 平台上持续推进特性和功能改进。自 2016 年 3 月以来,SIG-Windows 一直致力于为许多 Windows 特定的应用和工作负载在 Kubernetes 上运行打开大门,显著扩展了实施场景和 Kubernetes 在企业中的应用范围。
各种规模的企业都在 .NET 和基于 Windows 的应用上投入了大量资金。如今,许多企业应用组合包含 .NET 和 Windows,Gartner 声称 80% 的企业应用运行在 Windows 上。根据 StackOverflow Insights 的数据,40% 的专业开发者使用 .NET 编程语言(包括 .NET Core)。
但为什么这些信息很重要?这意味着企业同时拥有遗留应用和新生云原生应用(微服务),它们利用了广泛的编程框架。业界正大力推动将现有/遗留应用现代化为容器,采用类似于“拎包入住”(lift and shift) 的方法。将现有应用现代化为容器也为在额外的 Windows 或 Linux 容器中引入新功能提供了更大的灵活性。容器正成为打包、部署和管理现有应用和微服务的事实标准。IT 组织正在寻找一种更简单、更统一的方式来编排和管理其 Linux 和 Windows 环境中的容器。Kubernetes v1.9 现在为 Windows Server 容器提供 Beta 支持,使其成为编排任何类型容器的明确选择。
特性
Kubernetes 对 Windows Server 容器的 Alpha 支持对于概念验证项目和可视化 Kubernetes 中 Windows 支持的路线图来说非常好。然而,Alpha 版本存在显著缺点,并且缺少许多特性,尤其是在网络方面。SIG-Windows、微软、Cloudbase Solutions、Apprenda 以及其他社区成员齐心协力,创建了一个全面的 Beta 版本,使 Kubernetes 用户能够开始评估和使用 Windows。
Kubernetes 上 Windows Server 容器的一些关键特性改进包括
- 对 Pod 的支持得到改进!Pod 中的多个 Windows Server 容器现在可以使用 Windows Server 中的网络隔间共享网络命名空间。此特性使 Pod 的概念与基于 Linux 的容器达到同等水平
- 通过每个 Pod 使用单个网络端点降低网络复杂性
- 使用虚拟过滤平台 (VFP) Hyper-v Switch 扩展(类似于 Linux iptables)的基于内核的负载均衡
- 容器运行时接口 (CRI) 的 Pod 和节点级别统计信息。现在可以使用从 Pod 和节点收集的性能指标对 Windows Server 容器进行配置,以便进行水平 Pod 自动扩缩容
- 支持使用 kubeadm 命令将 Windows Server 节点添加到 Kubernetes 环境。Kubeadm 简化了 Kubernetes 集群的配置,并且通过对 Windows Server 的支持,您可以使用单个工具在您的基础设施中部署 Kubernetes
- 支持 ConfigMaps、Secrets 和 Volumes。这些是关键特性,允许您将容器的配置与实现分离,在某些情况下还能确保安全。Kubernetes 1.9 Windows 支持的亮点在于网络增强。随着 Windows Server 1709 的发布,微软在操作系统和 Windows 主机网络服务 (HNS) 中启用了关键的网络功能,为生成一系列与 Kubernetes 中的 Windows Server 容器配合使用的 CNI 插件铺平了道路。Kubernetes 1.9 支持的 Layer-3 路由和网络 overlay 插件如下所示
- 上游 L3 路由 - 在上游 ToR 中配置 IP 路由
- 主机网关 - 在每个主机上配置 IP 路由
- Open vSwitch (OVS) 和 Open Virtual Network (OVN) 带 Overlay - 支持 STT 和 Geneve 隧道类型 您可以阅读更多关于它们各自的配置、设置和运行时能力的信息,以便为您的 Kubernetes 网络栈做出明智的选择。
尽管您必须继续在 Linux 中运行 Kubernetes 控制平面和主控组件,但您现在可以在 Kubernetes 中引入 Windows Server 作为节点。作为一个社区,这是一个巨大的里程碑和成就。我们现在将开始在 Kubernetes 中看到 .NET、.NET Core、ASP.NET、IIS、Windows 服务、Windows 可执行文件以及更多基于 Windows 的应用。
未来展望
此 Beta 版本的发布投入了大量工作,但社区意识到在将 Windows 支持作为 GA(正式发布)用于生产工作负载之前,还需要进一步投入。2018 年前两个季度的一些重点领域包括
- 继续在网络领域取得进展。更多 CNI 插件正在开发中,并接近完成
- Overlay - win-overlay(使用 Flannel 的 vxlan 或 IP-in-IP 封装)
- Win-l2bridge(主机网关)
- 使用云网络构建 OVN - 不带 overlays
- 在 ovn-kubernetes 中支持 Kubernetes 网络策略
- 支持 Hyper-V 隔离
- 支持有状态应用的 StatefulSet 功能
- 生成可在任何基础设施和许多公共云提供商(如 Microsoft Azure、Google Cloud 和 Amazon AWS)上运行的安装工件和文档
- SIG-Windows 的持续集成/持续交付 (CI/CD) 基础设施
- 可伸缩性和性能测试 尽管我们尚未确定 GA 的时间表,但 SIG-Windows 预计将在 2018 年上半年发布 GA 版本。
参与其中
随着我们在 Kubernetes 中将此特性推进至正式发布阶段,我们欢迎您参与其中,贡献代码,提供反馈,将 Windows Server 容器部署到您的 Kubernetes 集群,或简单地加入我们的社区。
- 如果您想开始在 Kubernetes 中部署 Windows Server 容器,请阅读我们的入门指南:/docs/getting-started-guides/windows/
- 我们每隔一周的周二东部标准时间 (EST) 12:30 在 https://zoom.us/my/sigwindows 进行会议。我们所有的会议都记录在 YouTube 上,您可以在 https://www.youtube.com/playlist?list=PL69nYSiGNLP2OH9InCcNkWNu2bl-gmIU4 查看。
- 在 Slack 上与我们聊天:https://kubernetes.slack.com/messages/sig-windows
- 在 GitHub 上找到我们:https://github.com/kubernetes/community/tree/master/sig-windows