Red Hat OpenShift 对 Windows 容器的支持为在 OpenShift Container Platform 上运行 Microsoft Windows Server 容器提供了内置支持。对于那些管理具有 Linux 和 Windows 工作负载混合的异构环境的管理员,OpenShift Container Platform 允许您部署在 Windows Server 容器上运行的 Windows 工作负载,同时还提供托管在 Red Hat Enterprise Linux CoreOS (RHCOS) 或 Red Hat Enterprise Linux (RHEL) 上的传统 Linux 工作负载。
不支持具有 Windows 节点的集群的多租户。当多个工作负载在共享的基础设施和资源上运行时,集群被认为是多租户的。如果在基础设施上运行的一个或多个工作负载不可信,则多租户环境被认为是敌对的。 敌对的多租户集群会在所有 Kubernetes 环境中引入安全问题。额外的安全功能,如Pod 安全策略,或对节点更细粒度的基于角色的访问控制 (RBAC),会使利用您的环境变得更加困难。但是,如果您选择运行敌对的多租户工作负载,则虚拟机管理程序是您应该使用的唯一安全选项。Kubernetes 的安全域包含整个集群,而不是单个节点。对于这些类型的敌对多租户工作负载,您应该使用物理隔离的集群。 Windows Server 容器使用共享内核提供资源隔离,但不打算用于敌对多租户场景。涉及敌对多租户的场景应使用 Hyper-V 隔离容器来强力隔离租户。 |
要在集群中运行 Windows 工作负载,您必须首先安装 Windows 机器配置操作符 (WMCO)。WMCO 是一个基于 Linux 的操作符,它运行在基于 Linux 的控制平面和计算节点上。WMCO 编排在集群上部署和管理 Windows 工作负载的过程。
在部署 Windows 工作负载之前,您必须创建一个 Windows 计算节点并使其加入集群。Windows 节点在集群中托管 Windows 工作负载,并且可以与其他基于 Linux 的计算节点一起运行。您可以通过创建 Windows 计算机器集来托管 Windows Server 计算机来创建 Windows 计算节点。您必须将 Windows 特定的标签应用于计算机器集,以指定 Windows 操作系统映像。
WMCO 监视具有 Windows 标签的机器。检测到 Windows 计算机器集及其相应的机器已配置后,WMCO 会配置底层的 Windows 虚拟机 (VM),以便它可以作为计算节点加入集群。
WMCO 期望在其命名空间中预先确定一个秘密,其中包含用于与 Windows 实例交互的私钥。WMCO 在启动时检查此秘密,并创建一个用户数据秘密,您必须在创建的 Windows MachineSet
对象中引用它。然后,WMCO 使用与私钥对应的公钥填充用户数据秘密。有了这些数据,集群就可以使用 SSH 连接连接到 Windows VM。
集群与 Windows VM 建立连接后,您可以使用与基于 Linux 的节点类似的方法来管理 Windows 节点。
OpenShift Container Platform Web 控制台为 Windows 节点提供了与 Linux 节点相同的监控功能。但是,目前无法监控在 Windows 节点上运行的 Pod 的工作负载图表。 |
可以使用典型的 Pod 调度实践(如污点、容忍度和节点选择器)将 Windows 工作负载调度到 Windows 节点;或者,您可以使用RuntimeClass
对象区分 Windows 工作负载与 Linux 工作负载和其他 Windows 版本的工作负载。
以下 Windows 特定的服务安装在每个 Windows 节点上
服务 | 描述 |
---|---|
kubelet |
注册 Windows 节点并管理其状态。 |
容器网络接口 (CNI) 插件 |
为 Windows 节点公开网络。 |
Windows 实例配置守护程序 (WICD) |
维护 Windows 实例上运行的所有服务的状体,以确保实例能够充当工作节点。 |
从 Windows 节点导出 Prometheus 指标 |
|
与底层的 Azure 云平台交互。 |
|
hybrid-overlay |
创建 OpenShift Container Platform 主机网络服务 (HNS)。 |
kube-proxy |
维护节点上的网络规则,允许外部通信。 |
containerd 容器运行时 |
管理完整的容器生命周期。 |
CSI 代理 |
使 CSI 驱动程序能够在节点上执行存储操作,这允许容器化的 CSI 驱动程序在 Windows 节点上运行。 |