Menu Close

5.3.2. 为 Windows 容器工作负载准备 vSphere 环境

您必须通过创建 vSphere Windows VM 金级镜像并启用与 WMCO 的内部 API 服务器通信来为 Windows 容器工作负载准备 vSphere 环境。

5.3.2.1. 创建 vSphere Windows 虚拟机金级镜像

创建 vSphere Windows 虚拟机(VM)金级镜像。

先决条件

  • 您已创建了私钥/公钥对,用于在 OpenSSH 服务器中配置基于密钥的身份验证。还必须在 Windows Machine Config Operator(WMCO)命名空间中配置私钥。这需要允许 WMCO 与 Windows 虚拟机进行通信。如需了解更多详细信息,请参阅"为 Windows Machine Config Operator 配置 secret" 部分。
注意

在创建 Windows 虚拟机的多个情形中,您必须使用 Microsoft PowerShell 命令。本指南中的 PowerShell 命令由 PS C:\> 前缀区分。

步骤

  1. 使用 Windows Server Semi-Annual Channel(SAC)在 vSphere 客户端中创建一个新虚拟机:Windows Server 20H2 ISO 镜像,其中包含 Microsoft patch KB4565351。需要这个补丁来设置在 vSphere 上安装的集群所需的 VXLAN UDP 端口。如需更多信息,请参阅 VMware 文档

    重要

    您的虚拟机的虚拟硬件版本必须满足 OpenShift Container Platform 的基础架构要求。如需更多信息,请参阅 OpenShift Container Platform 文档中的 "VMware vSphere infrastructure requirements" 部分。另外,您还可以参考 VMware 有关 虚拟机硬件版本的文档

  2. 在 Windows 虚拟机上安装和配置 VMware Tools 版本 11.0.6 或更高版本。如需更多信息,参阅 VMware Tools 文档
  3. 在 Windows 虚拟机上安装了 VMware Tools 后,请验证以下内容:

    1. The C:\ProgramData\VMware\VMware Tools\tools.conf 文件存在,并带有以下条目:

      exclude-nics=

      如果 tools.conf 文件不存在,则使用 exclude-nics 选项取消注释并设置为空值创建该文件。

      此条目确保通过混合覆盖在 Windows 虚拟机上生成的克隆 vNIC 不被忽略。

    2. Windows 虚拟机在 vCenter 中有一个有效的 IP 地址:

      C:\> ipconfig
    3. VMTools Windows 服务正在运行:

      PS C:\> Get-Service -Name VMTools | Select Status, StartType
  4. 在 Windows 虚拟机上安装和配置 OpenSSH 服务器。如需了解更多详细信息,请参阅 Microsoft 的有关安装 OpenSSH 的文档。
  5. 为管理用户设置 SSH 访问权限。详情请参阅 Microsoft 文档的管理员用户

    重要

    指令中使用的公钥必须与稍后在 WMCO 命名空间中创建的私钥对应,后者包含您的 secret。如需了解更多详细信息,请参阅"为 Windows Machine Config Operator 配置 secret" 部分。

  6. 按照 Microsoft 文档 在 Windows 虚拟机上安装 docker 容器运行时。
  7. 您必须在 Windows 虚拟机中创建新的防火墙规则,以允许进入连接的容器日志。运行以下命令,在 TCP 端口 10250 中创建防火墙规则:

    PS C:\> New-NetFirewallRule -DisplayName "ContainerLogsPort" -LocalPort 10250 -Enabled True -Direction Inbound -Protocol TCP -Action Allow -EdgeTraversalPolicy Allow
  8. 克隆 Windows 虚拟机,使其成为可重复利用的镜像。遵循 VMware 文档来了解如何克隆现有虚拟机以了解更多详细信息。
  9. 在克隆的 Windows 虚拟机上,运行 Windows Sysprep 工具

    C:\> C:\Windows\System32\Sysprep\sysprep.exe /generalize /oobe /shutdown /unattend:<path_to_unattend.xml> 1
    1
    指定 unattend.xml 文件的路径。
    注意

    对于您可以在 Windows 镜像中运行 sysprep 命令的次数有一个限制。如需更多信息,请参阅 Microsoft 文档

    提供了 unattend.xml 示例,它维护 WMCO 所需的所有更改。您必须修改这个示例,它不能直接使用。

    例 5.1. unattend.xml 示例

    <?xml version="1.0" encoding="UTF-8"?>
    <unattend xmlns="urn:schemas-microsoft-com:unattend">
       <settings pass="specialize">
          <component xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
             <InputLocale>0409:00000409</InputLocale>
             <SystemLocale>en-US</SystemLocale>
             <UILanguage>en-US</UILanguage>
             <UILanguageFallback>en-US</UILanguageFallback>
             <UserLocale>en-US</UserLocale>
          </component>
          <component xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
             <SkipAutoActivation>true</SkipAutoActivation>
          </component>
          <component xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Microsoft-Windows-SQMApi" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
             <CEIPEnabled>0</CEIPEnabled>
          </component>
          <component xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
             <ComputerName>winhost</ComputerName> 1
          </component>
       </settings>
       <settings pass="oobeSystem">
          <component xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
             <AutoLogon>
                <Enabled>false</Enabled> 2
             </AutoLogon>
             <OOBE>
                <HideEULAPage>true</HideEULAPage>
                <HideLocalAccountScreen>true</HideLocalAccountScreen>
                <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen>
                <HideOnlineAccountScreens>true</HideOnlineAccountScreens>
                <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
                <NetworkLocation>Work</NetworkLocation>
                <ProtectYourPC>1</ProtectYourPC>
                <SkipMachineOOBE>true</SkipMachineOOBE>
                <SkipUserOOBE>true</SkipUserOOBE>
             </OOBE>
             <RegisteredOrganization>Organization</RegisteredOrganization>
             <RegisteredOwner>Owner</RegisteredOwner>
             <DisableAutoDaylightTimeSet>false</DisableAutoDaylightTimeSet>
             <TimeZone>Eastern Standard Time</TimeZone>
             <UserAccounts>
                <AdministratorPassword>
                   <Value>MyPassword</Value> 3
                   <PlainText>true</PlainText>
                </AdministratorPassword>
             </UserAccounts>
          </component>
       </settings>
    </unattend>
    1
    指定 ComputerName,它必须遵循 Kubernetes 名称规格。这些规格也适用于在创建新虚拟机时在生成的模板中执行的 Guest OS 自定义。
    2
    禁用自动登录,以避免在启动时使用管理员特权打开终端的安全问题。这是默认值,不得更改。
    3
    MyPassword 占位符替换为 Administrator 帐户的密码。这可防止内置的 Administrator 帐户默认拥有空白密码。遵循 Microsoft 选择密码的最佳实践

    Sysprep 工具完成后,Windows 虚拟机将关闭。您不得再使用此虚拟机或打开此虚拟机。

  10. 将 Windows 虚拟机转换为 vCenter 中的模板
5.3.2.1.1. 其他资源