linux - 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 的.
解决方案
一些历史,所以容器是 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 的好指南
推荐阅读
- tensorflow - 混合精度训练导致 NaN 损失
- java - Java - 使用反射扫描所有包中的类
- c - 如何使用 emscripten 将 C GNU 科学库 (GSL) 编译为 Web 程序集?
- c++ - 在 C++20 中迭代结构的成员
- arduino - denavit hartenberg 6dof moveo 反向运动机械臂
- aws-lambda - 在 AWS Cognito 中,我想首先在移动设备上使用 otp 验证用户,然后设置密码
- node.js - http-proxy-middleware 一半时间没有响应
- if-statement - Excel-2010:VLOOKUP() 还是其他?
- python - 日期的 Python F-String 格式,如字符串
- amazon-web-services - 如何使用 cloudSearch SDK 将文件从 aws Lambda 函数索引到 aws cloudSearch Domain?