我当时正在看的kubernetes documentation似乎具有Windows兼容性,但是我还不确定Linux和Windows是否可以一起生活(我的意思是,在不同的VM中,但在同一群集中)。
我想知道在gcloud
,azure
或aws
中是否对此场景有任何支持。并且,使它起作用的过程或示例。例如,如何在正确的VM(Windows或Linux)中创建Pod,以及水平和群集自动缩放器的工作方式。
用例是2个API,一个在Windows(.NET Framework)中运行,另一个在linux(python / c ++)中运行,我希望能够重新路由它们,能够相互调用,缩放它们等等。使用kubernetes。注意,.NET Framework
应用程序具有无法传递给.NET Core
的依赖项(主要用于数学优化),这意味着我无法将应用程序转换为linux-based。
答案 0 :(得分:7)
有些历史,因此容器是Linux的东西,因此Windows上本身就没有容器。 Docker为Windows创建了Docker,但实际上它是运行Hyper-V Linux VM(以前是VirtualBox)并在其中运行您的容器。从最新的Docker版本开始,Microsoft在Hyper-V上添加了功能,以允许在本地运行这些容器,从而使得在容器中轻松运行.NET apps。
K8s是用Golang实现的,因此通常更容易通过使用Golang交叉编译器将kubelet
,kube-proxy
,kubectl
之类的主要组件移植到Windows。 Windows)
网络是一个棘手的部分,但看起来他们已经在docs中找到了答案
关于主要提供商的公共云支持:
AWS
天蓝色
GCP
除此之外,我不知道它还有什么(docs中的内容除外),这个问题非常广泛。只需安装适用于Windows的Docker,设置网络,通过kubeadm
加入群集并使用Pod中的nodeSelector
规范来计划Windows工作负载,并确保使用beta.kubernetes.io/os=windows
标记Windows节点>
关于使用Windows节点here
设置Kubernetes,还有另一本很好的指南。答案 1 :(得分:3)
是的,这应该可行。
由于所有部署都位于Docker容器中,因此您可以在Kubernetes上(在Docker容器中)运行任何操作系统。还有Windows。
在同一群集上运行Windows和Linux容器都不会给您带来任何问题。