Kubernetes 的 Windows Server 支持
响应群众呼声,Kubernetes 1.5 包含了对 Windows Servern 的支持。80% 的企业应用运行于 Linux + Java 或 .Net + Windows 平台上。Kubernetes 正在 Preview 阶段的这一功能,是贴近企业需求的一次努力。
Kubernetes Windows Server 2016 以及 Windows 容器支持包含了下列功能的预览版本:
- 容器化的多平台应用
使用操作系统原生语言,例如 Go 和 .NET 核心开发的应用,在以前是不可能再 Linux 和 Windows 之间进行编排的。现在 Kubernetes 有了 windows Server 2016 支持,这些应用就能够同时部署在 Windows 和 Linux 之下了,开发者可以自行选择操作系统运行时。这一功能,消费者已经等了 20 年了。
- 同时支持 Windows Server 容器和 Hyper-V 容器
Windows Server 2016 有两种类型的容器。Windows 容器会共享内核,比较像 Linux 的 Docker 容器。Hyper-V 容器比虚拟机轻量,同时还提供了更好的隔离。他具有独立的内核,直接的内存访问。Kubernetes 对这两种容器都有编排能力。
- 扩展应用生态
为 Kubernetes 添加 Windows Server 支持的一个好处就是扩展了 Kuberntes 应用的生态环境:IIS,.NET,Windows 服务,ASP.NET,.NET 核心,以及一些其他类型的应用现在可以以 Windows Server 容器的形式被 Kubernetes 调度了。
- 支持更多数据中心
包含全球 2000 以及财富 500 的很多企业采用了 Kubernetes,托管了几万个应用。加入 Windows 支持之后,这些组织就可以更近一步的将 Windows 应用纳入 Kubernetes 进行管理了。
将 Windows Server 支持加入 Kubernetes 的过程由 Windows Special Interest Group(SIG) 牵头完成,其中包含了 Apprenda、Google、Red Hat 以及微软等众多厂商。微软的首席项目经理 Taylor Brown 表示:社区工作进一步推动了 Kubernetes 的 windows 容器支持,落实了微软对 Windows 和 Linux 两个生态系统的支持承诺。
使用指南
- 在哪里使用?
现在就可以开始进行测试,并提供反馈。未来的几个月里,这一功能将会进入 GA 状态,可以在这段时间差进行生产环境的设置。
- 能怎么用?
多数的 Kuberntes 对象,比如 Pods,Services,Labels 都和 Windows Container 兼容。
- 还有什么没完善?
因为网络命名空间的问题导致的 Pod 抽象差异。同一个 Pod 内的 Windows 容器无法利用 localhost 进行通信。Linux 容器就可以利用网络命名空间来共享网络栈。 - DNS 能力实现不完整 - 容器内不支持 UDP
- 什么时候可用?
需要再等几个发布周期。在 GA 之前,要理顺网络和一些其他的事情,包含 Windows Nano 和 Windows Server Core 的支持。
技术演示
Roadmap
在 Kuberntes 1.5 中,Windows Server 容器支持正处于 Alpha 阶段,当然并不会止步于此。客户希望获得企业级的稳定的容器调度和管理功能,来支撑整个技术路线。这要求我们对 Windows 和 Linux 一视同仁。Windows Server SIG 将在未来的发布中做出以下增强:
- 网络 SIG 会持续同微软的合作来增强 Windows Server 容器的网络核心,尤其是容器模式的网络,以及本地叠加网络的支持。
- OOBE 增强 Windows Server Node 的设置部署和检测功能,包括在任何云上部署的能力。
- 运行时操作 定义 CRI 监控的过程中,SIG 将在其中扮演重要角色,将为 Windows Server 容器提供深入的监控能力。
起步
请查看 Github 获取更多细节信息,以便尝试 Windows Server 2016 上的 Kubernetes。如果读者愿意帮助促进 Windows Server 支持,请联系 Windows Server SIG,或者联系 SIG Lead Michael Michael。