我正在查看 kubernetes 文档,它似乎具有 Windows 兼容性,但是我没有完全清楚 Linux 和 Windows 是否可以共存(我的意思是,在不同的虚拟机中但在同一个集群中)。
我想知道
gcloud
、azure
或aws
是否支持这种情况。还有使其发挥作用的过程或示例。例如如何在正确的虚拟机(Windows 或 Linux)中创建 pod,以及水平和集群自动缩放器如何工作。
用例是 2 个 API,一个在 Windows(.NET Framework)中运行,另一个在 Linux(python/c++)中运行,我希望能够使用 kubernetes 重新路由它们、能够相互调用、扩展它们等等。请注意,
.NET Framework
应用程序具有无法传递给.NET Core
的依赖项(主要用于数学优化),这意味着我无法将应用程序转换为基于linux的。
有一些历史,容器是 Linux 的东西,所以 Windows 上本身没有容器。 Docker 创建了适用于 Windows 的 Docker,但本质上它的作用是运行 Hyper-V Linux VM(以前是 VirtualBox)并在其中运行容器。从最新的 Docker 版本开始,微软在 Hyper-V 上添加了功能,允许以本机方式运行这些容器,从而可以轻松地在容器中运行 .NET 应用程序。
K8s 是在 Golang 中实现的,因此通过使用 Golang 交叉编译器(或 Windows 上的本机)将主要组件(如kubelet
、
kube-proxy
、
kubectl
)移植到 Windows 通常更容易一个棘手的部分是网络,但看起来他们已经在 就主要提供商的公共云支持而言:
docs中的内容)这个问题非常广泛。只需安装适用于 Windows 的 Docker,设置网络,使用 kubeadm
加入集群,并使用 Pod 中的
nodeSelector
规范安排 Windows 工作负载,并确保使用
beta.kubernetes.io/os=windows
标记 Windows 节点
还有另一个关于使用 Windows 节点设置 Kubernetes 的好指南
由于所有部署都位于 docker 容器中,因此您可以在 Kubernetes 上运行任何操作系统(在 docker 容器中)。还有 Windows。
在同一集群上运行 Windows 和 Linux 容器不会给您带来任何问题。
A working Kubernetes cluster with at least one Linux control plane.
Windows Server 2019 or newer is required to join as a node.
kubelet and kube-proxy must be installed on Windows nodes.
Windows nodes use containerd to run Windows containers.
更多详情请参考官方文档:
[Kubernetes Windows User Guide][1]
[Kubernetes Windows Overview][1]