Windows和Linux一起生活在Kubernetes集群中

时间:2018-09-06 07:30:41

标签: linux windows amazon-web-services kubernetes gcloud

我当时正在看的kubernetes documentation似乎具有Windows兼容性,但是我还不确定Linux和Windows是否可以一起生活(我的意思是,在不同的VM中,但在同一群集中)。

我想知道在gcloudazureaws中是否对此场景有任何支持。并且,使它起作用的过程或示例。例如,如何在正确的VM(Windows或Linux)中创建Pod,以及水平和群集自动缩放器的工作方式。

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

2 个答案:

答案 0 :(得分:7)

有些历史,因此容器是Linux的东西,因此Windows上本身就没有容器。 Docker为Windows创建了Docker,但实际上它是运行Hyper-V Linux VM(以前是VirtualBox)并在其中运行您的容器。从最新的Docker版本开始,Microsoft在Hyper-V上添加了功能,以允许在本地运行这些容器,从而使得在容器中轻松运行.NET apps

K8s是用Golang实现的,因此通常更容易通过使用Golang交叉编译器将kubeletkube-proxykubectl之类的主要组件移植到Windows。 Windows)

网络是一个棘手的部分,但看起来他们已经在docs中找到了答案

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

  • AWS

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

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

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

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

关于使用Windows节点here

设置Kubernetes,还有另一本很好的指南。

答案 1 :(得分:3)

是的,这应该可行。

由于所有部署都位于Docker容器中,因此您可以在Kubernetes上(在Docker容器中)运行任何操作系统。还有Windows。

在同一群集上运行Windows和Linux容器都不会给您带来任何问题。