首页 > 解决方案 > Windows 和 Linux 在 Kubernetes 集群中共存

问题描述

我正在查看似乎具有 Windows 兼容性的kubernetes 文档,但是我并不完全清楚 Linux 和 Windows 是否可以一起生活(我的意思是,在不同的 VM 中但在同一个集群中)。

我想知道gcloud,azure或中是否支持这种情况aws。还有,使它工作的程序或例子。比如如何在正确的虚拟机(windows 或 linux)中创建一个 pod,以及水平和集群自动缩放器如何工作。

用例是 2 个 API,一个在 windows (.NET Framework) 中运行,另一个在 linux (python/c++) 中运行,我希望能够重新路由它们,能够相互调用,使用 kubernetes 扩展它们等等。请注意,.NET Framework应用程序具有无法传递给的依赖项(主要用于数学优化).NET Core,这意味着我无法将应用程序转换为基于 linux 的.

标签: linuxwindowsamazon-web-serviceskubernetesgcloud

解决方案


一些历史,所以容器是 Linux 的东西,所以在 Windows 上没有容器本身。Docker 为 Windows 创建了 Docker,但本质上它所做的是运行 Hyper-V Linux VM(以前是 VirtualBox)并在其中运行您的容器。在最新的 Docker 版本中,微软在 Hyper-V 上添加了功能,允许在本地运行这些容器,从而可以轻松地在容器中运行.NET 应用程序

K8s 是在 Golang 中实现的,因此通常更容易通过使用 Golang 交叉编译器(或 Windows 上的本机)将主要组件(如kubelet, kube-proxy, )kubectl移植到 Windows

一个棘手的部分是网络,但看起来他们已经在文档中弄清楚了

至于主要提供商的公共云支持:

  • AWS

    • 管理程序:修改过的 Xen 或 KVM。没有嵌套的虚拟化支持。
    • 虚拟机:Windows 虚拟机。无法通过嵌套虚拟化利用 Hyper-V,但可以运行 Docker for Windows。
    • 裸机:(撰写本文时为 i3.metal)。本机运行 Hyper-V 和适用于 Windows 的 Docker。
  • 天蓝色

    • 管理程序:Hyper-V。在某些实例类型上支持嵌套虚拟化。
    • 虚拟机:Windows 虚拟机,可以使用 Hyper-V 的嵌套虚拟化,并且可以运行 Docker for Windows。
    • ACS、AKS、ACE:应该能够利用带有嵌套虚拟化的 Hyper-V 以及本机的某些情况。
  • GCP

    • 管理程序:KVM。在某些实例类型上支持嵌套虚拟化。
    • 虚拟机:Windows 虚拟机。可以运行带有嵌套虚拟化的 Hyper-V,并且可以运行 Docker for Windows。

除此之外,我不知道它还有什么(除了文档中的内容)这个问题非常广泛。只需安装适用于 Windows 的 Docker,设置网络,加入集群kubeadm并使用 pod 中的规范安排 Windows 工作负载nodeSelector,并确保将 Windows 节点标记为beta.kubernetes.io/os=windows

这里有另一个关于使用 Windows 节点设置 Kubernetes 的好指南


推荐阅读