Skip to content

Windows 支持

张祖建 edited this page May 11, 2022 · 3 revisions

从 v1.10 版本开始, Kube-OVN 支持运行在包含有 Windows 节点的 Kubernetes 集群中。

已知限制

  1. 安装 Kube-OVN 时必须禁用 SSL,如果通过安装脚本进行部署,ENABLE_SSL 必须设置为 false
  2. 暂不支持在 Windows 节点上部署 kube-proxy,因此 Kubernetes Service 无法通过 Windows 节点访问;
  3. 暂不支持 IPv6 单栈网络或 IPv4/IPv6 双栈网络;
  4. 暂不支持 Pod/Workload QoS;
  5. Windows 节点不支持子网的动态增删,在 Windows 节点上部署 Kube-OVN 前必须先创建好所有子网;
  6. Windows 节点不支持多个 ProviderNetwork 资源,Underlay 网络只支持一个名为 provider 的 ProviderNetwork;
  7. Windows 节点不支持动态隧道接口配置,部署完成后隧道接口配置无法改变;
  8. Windows 节点不支持动态 ProviderNetwork 桥接网口配置。

环境要求

  1. Kubernetes 版本不低于 v1.17;
  2. Windows 节点仅支持 64 位 Windows Server 2019;
  3. Windows 节点需要至少包含 Windows Server 2019 License 以运行容器;
  4. Windows 节点必须安装 KB4489899 补丁以使 Overlay/VXLAN 网络正常工作,建议更新系统至最新版本;
  5. Windows 节点必须安装 Hyper-V 及管理工具;

安装 Kube-OVN

添加 Windows 节点

安装容器运行时

目前仅支持 Docker Engine。

在 PowerShell 中运行以下命令,开启 Containers 特性:

Install-WindowsFeature -Name containers

参考官方文档,安装 Docker Engine:Install Docker Engine - Enterprise on Windows Servers

安装 kubeadm 和 kubelet

在 Windows 节点中执行 PrepareNode.ps1,安装 kubeadm and kubelet。示例如下:

.\PrepareNode.ps1 -KubernetesVersion v1.22.9 -ContainerRuntime Docker

将 Windows 节点加入集群

在使用 kubeadm init 创建集群时,kubeadm 会给出一个 kubeadm join 命令,你可以在 Windows 节点上执行此命令来添加节点。你也可以在 Master 节点上执行 kubeadm token create --print-join-command 来生成一个新的 kubeadm join 命令。

添加成功后,可以查看到节点信息:

kubectl get nodes -o wide

安装 Kube-OVN

下载 Windows 安装包并解压。

安装 Open vSwitch for Hyper-V

使用以下命令打开 Windows 节点的 TESTSIGNING 启动项:

bcdedit /set LOADOPTIONS DISABLE_INTEGRITY_CHECKS
bcdedit /set TESTSIGNING ON
bcdedit /set nointegritychecks ON

执行成功后需要重启系统才能生效。重启系统后,打开 OpenvSwitch.msi,安装 Open vSwitch。

安装完成后,确认服务正常运行:

PS > Get-Service | findstr ovs
Running  ovsdb-server  Open vSwitch DB Service
Running  ovs-vswitchd  Open vSwitch Service

安装 OVN 及 Kube-OVN

执行 install.ps1,在 Windows 节点上安装 OVN 及 Kube-OVN,示例如下:

.\install.ps1 -KubeConfig C:\k\admin.conf -ApiServer https://192.168.140.180:6443 -ServiceCIDR 10.96.0.0/12

安装脚本详细参数说明请参考 install.ps1

默认情况下, Kube-OVN 使用节点 IP 所在的网卡作为隧道接口。如果需要使用其它网卡,需要在安装前给节点添加指定的 Annotation,如 ovn.kubernetes.io/tunnel_interface=Ethernet1

已知问题

  1. 如果 Windows 节点缺少 Hyper-V 所需的虚拟化特性,Hyper-V 无法安装。此时可以通过以下命令安装 Hyper-V:
Install-WindowsFeature containers
Install-WindowsFeature Hyper-V-Powershell
dism /online /enable-feature /featurename:Microsoft-Hyper-V /all /NoRestart
dism /online /disable-feature /featurename:Microsoft-Hyper-V-Online /NoRestart
Restart-Computer
  1. Pod 一直处于 Terminating 状态,无法删除。此时可以通过重启 Windows 节点解决。
Clone this wiki locally