搜索

21.3. 使用自定义在 vSphere 上安装集群

download PDF

在 OpenShift Container Platform 版本 4.11 中,您可以使用安装程序置备的基础架构在 VMware vSphere 实例上安装集群。要自定义安装,请在安装集群前修改 install-config.yaml 文件中的参数。

注意

OpenShift Container Platform 支持将集群部署到单个 VMware vCenter 中。不支持在多个 vCenter 上使用机器/机器集部署集群。

21.3.1. 先决条件

21.3.2. OpenShift Container Platform 互联网访问

在 OpenShift Container Platform 4.11 中,您需要访问互联网来安装集群。

您必须具有以下互联网访问权限:

  • 访问 OpenShift Cluster Manager Hybrid Cloud Console 以下载安装程序并执行订阅管理。如果集群可以访问互联网,并且没有禁用 Telemetry,该服务会自动授权您的集群。
  • 访问 Quay.io,以获取安装集群所需的软件包。
  • 获取执行集群更新所需的软件包。
重要

如果您的集群无法直接访问互联网,则可以在置备的某些类型的基础架构上执行受限网络安装。在此过程中,您可以下载所需的内容,并使用它为镜像 registry 填充安装软件包。对于某些安装类型,集群要安装到的环境不需要访问互联网。在更新集群前,您要更新镜像 registry 的内容。

21.3.3. VMware vSphere 基础架构要求

在一个满足您使用的组件要求的 VMware vSphere 版本 7 上安装了 OpenShift Container Platform 集群。

注意

OpenShift Container Platform 版本 4.11 不支持 VMware vSphere 版本 8.0。

您可以在内部或 VMware Cloud 验证的供应商中托管 VMware vSphere 基础架构,以满足下表中概述的要求:

表 21.9. vSphere 虚拟环境的版本要求
虚拟环境产品所需的版本

VM 硬件版本

15 或更高版本

vSphere ESXi 主机

7

vCenter 主机

7

重要

在 VMware vSphere 版本 7.0 Update 1 或更早版本上安装集群现已弃用。这些版本仍被完全支持,但 OpenShift Container Platform 版本 4.11 需要 vSphere 虚拟硬件版本 15 或更高版本。现在,硬件版本 15 是 OpenShift Container Platform 中 vSphere 虚拟机的默认版本。要为您的 vSphere 节点更新硬件版本,请参阅"更新在 vSphere 中运行的节点上的硬件"文章。

如果您的 vSphere 节点低于硬件版本 15,或者 VMware vSphere 版本早于 6.7.3,从 OpenShift Container Platform 4.10 升级到 OpenShift Container Platform 4.11 不可用。

表 21.10. VMware 组件支持的最低 vSphere 版本
组件最低支持版本描述

虚拟机监控程序(Hypervisor)

vSphere 7 带有 HW 版本 15

此版本是 Red Hat Enterprise Linux CoreOS(RHCOS)支持的最低版本。有关与 RHCOS 兼容的 Red Hat Enterprise Linux (RHEL) 最新版本中支持的硬件的更多信息,请参阅红帽客户门户网站中的硬件

使用 in-tree 驱动程序存储

vSphere 7

此插件使用 OpenShift Container Platform 中包含的 vSphere 的树内存储驱动程序创建 vSphere 存储。

可选: Networking(NSX-T)

vSphere 7

OpenShift Container Platform 需要 vSphere 7。有关 NSX 和 OpenShift Container Platform 兼容性的更多信息,请参阅 VMware 的 NSX 容器插件文档中的发行注记部分。

重要

您必须确保在安装 OpenShift Container Platform 前同步 ESXi 主机上的时间。请参阅 VMware 文档中的 编辑主机时间配置

21.3.4. 网络连接要求

您必须配置机器之间的网络连接,以允许 OpenShift Container Platform 集群组件进行通信。

查看有关所需网络端口的以下详细信息。

表 21.11. 用于全机器到所有机器通信的端口
协议port描述

ICMP

N/A

网络可访问性测试

TCP

1936

指标

9000-9999

主机级别的服务,包括端口 9 100-9101 上的节点导出器,以及端口 9099 上的 Cluster Version Operator。

10250-10259

Kubernetes 保留的默认端口

10256

openshift-sdn

UDP

4789

虚拟可扩展 LAN (VXLAN)

6081

Geneve

9000-9999

主机级别的服务,包括端口 91009101 上的节点导出器。

500

IPsec IKE 数据包

4500

IPsec NAT-T 数据包

TCP/UDP

30000-32767

Kubernetes 节点端口

ESP

N/A

IPsec Encapsulating Security Payload(ESP)

表 21.12. 用于所有机器控制平面通信的端口
协议port描述

TCP

6443

Kubernetes API

表 21.13. control plane 机器用于 control plane 机器通信的端口
协议port描述

TCP

2379-2380

etcd 服务器和对等端口

21.3.5. VMware vSphere CSI Driver Operator 要求

要安装 vSphere CSI Driver Operator,必须满足以下要求:

  • VMware vSphere 版本 7.0 更新 1 或更高版本
  • 硬件版本 15 或更高版本的虚拟机
  • 集群中还没有安装第三方 vSphere CSI 驱动程序
重要

如果集群中存在第三方 vSphere CSI 驱动程序,OpenShift Container Platform 不会覆盖它。如果在升级到下一个 OpenShift Container Platform 主版本时继续使用第三方 vSphere CSI 驱动程序,oc CLI 会提示输入以下信息:

VSphereCSIDriverOperatorCRUpgradeable: VMwareVSphereControllerUpgradeable:
found existing unsupported csi.vsphere.vmware.com driver

以上信息告知您,在 OpenShift Container Platform 升级操作过程中,红帽不支持第三方 vSphere CSI 驱动程序。您可以选择忽略此消息并继续升级操作。

其他资源

21.3.6. vCenter 要求

在使用安装程序置备的基础架构的 vCenter 上安装 OpenShift Container Platform 集群前,您必须准备自己的环境。

所需的 vCenter 帐户权限

要在 vCenter 中安装 OpenShift Container Platform 集群,安装程序需要访问具有特权的帐户来读取和创建所需资源。使用具有全局管理特权的帐户是访问所有所需权限的最简单方法。

如果无法使用具有全局管理特权的帐户,则必须创建角色来授予 OpenShift Container Platform 集群安装所需的权限。虽然大多数权限都是需要的,但只有在安装程序计划置备一个文件夹来包含 vCenter 实例上的 OpenShift Container Platform 集群时,才需要一些权限,这是默认行为。您必须为指定对象创建或调整 vSphere 角色,才能授予所需的特权。

如果安装程序要创建 vSphere 虚拟机文件夹,则需要额外的角色。

例 21.4. 在 vSphere API 中安装所需的角色和权限

适用于角色的 vSphere 对象必要时vSphere API 中所需的权限

vSphere vCenter

Always

Cns.Searchable
InventoryService.Tagging.AttachTag
InventoryService.Tagging.CreateCategory
InventoryService.Tagging.CreateTag
InventoryService.Tagging.DeleteCategory
InventoryService.Tagging.DeleteTag
InventoryService.Tagging.EditCategory
InventoryService.Tagging.EditTag
Sessions.ValidateSession
StorageProfile.Update
StorageProfile.View

vSphere vCenter 集群

如果在集群 root 中创建虚拟机

Host.Config.Storage
Resource.AssignVMToPool
VApp.AssignResourcePool
VApp.Import
VirtualMachine.Config.AddNewDisk

vSphere vCenter 资源池

如果提供了现有的资源池

Host.Config.Storage
Resource.AssignVMToPool
VApp.AssignResourcePool
VApp.Import
VirtualMachine.Config.AddNewDisk

vSphere Datastore

Always

Datastore.AllocateSpace
Datastore.Browse
Datastore.FileManagement
InventoryService.Tagging.ObjectAttachable

vSphere 端口组

Always

Network.Assign

虚拟机文件夹

Always

InventoryService.Tagging.ObjectAttachable
Resource.AssignVMToPool
VApp.Import
VirtualMachine.Config.AddExistingDisk
VirtualMachine.Config.AddNewDisk
VirtualMachine.Config.AddRemoveDevice
VirtualMachine.Config.AdvancedConfig
VirtualMachine.Config.Annotation
VirtualMachine.Config.CPUCount
VirtualMachine.Config.DiskExtend
VirtualMachine.Config.DiskLease
VirtualMachine.Config.EditDevice
VirtualMachine.Config.Memory
VirtualMachine.Config.RemoveDisk
VirtualMachine.Config.Rename
VirtualMachine.Config.ResetGuestInfo
VirtualMachine.Config.Resource
VirtualMachine.Config.Settings
VirtualMachine.Config.UpgradeVirtualHardware
VirtualMachine.Interact.GuestControl
VirtualMachine.Interact.PowerOff
VirtualMachine.Interact.PowerOn
VirtualMachine.Interact.Reset
VirtualMachine.Inventory.Create
VirtualMachine.Inventory.CreateFromExisting
VirtualMachine.Inventory.Delete
VirtualMachine.Provisioning.Clone
VirtualMachine.Provisioning.MarkAsTemplate
VirtualMachine.Provisioning.DeployTemplate

vSphere vCenter Datacenter

如果安装程序创建虚拟机文件夹

InventoryService.Tagging.ObjectAttachable
Resource.AssignVMToPool
VApp.Import
VirtualMachine.Config.AddExistingDisk
VirtualMachine.Config.AddNewDisk
VirtualMachine.Config.AddRemoveDevice
VirtualMachine.Config.AdvancedConfig
VirtualMachine.Config.Annotation
VirtualMachine.Config.CPUCount
VirtualMachine.Config.DiskExtend
VirtualMachine.Config.DiskLease
VirtualMachine.Config.EditDevice
VirtualMachine.Config.Memory
VirtualMachine.Config.RemoveDisk
VirtualMachine.Config.Rename
VirtualMachine.Config.ResetGuestInfo
VirtualMachine.Config.Resource
VirtualMachine.Config.Settings
VirtualMachine.Config.UpgradeVirtualHardware
VirtualMachine.Interact.GuestControl
VirtualMachine.Interact.PowerOff
VirtualMachine.Interact.PowerOn
VirtualMachine.Interact.Reset
VirtualMachine.Inventory.Create
VirtualMachine.Inventory.CreateFromExisting
VirtualMachine.Inventory.Delete
VirtualMachine.Provisioning.Clone
VirtualMachine.Provisioning.DeployTemplate
VirtualMachine.Provisioning.MarkAsTemplate
Folder.Create
Folder.Delete

例 21.5. 在 vCenter 图形用户界面 (GUI) 中安装所需的角色和权限

适用于角色的 vSphere 对象必要时vCenter GUI 中所需的权限

vSphere vCenter

Always

Cns.Searchable
"vSphere Tagging"."Assign or Unassign vSphere Tag"
"vSphere Tagging"."Create vSphere Tag Category"
"vSphere Tagging"."Create vSphere Tag"
vSphere Tagging"."Delete vSphere Tag Category"
"vSphere Tagging"."Delete vSphere Tag"
"vSphere Tagging"."Edit vSphere Tag Category"
"vSphere Tagging"."Edit vSphere Tag"
Sessions."Validate session"
"Profile-driven storage"."Profile-driven storage update"
"Profile-driven storage"."Profile-driven storage view"

vSphere vCenter 集群

如果在集群 root 中创建虚拟机

Host.Configuration."Storage partition configuration"
Resource."Assign virtual machine to resource pool"
VApp."Assign resource pool"
VApp.Import
"Virtual machine"."Change Configuration"."Add new disk"

vSphere vCenter 资源池

如果提供了现有的资源池

Host.Configuration."Storage partition configuration"
Resource."Assign virtual machine to resource pool"
VApp."Assign resource pool"
VApp.Import
"Virtual machine"."Change Configuration"."Add new disk"

vSphere Datastore

Always

Datastore."Allocate space"
Datastore."Browse datastore"
Datastore."Low level file operations"
"vSphere Tagging"."Assign or Unassign vSphere Tag on Object"

vSphere 端口组

Always

Network."Assign network"

虚拟机文件夹

Always

"vSphere Tagging"."Assign or Unassign vSphere Tag on Object"
Resource."Assign virtual machine to resource pool"
VApp.Import
"Virtual machine"."Change Configuration"."Add existing disk"
"Virtual machine"."Change Configuration"."Add new disk"
"Virtual machine"."Change Configuration"."Add or remove device"
"Virtual machine"."Change Configuration"."Advanced configuration"
"Virtual machine"."Change Configuration"."Set annotation"
"Virtual machine"."Change Configuration"."Change CPU count"
"Virtual machine"."Change Configuration"."Extend virtual disk"
"Virtual machine"."Change Configuration"."Acquire disk lease"
"Virtual machine"."Change Configuration"."Modify device settings"
"Virtual machine"."Change Configuration"."Change Memory"
"Virtual machine"."Change Configuration"."Remove disk"
"Virtual machine"."Change Configuration".Rename
"Virtual machine"."Change Configuration"."Reset guest information"
"Virtual machine"."Change Configuration"."Change resource"
"Virtual machine"."Change Configuration"."Change Settings"
"Virtual machine"."Change Configuration"."Upgrade virtual machine compatibility"
"Virtual machine".Interaction."Guest operating system management by VIX API"
"Virtual machine".Interaction."Power off"
"Virtual machine".Interaction."Power on"
"Virtual machine".Interaction.Reset
"Virtual machine"."Edit Inventory"."Create new"
"Virtual machine"."Edit Inventory"."Create from existing"
"Virtual machine"."Edit Inventory"."Remove"
"Virtual machine".Provisioning."Clone virtual machine"
"Virtual machine".Provisioning."Mark as template"
"Virtual machine".Provisioning."Deploy template"

vSphere vCenter Datacenter

如果安装程序创建虚拟机文件夹

"vSphere Tagging"."Assign or Unassign vSphere Tag on Object"
Resource."Assign virtual machine to resource pool"
VApp.Import
"Virtual machine"."Change Configuration"."Add existing disk"
"Virtual machine"."Change Configuration"."Add new disk"
"Virtual machine"."Change Configuration"."Add or remove device"
"Virtual machine"."Change Configuration"."Advanced configuration"
"Virtual machine"."Change Configuration"."Set annotation"
"Virtual machine"."Change Configuration"."Change CPU count"
"Virtual machine"."Change Configuration"."Extend virtual disk"
"Virtual machine"."Change Configuration"."Acquire disk lease"
"Virtual machine"."Change Configuration"."Modify device settings"
"Virtual machine"."Change Configuration"."Change Memory"
"Virtual machine"."Change Configuration"."Remove disk"
"Virtual machine"."Change Configuration".Rename
"Virtual machine"."Change Configuration"."Reset guest information"
"Virtual machine"."Change Configuration"."Change resource"
"Virtual machine"."Change Configuration"."Change Settings"
"Virtual machine"."Change Configuration"."Upgrade virtual machine compatibility"
"Virtual machine".Interaction."Guest operating system management by VIX API"
"Virtual machine".Interaction."Power off"
"Virtual machine".Interaction."Power on"
"Virtual machine".Interaction.Reset
"Virtual machine"."Edit Inventory"."Create new"
"Virtual machine"."Edit Inventory"."Create from existing"
"Virtual machine"."Edit Inventory"."Remove"
"Virtual machine".Provisioning."Clone virtual machine"
"Virtual machine".Provisioning."Deploy template"
"Virtual machine".Provisioning."Mark as template"
Folder."Create folder"
Folder."Delete folder"

此外,用户需要一些 ReadOnly 权限,一些角色需要相应的权限来将权限代理到子对象。这些设置会因您是否将集群安装到现有文件夹而有所不同。

例 21.6. 所需的权限和传播设置

vSphere object必要时传播到子对象所需的权限

vSphere vCenter

Always

False

列出所需的权限

vSphere vCenter Datacenter

现有文件夹

False

只读 权限

安装程序创建文件夹

True

列出所需的权限

vSphere vCenter 集群

现有资源池

False

只读 权限

集群 root 中的虚拟机

True

列出所需的权限

vSphere vCenter 数据存储

Always

False

列出所需的权限

vSphere Switch

Always

False

只读 权限

vSphere 端口组

Always

False

列出所需的权限

vSphere vCenter 虚拟机文件夹

现有文件夹

True

列出所需的权限

vSphere vCenter 资源池

现有资源池

True

列出所需的权限

有关只使用所需权限创建帐户的更多信息,请参阅 vSphere 文档中的 vSphere 权限和用户管理任务

将 OpenShift Container Platform 与 vMotion 搭配使用

如果要在 vSphere 环境中使用 vMotion,请在安装 OpenShift Container Platform 集群前考虑以下内容。

  • OpenShift Container Platform 通常支持 compute-only vMotion,其中通常意味着您满足所有 VMware 最佳实践进行 vMotion。

    为了帮助确保计算和 control plane 节点的正常运行时间,请确保遵循 VMware 最佳实践进行 vMotion,并使用 VMware 反关联性规则提高 OpenShift Container Platform 在维护或硬件问题期间的可用性。

    有关 vMotion 和 anti-affinity 规则的更多信息,请参阅 VMware vSphere 文档以了解 vMotion 网络要求虚拟机反关联性规则

  • 使用 Storage vMotion 可能会导致问题且不受支持。如果您在 pod 中使用 vSphere 卷,请手动或通过 Storage vMotion 在数据存储间迁移虚拟机,这会导致 OpenShift Container Platform 持久性卷(PV)对象中的无效引用,这可能会导致数据丢失。
  • OpenShift Container Platform 不支持在数据存储间有选择地迁移 VMDK,使用数据存储集群进行虚拟机置备或动态或静态置备 PV,或使用作为数据存储集群一部分的数据存储来动态或静态置备 PV。
集群资源

当您部署使用安装程序置备的基础架构的 OpenShift Container Platform 集群时,安装程序必须能够在 vCenter 实例中创建多个资源。

标准 OpenShift Container Platform 安装会创建以下 vCenter 资源:

  • 1 个文件夹
  • 1 标签类别
  • 1 标签
  • 虚拟机:

    • 1 个模板
    • 1 个临时 bootstrap 节点
    • 3 个 control plane 节点
    • 3 个计算机器

虽然这些资源使用 856 GB 存储,但 bootstrap 节点会在集群安装过程中销毁。使用标准集群至少需要 800 GB 存储。

如果部署更多计算机器,OpenShift Container Platform 集群将使用更多存储。

集群限制

可用资源因集群而异。vCenter 中可能的集群数量主要受可用存储空间以及对所需资源数量的限制。确保考虑集群创建的 vCenter 资源的限制和部署集群所需的资源,如 IP 地址和网络。

网络要求

您必须为网络使用动态主机配置协议 (DHCP),并确保 DHCP 服务器被配置为为集群机器提供持久的 IP 地址。在 DHCP 租期中,您必须将 DHCP 配置为使用默认网关。所有节点必须位于同一 VLAN 中。您不能将第二 VLAN 用作第 2 天操作来缩放集群。另外,在安装 OpenShift Container Platform 集群前,您必须创建以下网络资源:

注意

建议集群中的每个 OpenShift Container Platform 节点都必须有权访问可通过 DHCP 发现的网络时间协议(NTP)服务器。没有 NTP 服务器即可安装。但是,异步服务器时钟将导致错误,NTP 服务器会阻止。

所需的 IP 地址

安装程序置备的 vSphere 安装需要两个静态 IP 地址:

  • API 地址用于访问集群 API。
  • Ingress 地址用于集群入口流量。

安装 OpenShift Container Platform 集群时,必须向安装程序提供这些 IP 地址。

DNS 记录

您必须在适当的 DNS 服务器中为托管 OpenShift Container Platform 集群的 vCenter 实例创建两个静态 IP 地址的 DNS 记录。在每个记录中,<cluster_name> 是集群名称,<base_domain> 是您 在安装集群时指定的集群基域。完整的 DNS 记录采用以下形式: <component>.<cluster_name>.<base_domain>.

表 21.14. 所需的 DNS 记录
组件记录描述

API VIP

api.<cluster_name>.<base_domain>.

此 DNS A/AAAA 或 CNAME 记录必须指向 control plane 机器的负载均衡器。此记录必须由集群外的客户端和集群中的所有节点解析。

Ingress VIP

*.apps.<cluster_name>.<base_domain>.

通配符 DNS A/AAAA 或 CNAME 记录,指向以运行入口路由器 Pod 的机器(默认为 worker 节点)为目标的负载均衡器。此记录必须由集群外的客户端和集群中的所有节点解析。

21.3.7. 为集群节点 SSH 访问生成密钥对

在 OpenShift Container Platform 安装过程中,您可以为安装程序提供 SSH 公钥。密钥通过它们的 Ignition 配置文件传递给 Red Hat Enterprise Linux CoreOS(RHCOS)节点,用于验证对节点的 SSH 访问。密钥添加到每个节点上 core 用户的 ~/.ssh/authorized_keys 列表中,这将启用免密码身份验证。

将密钥传递给节点后,您可以使用密钥对作为用户 核心 通过 SSH 连接到 RHCOS 节点。若要通过 SSH 访问节点,必须由 SSH 为您的本地用户管理私钥身份。

如果要通过 SSH 连接到集群节点来执行安装调试或灾难恢复,则必须在安装过程中提供 SSH 公钥。./openshift-install gather 命令还需要在集群节点上设置 SSH 公钥。

重要

不要在生产环境中跳过这个过程,在生产环境中需要灾难恢复和调试。

注意

您必须使用本地密钥,而不是使用特定平台方法配置 的密钥,如 AWS 密钥对

流程

  1. 如果您在本地计算机上没有可用于在集群节点上进行身份验证的现有 SSH 密钥对,请创建一个。例如,在使用 Linux 操作系统的计算机上运行以下命令:

    $ ssh-keygen -t ed25519 -N '' -f <path>/<file_name> 1
    1
    指定新 SSH 密钥的路径和文件名,如 ~/.ssh/id_ed25519。如果您已有密钥对,请确保您的公钥位于 ~/.ssh 目录中。
    注意

    如果您计划在 x86_64 架构上安装使用 FIPS 验证的/Modules in Process 加密库的 OpenShift Container Platform 集群,请不要创建使用 ed25519 算法的密钥。相反,创建一个使用 rsaecdsa 算法的密钥。

  2. 查看公共 SSH 密钥:

    $ cat <path>/<file_name>.pub

    例如,运行以下命令来查看 ~/.ssh/id_ed25519.pub 公钥:

    $ cat ~/.ssh/id_ed25519.pub
  3. 将 SSH 私钥身份添加到本地用户的 SSH 代理(如果尚未添加)。在集群节点上,或者要使用 ./openshift-install gather 命令,需要对该密钥进行 SSH 代理管理,才能在集群节点上进行免密码 SSH 身份验证。

    注意

    在某些发行版中,自动管理默认 SSH 私钥身份,如 ~/.ssh/id_rsa~/.ssh/id_dsa

    1. 如果 ssh-agent 进程尚未为您的本地用户运行,请将其作为后台任务启动:

      $ eval "$(ssh-agent -s)"

      输出示例

      Agent pid 31874

      注意

      如果集群处于 FIPS 模式,则只使用 FIPS 兼容算法来生成 SSH 密钥。密钥必须是 RSA 或 ECDSA。

  4. 将 SSH 私钥添加到 ssh-agent

    $ ssh-add <path>/<file_name> 1
    1
    指定 SSH 私钥的路径和文件名,如 ~/.ssh/id_ed25519.pub

    输出示例

    Identity added: /home/<you>/<path>/<file_name> (<computer_name>)

后续步骤

  • 安装 OpenShift Container Platform 时,为安装程序提供 SSH 公钥。

21.3.8. 获取安装程序

在安装 OpenShift Container Platform 之前,将安装文件下载到本地计算机上。

先决条件

  • 您有一个运行 Linux 的机器,如 Red Hat Enterprise Linux 8,本地磁盘空间为 500 MB。

    重要

    如果您试图在 macOS 上运行安装程序,与 golang 编译器相关的已知问题会导致 OpenShift Container Platform 集群的安装失败。有关此问题的更多信息,请参阅 OpenShift Container Platform 4.11 发行注记文档中的"已知问题"部分。

流程

  1. 访问 OpenShift Cluster Manager 站点的 Infrastructure Provider 页面。如果您有红帽帐户,请使用您的凭证登录。如果没有,请创建一个帐户。
  2. 选择您的基础架构供应商。
  3. 进入到安装类型的页面,下载与您的主机操作系统和架构对应的安装程序,并将该文件放在您要存储安装配置文件的目录中。

    重要

    安装程序会在用来安装集群的计算机上创建几个文件。在完成集群安装后,您必须保留安装程序和安装程序所创建的文件。这两个文件都需要删除集群。

    重要

    删除安装程序创建的文件不会删除您的集群,即使集群在安装过程中失败也是如此。要删除集群,请为特定云供应商完成 OpenShift Container Platform 卸载流程。

  4. 提取安装程序。例如,在使用 Linux 操作系统的计算机上运行以下命令:

    $ tar -xvf openshift-install-linux.tar.gz
  5. 从 Red Hat OpenShift Cluster Manager 下载安装 pull secret。此 pull secret 允许您与所含授权机构提供的服务进行身份验证,这些服务包括为 OpenShift Container Platform 组件提供容器镜像的 Quay.io。

21.3.9. 在您的系统信任中添加 vCenter root CA 证书

因为安装程序需要访问 vCenter 的 API,所以您必须在安装 OpenShift Container Platform 集群前将 vCenter 的可信 root CA 证书添加到系统信任中。

流程

  1. 在 vCenter 主页中下载 vCenter 的 root CA 证书。在 vSphere Web Services SDK 部分点 Download trusted root CA 证书<vCenter>/certs/download.zip 文件下载。
  2. 提取包含 vCenter root CA 证书的压缩文件。压缩文件的内容类似以下文件结构:

    certs
    ├── lin
    │   ├── 108f4d17.0
    │   ├── 108f4d17.r1
    │   ├── 7e757f6a.0
    │   ├── 8e4f8471.0
    │   └── 8e4f8471.r0
    ├── mac
    │   ├── 108f4d17.0
    │   ├── 108f4d17.r1
    │   ├── 7e757f6a.0
    │   ├── 8e4f8471.0
    │   └── 8e4f8471.r0
    └── win
        ├── 108f4d17.0.crt
        ├── 108f4d17.r1.crl
        ├── 7e757f6a.0.crt
        ├── 8e4f8471.0.crt
        └── 8e4f8471.r0.crl
    
    3 directories, 15 files
  3. 将您的操作系统的文件添加到系统信任中。例如,在 Fedora 操作系统中运行以下命令:

    # cp certs/lin/* /etc/pki/ca-trust/source/anchors
  4. 更新您的系统信任关系。例如,在 Fedora 操作系统中运行以下命令:

    # update-ca-trust extract

21.3.10. 创建安装配置文件

您可以自定义在 VMware vSphere 上安装的 OpenShift Container Platform 集群。

先决条件

  • 获取 OpenShift Container Platform 安装程序和集群的 pull secret。
  • 在订阅级别获取服务主体权限。

流程

  1. 创建 install-config.yaml 文件。

    1. 进入包含安装程序的目录并运行以下命令:

      $ ./openshift-install create install-config --dir <installation_directory> 1
      1
      对于 <installation_directory>,请指定要存储安装程序创建的文件的目录名称。

      在指定目录时:

      • 验证该目录是否具有执行权限。在安装目录中运行 Terraform 二进制文件需要这个权限。
      • 使用空目录。有些安装资产,如 bootstrap X.509 证书的过期间隔较短,因此不得重复使用安装目录。如果要重复使用另一个集群安装中的单个文件,您可以将它们复制到您的目录中。但是,安装资产的文件名可能会在发行版本间有所变化。从以前的 OpenShift Container Platform 版本中复制安装文件时请小心。
    2. 在提示符处,提供云的配置详情:

      1. 可选: 选择用于访问集群机器的 SSH 密钥。

        注意

        对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定 ssh-agent 进程使用的 SSH 密钥。

      2. Select vsphere 作为目标平台。
      3. 指定 vCenter 实例的名称。
      4. 指定创建集群所需的权限的 vCenter 帐户的用户名和密码。

        安装程序连接到您的 vCenter 实例。

      5. 选择要连接的 vCenter 实例中的数据中心。
      6. 选择要使用的默认 vCenter 数据存储。
      7. 选择要在其中安装 OpenShift Container Platform 集群的 vCenter 集群。安装程序使用 vSphere 集群的 root 资源池作为默认资源池。
      8. 选择包含您配置的虚拟 IP 地址和 DNS 记录的 vCenter 实例中的网络。
      9. 输入您为 control plane API 访问配置的虚拟 IP 地址。
      10. 输入您为集群入口配置的虚拟 IP 地址。
      11. 输入基域。这个基域必须与您配置的 DNS 记录中使用的域相同。
      12. 为集群输入描述性名称。您输入的集群名称必须与您在配置 DNS 记录时指定的集群名称匹配。
      13. 粘贴 Red Hat OpenShift Cluster Manager 中的 pull secret
  2. 修改 install-config.yaml 文件。您可以在"安装配置参数"部分找到有关可用参数的更多信息。
  3. 备份 install-config.yaml 文件,以便您可以使用它安装多个集群。

    重要

    install-config.yaml 文件会在安装过程中消耗掉。如果要重复使用该文件,您必须立即备份该文件。

21.3.10.1. 安装配置参数

在部署 OpenShift Container Platform 集群前,您可以提供参数值来描述托管集群的云平台中的帐户,并选择性地自定义集群平台。在创建 install-config.yaml 安装配置文件时,您可以通过命令行为所需参数提供值。如果自定义集群,您可以修改 install-config.yaml 文件以提供有关平台的更多详情。

注意

安装后,您无法在 install-config.yaml 文件中修改这些参数。

21.3.10.1.1. 所需的配置参数

下表描述了所需的安装配置参数:

表 21.15. 所需的参数
参数描述

apiVersion

install-config.yaml 内容的 API 版本。当前版本为 v1。安装程序还可能支持旧的 API 版本。

字符串

baseDomain

云供应商的基域。基域用于创建到 OpenShift Container Platform 集群组件的路由。集群的完整 DNS 名称是 baseDomainmetadata.name 参数值的组合,其格式为 <metadata.name>.<baseDomain>

完全限定域名或子域名,如 example.com

metadata

Kubernetes 资源 ObjectMeta,其中只消耗 name 参数。

对象

metadata.name

集群的名称。集群的 DNS 记录是 {{.metadata.name}}.{{.baseDomain}} 的子域。

小写字母和连字符 (-) 的字符串,如 dev

platform

要执行安装的具体平台配置: alibabacloudawsbaremetalazuregcpibmcloudnutanixopenstackovirtvsphere{}。有关 platform.<platform> 参数的更多信息,请参考下表中您的特定平台。

对象

pullSecret

从 Red Hat OpenShift Cluster Manager 获取 pull secret,验证从 Quay.io 等服务中下载 OpenShift Container Platform 组件的容器镜像。

{
   "auths":{
      "cloud.openshift.com":{
         "auth":"b3Blb=",
         "email":"you@example.com"
      },
      "quay.io":{
         "auth":"b3Blb=",
         "email":"you@example.com"
      }
   }
}
21.3.10.1.2. 网络配置参数

您可以根据现有网络基础架构的要求自定义安装配置。例如,您可以扩展集群网络的 IP 地址块,或者提供不同于默认值的不同 IP 地址块。

仅支持 IPv4 地址。

注意

Red Hat OpenShift Data Foundation 灾难恢复解决方案不支持 Globalnet。对于区域灾难恢复场景,请确保为每个集群中的集群和服务网络使用非重叠的专用 IP 地址。

表 21.16. 网络参数
参数描述

networking

集群网络的配置。

对象

注意

您无法在安装后修改 网络 对象指定的参数。

networking.networkType

Container Network Interface (CNI) 集群网络供应商要安装的集群网络供应商。

OpenShiftSDNOVNKubernetesOpenShiftSDN 是 all-Linux 网络的 CNI 供应商。OVNKubernetes 是包含 Linux 和 Windows 服务器的 Linux 网络和混合网络的 CNI 供应商。默认值为 OpenShiftSDN

networking.clusterNetwork

pod 的 IP 地址块。

默认值为 10.128.0.0/14,主机前缀为 /23

如果您指定了多个 IP 地址块,块不得重叠。

对象数组。例如:

networking:
  clusterNetwork:
  - cidr: 10.128.0.0/14
    hostPrefix: 23

networking.clusterNetwork.cidr

使用 networking.clusterNetwork 时需要此项。IP 地址块。

IPv4 网络。

无类别域间路由(CIDR)表示法中的 IP 地址块。IPv4 块的前缀长度介于 0 到 32 之间

networking.clusterNetwork.hostPrefix

分配给每个节点的子网前缀长度。例如,如果 hostPrefix 设为 23,则每个节点从 given cidr 中分配 a /23 子网。hostPrefix23 提供 510(2^(32 - 23)- 2)pod IP 地址。

子网前缀。

默认值为 23

networking.serviceNetwork

服务的 IP 地址块。默认值为 172.30.0.0/16

OpenShift SDN 和 OVN-Kubernetes 网络供应商只支持服务网络的一个 IP 地址块。

具有 CIDR 格式的 IP 地址块的数组。例如:

networking:
  serviceNetwork:
   - 172.30.0.0/16

networking.machineNetwork

机器的 IP 地址块。

如果您指定了多个 IP 地址块,块不得重叠。

对象数组。例如:

networking:
  machineNetwork:
  - cidr: 10.0.0.0/16

networking.machineNetwork.cidr

使用 networking.machineNetwork 时需要此项。IP 地址块。libvirt 之外的所有平台的默认值为 10.0.0.0/16。对于 libvirt,默认值 为 192.168.126.0/24

CIDR 表示法中的 IP 网络块。

例如: 10.0.0.0/16

注意

networking.machineNetwork 设置为与首选 NIC 所在的 CIDR 匹配。

21.3.10.1.3. 可选的配置参数

下表描述了可选的安装配置参数:

表 21.17. 可选参数
参数描述

additionalTrustBundle

添加到节点可信证书存储中的 PEM 编码 X.509 证书捆绑包。配置了代理时,也可以使用此信任捆绑包。

字符串

功能

控制可选核心组件的安装。您可以通过禁用可选组件来减少 OpenShift Container Platform 集群的空间。

字符串数组

capabilities.baselineCapabilitySet

选择要启用的一组初始可选功能。有效值为 Nonev4.11vCurrentv4.11 启用 baremetal Operator,marketplace Operator, 和 openshift-samples 内容。vCurrent 为当前版本的 OpenShift Container Platform 安装推荐的功能集。默认值为 vCurrent

字符串

capabilities.additionalEnabledCapabilities

将可选功能集合扩展到您在 baselineCapabilitySet 中指定的范围。有效值为 baremetalmarketplaceopenshift-samples。您可以在此参数中指定多个功能。

字符串数组

cgroupsV2

在集群中的特定节点上启用 Linux 控制组群版本 2 (cgroups v2)。启用 cgroup v2 的 OpenShift Container Platform 进程会禁用所有 cgroup 版本 1 控制器和层次结构。OpenShift Container Platform cgroup 版本 2 功能是一个开发者预览(Developer Preview)功能,目前还不被红帽支持。

true

Compute

组成计算节点的机器的配置。

MachinePool 对象的数组。

compute.architecture

决定池中机器的指令集合架构。目前,不支持具有不同架构的集群。所有池都必须指定相同的架构。有效值为 amd64 (默认值)。

字符串

compute.name

使用 compute 时需要此项。机器池的名称。

worker

compute.platform

使用 compute 时需要此项。使用此参数指定托管 worker 机器的云供应商。此参数值必须与 controlPlane.platform 参数值匹配。

alibabacloud, aws, azure, gcp, ibmcloud, nutanix, openstack, ovirt, vsphere, 或 {}

compute.replicas

要置备的计算机器数量,也称为 worker 机器。

大于或等于 2 的正整数。默认值为 3

controlPlane

组成 control plane 的机器的配置。

MachinePool 对象的数组。

controlPlane.architecture

决定池中机器的指令集合架构。目前,不支持具有不同架构的集群。所有池都必须指定相同的架构。有效值为 amd64 (默认值)。

字符串

controlPlane.name

使用 controlPlane 时需要此项。机器池的名称。

master

controlPlane.platform

使用 controlPlane 时需要此项。使用此参数指定托管 control plane 机器的云供应商。此参数值必须与 compute.platform 参数值匹配。

alibabacloud, aws, azure, gcp, ibmcloud, nutanix, openstack, ovirt, vsphere, 或 {}

controlPlane.replicas

要置备的 control plane 机器数量。

唯一支持的值是 3,这是默认值。

credentialsMode

Cloud Credential Operator(CCO)模式。如果没有指定模式,CCO 会动态尝试决定提供的凭证的功能,在支持多个模式的平台上首选 mint 模式。

注意

不是所有 CCO 模式都支持所有云供应商。如需有关 CCO 模式的更多信息,请参阅集群 Operator 参考内容中的 Cloud Credential Operator 条目。

注意

如果您的 AWS 帐户启用了服务控制策略 (SCP),您必须将 credentialsMode 参数配置为 MintPassthroughManual

MintPassthroughManual 或空字符串("")。

fips

启用或禁用 FIPS 模式。默认值为 false (禁用)。如果启用了 FIPS 模式,运行 OpenShift Container Platform 的 Red Hat Enterprise Linux CoreOS(RHCOS)机器会绕过默认的 Kubernetes 加密套件,并使用由 RHCOS 提供的加密模块。

重要

要为集群启用 FIPS 模式,您必须从配置为以 FIPS 模式操作的 Red Hat Enterprise Linux (RHEL) 计算机运行安装程序。有关在 RHEL 中配置 FIPS 模式的更多信息,请参阅在 FIPS 模式中安装该系统。只有在 x86_64 架构的 OpenShift Container Platform 部署中才支持使用 FIPS 验证或Modules in Process 加密库。

注意

如果使用 Azure File 存储,则无法启用 FIPS 模式。

falsetrue

imageContentSources

release-image 内容的源和存储库。

对象数组。包括一个 source 以及可选的 mirrors,如本表的以下行所述。

imageContentSources.source

使用 imageContentSources 时需要此项。指定用户在镜像拉取规格中引用的存储库。

字符串

imageContentSources.mirrors

指定可能还包含同一镜像的一个或多个仓库。

字符串数组

publish

如何发布或公开集群的面向用户的端点,如 Kubernetes API、OpenShift 路由。

内部或外部 .默认值为 External

在非云平台和 IBM Cloud VPC 中不支持将此字段设置为 Internal

重要

如果将字段的值设为 Internal,集群将无法运行。如需更多信息,请参阅 BZ#1953035

sshKey

用于验证对集群机器的访问的 SSH 密钥。

注意

对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定 ssh-agent 进程使用的 SSH 密钥。

例如,sshKey: ssh-ed25519 AAAA..

21.3.10.1.4. 其他 VMware vSphere 配置参数

下表描述了其他 VMware vSphere 配置参数:

表 21.18. 其他 VMware vSphere 集群参数
参数描述
platform:
    vsphere
      vCenter

vCenter 服务器的完全限定主机名或 IP 地址。

字符串

platform:
    vsphere
      username

用于连接 vCenter 实例的用户名。此用户必须至少具有 vSphere 中 静态或动态持久性卷置备 所需的角色和权限。

字符串

platform:
    vsphere
      password

vCenter 用户名的密码。

字符串

platform:
    vsphere
      datacenter

要在 vCenter 实例中使用的数据中心的名称。

字符串

platform:
    vsphere
      defaultDatastore

用于调配卷的默认数据存储名称。

字符串

platform:
    vsphere
      folder

可选。安装程序创建虚拟机的现有文件夹的绝对路径。如果没有提供这个值,安装程序会创建一个文件夹,它的名称为 datacenter 虚拟机文件夹中的基础架构 ID。

字符串,如 /<datacenter_name>/vm/<folder_name>/<subfolder_name>

platform:
    vsphere
      resourcePool

可选。安装程序创建虚拟机的现有资源池的绝对路径。如果没有指定值,则资源会在集群 /<datacenter_name>/host/<cluster_name>/Resources 的 root 中安装。

字符串,例如 /<datacenter_name>/host/<cluster_name>/Resources/<resource_pool_name>/<optional_nested_resource_pool_name>

platform:
    vsphere
      network

包含您配置的虚拟 IP 地址和 DNS 记录的 vCenter 实例中的网络。

字符串

platform:
    vsphere
      cluster

安装 OpenShift Container Platform 集群的 vCenter 集群。

字符串

platform:
    vsphere
      apiVIP

为 control plane API 访问配置的虚拟 IP(VIP)地址。

IP 地址,如 128.0.0.1

platform:
    vsphere
      ingressVIP

为集群入口配置的虚拟 IP(VIP)地址。

IP 地址,如 128.0.0.1

platform:
    vsphere
      diskType

可选。磁盘置备方法。如果没有设置,则默认值为 vSphere 默认存储策略。

有效值为 thinthickeagerZeroedThick

21.3.10.1.5. 可选的 VMware vSphere 机器池配置参数

下表描述了可选的 VMware vSphere 机器池配置参数:

表 21.19. 可选的 VMware vSphere 机器池参数
参数描述
platform:
    vsphere
      clusterOSImage

安装程序从中下载 RHCOS 镜像的位置。您必须设置此参数才能在受限网络中执行安装。

HTTP 或 HTTPS URL,可选使用 SHA-256 校验和。例如: https://mirror.openshift.com/images/rhcos-<version>-vmware.<architecture>.ova

platform
    vsphere
      osDisk
        diskSizeGB

以 GB 为单位的磁盘大小。

整数

platform
    vsphere
      cpus

用于分配虚拟机的虚拟处理器内核总数。platform.vsphere.cpus 的值必须是 platform.vsphere.coresPerSocket 值的倍数。

整数

platform
    vsphere
      coresPerSocket

虚拟机中每个插槽的内核数。虚拟机上的虚拟套接字数量为 platform .vsphere.cpus/platform.vsphere.coresPerSocket。control plane 节点和 worker 节点的默认值为 42

整数

platform
    vsphere
      memoryMB

以 MB 为单位的虚拟机内存大小。

整数

21.3.10.2. 安装程序置备的 VMware vSphere 集群的 install-config.yaml 文件示例

您可以自定义 install-config.yaml 文件,以指定有关 OpenShift Container Platform 集群平台的更多详情,或修改所需参数的值。

apiVersion: v1
baseDomain: example.com 1
compute: 2
  name: worker
  replicas: 3
  platform:
    vsphere: 3
      cpus: 2
      coresPerSocket: 2
      memoryMB: 8192
      osDisk:
        diskSizeGB: 120
controlPlane: 4
  name: master
  replicas: 3
  platform:
    vsphere: 5
      cpus: 4
      coresPerSocket: 2
      memoryMB: 16384
      osDisk:
        diskSizeGB: 120
metadata:
  name: cluster 6
platform:
  vsphere:
    vcenter: your.vcenter.server
    username: username
    password: password
    datacenter: datacenter
    defaultDatastore: datastore
    folder: folder
    resourcePool: resource_pool 7
    diskType: thin 8
    network: VM_Network
    cluster: vsphere_cluster_name 9
    apiVIP: api_vip
    ingressVIP: ingress_vip
fips: false
pullSecret: '{"auths": ...}'
sshKey: 'ssh-ed25519 AAAA...'
1
集群的基域。所有 DNS 记录都必须是这个基域的子域,并包含集群名称。
2 4
controlPlane 部分是一个单个映射,但 compute 部分是一系列映射。为满足不同数据结构的要求,compute 部分的第一行必须以连字符 - 开头,controlPlane 部分 的第一行则不以连字符开头。仅使用一个 control plane 池。
3 5
可选:为 compute 和 control plane 机器提供额外的机器池参数配置。
6
您在 DNS 记录中指定的集群名称。
7
可选:为创建机器提供现有的资源池。如果没有指定值,安装程序将使用 vSphere 集群的 root 资源池。
8
vSphere 磁盘置备方法。
9
要在其中安装 OpenShift Container Platform 集群的 vSphere 集群。

21.3.10.3. 在安装过程中配置集群范围的代理

生产环境可能会拒绝直接访问互联网,而是提供 HTTP 或 HTTPS 代理。您可以通过在 install-config.yaml 文件中配置代理设置,将新的 OpenShift Container Platform 集群配置为使用代理。

先决条件

  • 您有一个现有的 install-config.yaml 文件。
  • 您检查了集群需要访问的站点,并确定它们中的任何站点是否需要绕过代理。默认情况下,所有集群出口流量都经过代理,包括对托管云供应商 API 的调用。如果需要,您将在 Proxy 对象的 spec.noProxy 字段中添加站点来绕过代理。

    注意

    Proxy 对象 status.noProxy 字段使用安装配置中的 networking.machineNetwork[].cidrnetworking.clusterNetwork[].cidrnetworking.serviceNetwork[] 字段的值填充。

    对于在 Amazon Web Services(AWS)、Google Cloud Platform(GCP)、Microsoft Azure 和 Red Hat OpenStack Platform(RHOSP)上安装,Proxy 对象 status.noProxy 字段也会使用实例元数据端点填充(169.254.169.254)。

流程

  1. 编辑 install-config.yaml 文件并添加代理设置。例如:

    apiVersion: v1
    baseDomain: my.domain.com
    proxy:
      httpProxy: http://<username>:<pswd>@<ip>:<port> 1
      httpsProxy: https://<username>:<pswd>@<ip>:<port> 2
      noProxy: example.com 3
    additionalTrustBundle: | 4
        -----BEGIN CERTIFICATE-----
        <MY_TRUSTED_CA_CERT>
        -----END CERTIFICATE-----
    1
    用于创建集群外 HTTP 连接的代理 URL。URL 方案必须是 http
    2
    用于创建集群外 HTTPS 连接的代理 URL。
    3
    要从代理中排除的目标域名、IP 地址或其他网络 CIDR 的逗号分隔列表。在域前面加上 . 以仅匹配子域。例如,.y.com 匹配 x.y.com,但不匹配 y.com。使用 * 绕过所有目的地的代理。您必须包含 vCenter 的 IP 地址以及用于其机器的 IP 范围。
    4
    如果提供,安装程序会在 openshift-config 命名空间中生成名为 user-ca-bundle 的配置映射,其包含代理 HTTPS 连接所需的一个或多个额外 CA 证书。然后,Cluster Network Operator 会创建 trusted-ca-bundle 配置映射,将这些内容与 Red Hat Enterprise Linux CoreOS(RHCOS)信任捆绑包合并, Proxy 对象的 trustedCA 字段中也会引用此配置映射。additionalTrustBundle 字段是必需的,除非代理的身份证书由来自 RHCOS 信任捆绑包的颁发机构签名。
    注意

    安装程序不支持代理的 readinessEndpoints 字段。

    注意

    如果安装程序超时,重启并使用安装程序的 wait-for 命令完成部署。例如:

    $ ./openshift-install wait-for install-complete --log-level debug
  2. 保存该文件并在安装 OpenShift Container Platform 时引用。

安装程序会创建一个名为 cluster 的集群范围代理,该代理 使用 提供的 install-config.yaml 文件中的代理设置。如果没有提供代理设置,仍然会创建一个 cluster Proxy 对象,但它会有一个空 spec

注意

只支持名为 clusterProxy 对象,且无法创建额外的代理。

21.3.11. 部署集群

您可以在兼容云平台上安装 OpenShift Container Platform。

重要

在初始安装过程中,您只能运行安装程序的 create cluster 命令一次。

先决条件

  • 获取 OpenShift Container Platform 安装程序和集群的 pull secret。

流程

  • 进入包含安装程序的目录并初始化集群部署:

    $ ./openshift-install create cluster --dir <installation_directory> \ 1
        --log-level=info 2
    1
    对于 <installation_directory>,请指定自定义 ./install-config.yaml 文件的位置。
    2
    要查看不同的安装详情,请指定 warndebugerror,而不是 info

验证

当集群部署成功完成时:

  • 终端会显示用于访问集群的说明,包括指向 Web 控制台和 kubeadmin 用户的凭证的链接。
  • 凭证信息还会输出到 <installation_directory>/.openshift_install.log.
重要

不要删除安装程序或安装程序所创建的文件。需要这两者才能删除集群。

输出示例

...
INFO Install complete!
INFO To access the cluster as the system:admin user when using 'oc', run 'export KUBECONFIG=/home/myuser/install_dir/auth/kubeconfig'
INFO Access the OpenShift web-console here: https://console-openshift-console.apps.mycluster.example.com
INFO Login to the console with user: "kubeadmin", and password: "password"
INFO Time elapsed: 36m22s

重要
  • 安装程序生成的 Ignition 配置文件包含在 24 小时后过期的证书,然后在过期时进行续订。如果在更新证书前关闭集群,且集群在 24 小时后重启,集群会自动恢复过期的证书。一个例外是,您必须手动批准待处理的 node-bootstrapper 证书签名请求(CSR)来恢复 kubelet 证书。如需更多信息,请参阅从过期的 control plane 证书 中恢复的文档。
  • 建议您在 Ignition 配置文件生成后的 12 小时内使用它们,因为 24 小时的证书会在集群安装后的 16 小时到 22 小时间进行轮转。通过在 12 小时内使用 Ignition 配置文件,您可以避免在安装过程中因为执行了证书更新而导致安装失败的问题。

21.3.12. 通过下载二进制文件安装 OpenShift CLI

您可以安装 OpenShift CLI(oc)来使用命令行界面与 OpenShift Container Platform 进行交互。您可以在 Linux、Windows 或 macOS 上安装 oc

重要

如果安装了旧版本的 oc,则无法使用 OpenShift Container Platform 4.11 中的所有命令。下载并安装新版本的 oc

在 Linux 上安装 OpenShift CLI

您可以按照以下流程在 Linux 上安装 OpenShift CLI(oc)二进制文件。

流程

  1. 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面
  2. 产品变体下拉菜单中选择架构。
  3. Version 下拉菜单中选择相应的版本。
  4. OpenShift v4.11 Linux Client 条目旁的 Download Now 来保存文件。
  5. 解包存档:

    $ tar xvf <file>
  6. oc 二进制文件放到 PATH 中的目录中

    要查看您的 PATH,请执行以下命令:

    $ echo $PATH

验证

  • 安装 OpenShift CLI 后,可以使用 oc 命令:

    $ oc <command>
在 Windows 上安装 OpenShift CLI

您可以按照以下流程在 Windows 上安装 OpenShift CLI(oc)二进制文件。

流程

  1. 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面
  2. Version 下拉菜单中选择相应的版本。
  3. OpenShift v4.11 Windows Client 条目旁的 Download Now 来保存文件。
  4. 使用 ZIP 程序解压存档。
  5. oc 二进制文件移到 PATH 中的目录中

    要查看您的 PATH,请打开命令提示并执行以下命令:

    C:\> path

验证

  • 安装 OpenShift CLI 后,可以使用 oc 命令:

    C:\> oc <command>
在 macOS 上安装 OpenShift CLI

您可以按照以下流程在 macOS 上安装 OpenShift CLI(oc)二进制文件。

流程

  1. 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面
  2. Version 下拉菜单中选择相应的版本。
  3. OpenShift v4.11 macOS Client 条目旁的 Download Now 来保存文件。

    注意

    对于 macOS arm64,请选择 OpenShift v4.11 macOS arm64 Client 条目。

  4. 解包和解压存档。
  5. oc 二进制文件移到 PATH 的目录中。

    要查看您的 PATH,请打开终端并执行以下命令:

    $ echo $PATH

验证

  • 安装 OpenShift CLI 后,可以使用 oc 命令:

    $ oc <command>

21.3.13. 使用 CLI 登录集群

您可以通过导出集群 kubeconfig 文件,以默认系统用户身份登录集群。kubeconfig 文件包含有关集群的信息,供 CLI 用于将客户端连接到正确的集群和 API 服务器。该文件特定于集群,在 OpenShift Container Platform 安装过程中创建。

先决条件

  • 已部署 OpenShift Container Platform 集群。
  • 已安装 oc CLI。

流程

  1. 导出 kubeadmin 凭证:

    $ export KUBECONFIG=<installation_directory>/auth/kubeconfig 1
    1
    对于 <installation_directory>,请指定安装文件保存到的目录的路径。
  2. 验证您可以使用导出的配置成功运行 oc 命令:

    $ oc whoami

    输出示例

    system:admin

21.3.14. 创建 registry 存储

安装集群后,必须为 registry Operator 创建存储。

21.3.14.1. 安装过程中删除的镜像 registry

在不提供可共享对象存储的平台上,OpenShift Image Registry Operator bootstraps 本身为 Removed。这允许 openshift-installer 在这些平台类型上完成安装。

安装后,您必须编辑 Image Registry Operator 配置,将 managementStateRemoved 切换到 Managed

21.3.14.2. 镜像 registry 存储配置

对于不提供默认存储的平台,Image Registry Operator 最初不可用。安装后,您必须将 registry 配置为使用存储,以便 Registry Operator 可用。

显示配置生产集群所需的持久性卷的说明。如果适用,显示有关将空目录配置为存储位置的说明,这仅适用于非生产集群。

提供了在升级过程中使用 Recreate rollout 策略来允许镜像 registry 使用块存储类型的说明。

21.3.14.2.1. 为 VMware vSphere 配置 registry 存储

作为集群管理员,在安装后需要配置 registry 来使用存储。

先决条件

  • 集群管理员权限。
  • VMware vSphere 上有一个集群。
  • 为集群置备的持久性存储,如 Red Hat OpenShift Data Foundation。

    重要

    当您只有一个副本时,OpenShift Container Platform 支持对镜像 registry 存储的 ReadWriteOnce 访问。ReadWriteOnce 访问还要求 registry 使用 Recreate rollout 策略。要部署支持高可用性的镜像 registry,需要两个或多个副本,ReadWriteMany 访问。

  • 必须具有"100Gi"容量.
重要

测试显示在 RHEL 中使用 NFS 服务器作为核心服务的存储后端的问题。这包括 OpenShift Container Registry 和 Quay,Prometheus 用于监控存储,以及 Elasticsearch 用于日志存储。因此,不建议使用 RHEL NFS 作为 PV 后端用于核心服务。

市场上的其他 NFS 实现可能没有这些问题。如需了解更多与此问题相关的信息,请联络相关的 NFS 厂商。

流程

  1. 要将 registry 配置为使用存储,修改 configs.imageregistry/cluster 资源中的 spec.storage.pvc

    注意

    使用共享存储时,请查看您的安全设置以防止外部访问。

  2. 验证您没有 registry pod:

    $ oc get pod -n openshift-image-registry -l docker-registry=default

    输出示例

    No resourses found in openshift-image-registry namespace

    注意

    如果您的输出中有一个 registry pod,则不需要继续这个过程。

  3. 检查 registry 配置:

    $ oc edit configs.imageregistry.operator.openshift.io

    输出示例

    storage:
      pvc:
        claim: 1

    1
    claim 字段留空以允许自动创建 image-registry-storage 持久性卷声明(PVC)。PVC 基于默认存储类生成。但请注意,默认存储类可能会提供 ReadWriteOnce (RWO)卷,如 RADOS 块设备(RBD),这可能会在复制到多个副本时导致问题。
  4. 检查 clusteroperator 状态:

    $ oc get clusteroperator image-registry

    输出示例

    NAME             VERSION                              AVAILABLE   PROGRESSING   DEGRADED   SINCE   MESSAGE
    image-registry   4.7                                  True        False         False      6h50m

21.3.14.2.2. 为 VMware vSphere 配置块 registry 存储

要允许镜像 registry 在作为集群管理员升级过程中使用块存储类型,如 vSphere Virtual Machine Disk(VMDK),您可以使用 Recreate rollout 策略

重要

支持块存储卷,但不建议在生产环境中用于镜像 registry。在块存储上配置 registry 的安装不具有高可用性,因为 registry 无法具有多个副本。

流程

  1. 输入以下命令将镜像 registry 存储设置为块存储类型,对 registry 进行补丁,使其使用 Recreate rollout 策略,并只使用一个副本运行:

    $ oc patch config.imageregistry.operator.openshift.io/cluster --type=merge -p '{"spec":{"rolloutStrategy":"Recreate","replicas":1}}'
  2. 为块存储设备置备 PV,并为该卷创建 PVC。请求的块卷使用 ReadWriteOnce(RWO)访问模式。

    1. 创建包含以下内容的 pvc.yaml 文件以定义 VMware vSphere PersistentVolumeClaim 对象:

      kind: PersistentVolumeClaim
      apiVersion: v1
      metadata:
        name: image-registry-storage 1
        namespace: openshift-image-registry 2
      spec:
        accessModes:
        - ReadWriteOnce 3
        resources:
          requests:
            storage: 100Gi 4
      1
      代表 PersistentVolumeClaim 对象的唯一名称。
      2
      PersistentVolumeClaim 对象的命名空间,即 openshift-image-registry
      3
      持久性卷声明的访问模式。使用 ReadWriteOnce 时,单个节点可以通过读写权限挂载该卷。
      4
      持久性卷声明的大小。
    2. 输入以下命令从文件创建 PersistentVolumeClaim 对象:

      $ oc create -f pvc.yaml -n openshift-image-registry
  3. 输入以下命令编辑 registry 配置,使其引用正确的 PVC:

    $ oc edit config.imageregistry.operator.openshift.io -o yaml

    输出示例

    storage:
      pvc:
        claim: 1

    1
    通过创建自定义 PVC,您可以将 claim 字段留空,以便默认自动创建 image-registry-storage PVC。

有关配置 registry 存储以便引用正确的 PVC 的说明,请参阅 为 vSphere 配置 registry

21.3.15. 备份 VMware vSphere 卷

OpenShift Container Platform 将新卷作为独立持久性磁盘置备,以在集群中的任何节点上自由附加和分离卷。因此,无法备份使用快照的卷,也无法从快照中恢复卷。如需更多信息 ,请参阅快照限制

流程

创建持久性卷的备份:

  1. 停止使用该持久卷的应用。
  2. 克隆持久性卷。
  3. 重新启动应用程序。
  4. 创建克隆的卷的备份。
  5. 删除克隆的卷。

21.3.16. OpenShift Container Platform 的 Telemetry 访问

在 OpenShift Container Platform 4.11 中,默认运行的 Telemetry 服务提供有关集群健康状况和成功更新的指标,需要访问互联网。如果您的集群连接到互联网,Telemetry 会自动运行,并且集群会注册到 OpenShift Cluster Manager Hybrid Cloud Console

确认 OpenShift Cluster Manager Hybrid Cloud Console 清单正确后,可以由 Telemetry 自动维护,也可以使用 OpenShift Cluster Manager 手动维护,使用订阅监控来跟踪帐户或多集群级别的 OpenShift Container Platform 订阅。

其他资源

21.3.17. 配置外部负载均衡器

您可以将 OpenShift Container Platform 集群配置为使用外部负载均衡器来代替默认负载均衡器。

重要

配置外部负载均衡器取决于您的供应商的负载均衡器。

本节中的信息和示例仅用于指导目的。有关供应商负载均衡器的更多信息,请参阅供应商文档。

红帽支持外部负载均衡器的以下服务:

  • Ingress Controller
  • OpenShift API
  • OpenShift MachineConfig API

您可以选择是否为外部负载均衡器配置一个或多个所有服务。仅配置 Ingress Controller 服务是一个通用的配置选项。要更好地了解每个服务,请查看以下图表:

图 21.4. 显示 OpenShift Container Platform 环境中运行的 Ingress Controller 的网络工作流示例

显示 OpenShift Container Platform 环境中运行 Ingress Controller 的示例网络工作流的镜像。

图 21.5. 显示 OpenShift Container Platform 环境中运行的 OpenShift API 的网络工作流示例

显示 OpenShift Container Platform 环境中操作的 OpenShift API 网络工作流示例镜像。

图 21.6. 显示 OpenShift Container Platform 环境中运行的 OpenShift MachineConfig API 的网络工作流示例

显示 OpenShift Container Platform 环境中操作的 OpenShift MachineConfig API 示例网络工作流的镜像。

注意事项

  • 对于前端 IP 地址,您可以对前端 IP 地址、Ingress Controller 的负载均衡器和 API 负载均衡器使用相同的 IP 地址。查看厂商的文档以获取此功能的相关信息。
  • 对于后端 IP 地址,请确保 OpenShift Container Platform control plane 节点的 IP 地址在外部负载均衡器的生命周期内不会改变。您可以通过完成以下操作之一来实现此目的:

    • 为每个 control plane 节点分配一个静态 IP 地址。
    • 将每个节点配置为在每次节点请求 DHCP 租期时从 DHCP 接收相同的 IP 地址。根据供应商,DHCP 租期可能采用 IP 保留或静态 DHCP 分配的形式。
  • 在 Ingress Controller 后端服务的外部负载均衡器中手动定义运行 Ingress Controller 的每个节点。例如,如果 Ingress Controller 移到未定义节点,则可能会出现连接中断。

OpenShift API 的先决条件

  • 您定义了前端 IP 地址。
  • TCP 端口 6443 和 22623 在负载均衡器的前端 IP 地址上公开。检查以下项:

    • 端口 6443 提供对 OpenShift API 服务的访问。
    • 端口 22623 可以为节点提供 ignition 启动配置。
  • 前端 IP 地址和端口 6443 可以被您的系统的所有用户访问,其位置为 OpenShift Container Platform 集群外部。
  • 前端 IP 地址和端口 22623 只能被 OpenShift Container Platform 节点访问。
  • 负载均衡器后端可以在端口 6443 和 22623 上与 OpenShift Container Platform control plane 节点通信。

Ingress Controller 的先决条件

  • 您定义了前端 IP 地址。
  • TCP 端口 443 和 80 在负载均衡器的前端 IP 地址上公开。
  • 前端 IP 地址、端口 80 和端口 443 可以被您的系统所有用户访问,以及 OpenShift Container Platform 集群外部的位置。
  • 前端 IP 地址、端口 80 和端口 443 可被 OpenShift Container Platform 集群中运行的所有节点访问。
  • 负载均衡器后端可以在端口 80、443 和 1936 上与运行 Ingress Controller 的 OpenShift Container Platform 节点通信。

健康检查 URL 规格的先决条件

您可以通过设置健康检查 URL 来配置大多数负载均衡器,以确定服务是否可用或不可用。OpenShift Container Platform 为 OpenShift API、Machine Configuration API 和 Ingress Controller 后端服务提供这些健康检查。

以下示例演示了以前列出的后端服务的健康检查规格:

Kubernetes API 健康检查规格示例

Path: HTTPS:6443/readyz
Healthy threshold: 2
Unhealthy threshold: 2
Timeout: 10
Interval: 10

Machine Config API 健康检查规格示例

Path: HTTPS:22623/healthz
Healthy threshold: 2
Unhealthy threshold: 2
Timeout: 10
Interval: 10

Ingress Controller 健康检查规格示例

Path: HTTP:1936/healthz/ready
Healthy threshold: 2
Unhealthy threshold: 2
Timeout: 5
Interval: 10

流程

  1. 配置 HAProxy Ingress Controller,以便您可以在端口 6443、443 和 80 上从负载均衡器访问集群:

    HAProxy 配置示例

    #...
    listen my-cluster-api-6443
        bind 192.168.1.100:6443
        mode tcp
        balance roundrobin
      option httpchk
      http-check connect
      http-check send meth GET uri /readyz
      http-check expect status 200
        server my-cluster-master-2 192.168.1.101:6443 check inter 10s rise 2 fall 2
        server my-cluster-master-0 192.168.1.102:6443 check inter 10s rise 2 fall 2
        server my-cluster-master-1 192.168.1.103:6443 check inter 10s rise 2 fall 2
    
    listen my-cluster-machine-config-api-22623
        bind 192.168.1.1000.0.0.0:22623
        mode tcp
        balance roundrobin
      option httpchk
      http-check connect
      http-check send meth GET uri /healthz
      http-check expect status 200
        server my-cluster-master-2 192.0168.21.2101:22623 check inter 10s rise 2 fall 2
        server my-cluster-master-0 192.168.1.1020.2.3:22623 check inter 10s rise 2 fall 2
        server my-cluster-master-1 192.168.1.1030.2.1:22623 check inter 10s rise 2 fall 2
    
    listen my-cluster-apps-443
            bind 192.168.1.100:443
            mode tcp
            balance roundrobin
        option httpchk
        http-check connect
        http-check send meth GET uri /healthz/ready
        http-check expect status 200
            server my-cluster-worker-0 192.168.1.111:443 check port 1936 inter 10s rise 2 fall 2
            server my-cluster-worker-1 192.168.1.112:443 check port 1936 inter 10s rise 2 fall 2
            server my-cluster-worker-2 192.168.1.113:443 check port 1936 inter 10s rise 2 fall 2
    
    listen my-cluster-apps-80
            bind 192.168.1.100:80
            mode tcp
            balance roundrobin
        option httpchk
        http-check connect
        http-check send meth GET uri /healthz/ready
        http-check expect status 200
            server my-cluster-worker-0 192.168.1.111:80 check port 1936 inter 10s rise 2 fall 2
            server my-cluster-worker-1 192.168.1.112:80 check port 1936 inter 10s rise 2 fall 2
            server my-cluster-worker-2 192.168.1.113:80 check port 1936 inter 10s rise 2 fall 2
    # ...

  2. 使用 curl CLI 命令验证外部负载均衡器及其资源是否正常运行:

    1. 运行以下命令并查看响应,验证集群机器配置 API 是否可以被 Kubernetes API 服务器资源访问:

      $ curl https://<loadbalancer_ip_address>:6443/version --insecure

      如果配置正确,您会收到 JSON 对象的响应:

      {
        "major": "1",
        "minor": "11+",
        "gitVersion": "v1.11.0+ad103ed",
        "gitCommit": "ad103ed",
        "gitTreeState": "clean",
        "buildDate": "2019-01-09T06:44:10Z",
        "goVersion": "go1.10.3",
        "compiler": "gc",
        "platform": "linux/amd64"
      }
    2. 运行以下命令并观察输出,验证集群机器配置 API 是否可以被 Machine 配置服务器资源访问:

      $ curl -v https://<loadbalancer_ip_address>:22623/healthz --insecure

      如果配置正确,命令的输出会显示以下响应:

      HTTP/1.1 200 OK
      Content-Length: 0
    3. 运行以下命令并观察输出,验证控制器是否可以被端口 80 上的 Ingress Controller 资源访问:

      $ curl -I -L -H "Host: console-openshift-console.apps.<cluster_name>.<base_domain>" http://<load_balancer_front_end_IP_address>

      如果配置正确,命令的输出会显示以下响应:

      HTTP/1.1 302 Found
      content-length: 0
      location: https://console-openshift-console.apps.ocp4.private.opequon.net/
      cache-control: no-cache
    4. 运行以下命令并观察输出,验证控制器是否可以被端口 443 上的 Ingress Controller 资源访问:

      $ curl -I -L --insecure --resolve console-openshift-console.apps.<cluster_name>.<base_domain>:443:<Load Balancer Front End IP Address> https://console-openshift-console.apps.<cluster_name>.<base_domain>

      如果配置正确,命令的输出会显示以下响应:

      HTTP/1.1 200 OK
      referrer-policy: strict-origin-when-cross-origin
      set-cookie: csrf-token=UlYWOyQ62LWjw2h003xtYSKlh1a0Py2hhctw0WmV2YEdhJjFyQwWcGBsja261dGLgaYO0nxzVErhiXt6QepA7g==; Path=/; Secure; SameSite=Lax
      x-content-type-options: nosniff
      x-dns-prefetch-control: off
      x-frame-options: DENY
      x-xss-protection: 1; mode=block
      date: Wed, 04 Oct 2023 16:29:38 GMT
      content-type: text/html; charset=utf-8
      set-cookie: 1e2670d92730b515ce3a1bb65da45062=1bf5e9573c9a2760c964ed1659cc1673; path=/; HttpOnly; Secure; SameSite=None
      cache-control: private
  3. 为您的集群配置 DNS 记录,以外部负载均衡器的前端 IP 地址为目标。您必须在负载均衡器上将记录更新为集群 API 和应用程序的 DNS 服务器。

    修改 DNS 记录示例

    <load_balancer_ip_address>  A  api.<cluster_name>.<base_domain>
    A record pointing to Load Balancer Front End

    <load_balancer_ip_address>   A apps.<cluster_name>.<base_domain>
    A record pointing to Load Balancer Front End
    重要

    DNS 传播可能需要一些时间才能获得每个 DNS 记录。在验证每个记录前,请确保每个 DNS 记录传播。

  4. 使用 curl CLI 命令验证外部负载均衡器和 DNS 记录配置是否正常运行:

    1. 运行以下命令并查看输出,验证您可以访问集群 API:

      $ curl https://api.<cluster_name>.<base_domain>:6443/version --insecure

      如果配置正确,您会收到 JSON 对象的响应:

      {
        "major": "1",
        "minor": "11+",
        "gitVersion": "v1.11.0+ad103ed",
        "gitCommit": "ad103ed",
        "gitTreeState": "clean",
        "buildDate": "2019-01-09T06:44:10Z",
        "goVersion": "go1.10.3",
        "compiler": "gc",
        "platform": "linux/amd64"
        }
    2. 运行以下命令并查看输出,验证您可以访问集群机器配置:

      $ curl -v https://api.<cluster_name>.<base_domain>:22623/healthz --insecure

      如果配置正确,命令的输出会显示以下响应:

      HTTP/1.1 200 OK
      Content-Length: 0
    3. 运行以下命令并查看输出,验证您可以在端口上访问每个集群应用程序:

      $ curl http://console-openshift-console.apps.<cluster_name>.<base_domain> -I -L --insecure

      如果配置正确,命令的输出会显示以下响应:

      HTTP/1.1 302 Found
      content-length: 0
      location: https://console-openshift-console.apps.<cluster-name>.<base domain>/
      cache-control: no-cacheHTTP/1.1 200 OK
      referrer-policy: strict-origin-when-cross-origin
      set-cookie: csrf-token=39HoZgztDnzjJkq/JuLJMeoKNXlfiVv2YgZc09c3TBOBU4NI6kDXaJH1LdicNhN1UsQWzon4Dor9GWGfopaTEQ==; Path=/; Secure
      x-content-type-options: nosniff
      x-dns-prefetch-control: off
      x-frame-options: DENY
      x-xss-protection: 1; mode=block
      date: Tue, 17 Nov 2020 08:42:10 GMT
      content-type: text/html; charset=utf-8
      set-cookie: 1e2670d92730b515ce3a1bb65da45062=9b714eb87e93cf34853e87a92d6894be; path=/; HttpOnly; Secure; SameSite=None
      cache-control: private
    4. 运行以下命令并查看输出,验证您可以在端口 443 上访问每个集群应用程序:

      $ curl https://console-openshift-console.apps.<cluster_name>.<base_domain> -I -L --insecure

      如果配置正确,命令的输出会显示以下响应:

      HTTP/1.1 200 OK
      referrer-policy: strict-origin-when-cross-origin
      set-cookie: csrf-token=UlYWOyQ62LWjw2h003xtYSKlh1a0Py2hhctw0WmV2YEdhJjFyQwWcGBsja261dGLgaYO0nxzVErhiXt6QepA7g==; Path=/; Secure; SameSite=Lax
      x-content-type-options: nosniff
      x-dns-prefetch-control: off
      x-frame-options: DENY
      x-xss-protection: 1; mode=block
      date: Wed, 04 Oct 2023 16:29:38 GMT
      content-type: text/html; charset=utf-8
      set-cookie: 1e2670d92730b515ce3a1bb65da45062=1bf5e9573c9a2760c964ed1659cc1673; path=/; HttpOnly; Secure; SameSite=None
      cache-control: private

21.3.18. 后续步骤

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.