第 16 章 在 vSphere 上安装

16.1. 在 vSphere 上安装集群

在 OpenShift Container Platform 版本 4.7 中,您可以使用安装程序置备的基础架构在 VMware vSphere 实例上安装集群。

16.1.1. 先决条件

16.1.2. OpenShift Container Platform 的互联网访问

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

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

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

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

16.1.3. VMware vSphere 基础架构要求

您必须在满足您使用的组件要求的 VMware vSphere 版本 6 或 7 实例上安装 OpenShift Container Platform 集群。

表 16.1. VMware 组件支持的最低 vSphere 版本

组件最低支持版本描述

虚拟机监控程序

vSphere 6.5 及之后的版本 13

此版本是 Red Hat Enterprise Linux CoreOS(RHCOS)支持的最低版本。请查看 Red Hat Enterprise Linux 8 支持的管理程序列表

网络(NSX-T)

vSphere 6.5U3 或 vSphere 6.7U2 及之后的版本

OpenShift Container Platform 需要 vSphere 6.5U3 或 vSphere 6.7U2+。VMware 的 NSX Container Plug-in(NCP)使用 OpenShift Container Platform 4.6 和 NSX-T 3.x+ 认证。

使用 in-tree 驱动程序存储

vSphere 6.5 及之后的版本

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

如果您使用 vSphere 版本 6.5 实例,请在安装 OpenShift Container Platform 前考虑升级到 6.7U3 或 7.0。

重要

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

重要

配置为使用虚拟硬件版本 14 或更高版本的虚拟机(VM)可能会导致安装失败。建议您使用虚拟硬件版本 13 配置虚拟机。这是一个在已知问题,记录在 BZ#1935539 中。

16.1.4. vCenter 要求

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

所需的 vCenter 帐户权限

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

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

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

例 16.1. 安装所需的角色和权限

角色的 vSphere 对象何时需要所需的权限

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.View

vSphere vCenter Cluster

Always

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

vSphere Datastore

Always

Datastore.AllocateSpace
Datastore.Browse
Datastore.FileManagement

vSphere 端口组

Always

Network.Assign

虚拟机文件夹

Always

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.Inter Act.GuestControl
VirtualMachine.Interact.PowerOff
VirtualMachine.Interact.PowerOn
VirtualMachine.Interact.Reset
VirtualMachine.Inventory.Create
VirtualMachine.Inventory.CreateFromExist ing
VirtualMachine.Inventory.Delete
VirtualMachine.Provisioning.Clone

vSphere vCenter Datacenter

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

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.Inter Act.GuestControl
VirtualMachine.Interact.PowerOff
VirtualMachine.Interact.PowerOn
VirtualMachine.Interact.Reset
VirtualMachine.Inventory.Create
VirtualMachine.Inventory.CreateFromExist ing
VirtualMachine.Inventory.Delete
VirtualMachine.Provisioning.Clone
Folder.Create
Folder.Delete

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

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

vSphere 对象文件夹类型传播到子对象所需的权限

vSphere vCenter

Always

False

列出所需的权限

vSphere vCenter Datacenter

现有文件夹

False

ReadOnly 权限

安装程序创建文件夹

True

列出所需的权限

vSphere vCenter Cluster

Always

True

列出所需的权限

vSphere vCenter Datastore

Always

False

列出所需的权限

vSphere Switch

Always

False

ReadOnly 权限

vSphere 端口组

Always

False

列出所需的权限

vSphere vCenter Virtual Machine Folder

现有文件夹

True

列出所需的权限

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

将 OpenShift Container Platform 与 vMotion 搭配使用
重要

OpenShift Container Platform 通常支持仅用于计算的 vMotion。使用 Storage vMotion 可能会导致问题且不被支持。

如果您在 pod 中使用 vSphere 卷,请手动或通过 Storage vMotion 在数据存储间迁移虚拟机,这会导致 OpenShift Container Platform 持久性卷(PV)对象中的无效引用。这些引用可防止受影响的 pod 启动,并可能导致数据丢失。

同样,OpenShift Container Platform 不支持在数据存储间有选择地迁移 VMDK、使用数据存储集群进行虚拟机置备、动态或静态置备 PV,或使用作为数据存储集群一部分的数据存储进行 PV 的动态或静态置备。

集群资源

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

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

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

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

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

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

集群的限制

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

网络要求

网络必须使用 DHCP,并确保 DHCP 服务器被配置为为集群机器提供持久的 IP 地址。另外,在安装 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>.

表 16.2. 所需的 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 节点)为目标的负载均衡器。此记录必须能由集群外的客户端和集群内的所有节点解析。

16.1.5. 生成 SSH 私钥并将其添加到代理中

如果要在集群上执行安装调试或灾难恢复,则必须为 ssh-agent 和安装程序提供 SSH 密钥。您可以使用此密钥访问公共集群中的 bootstrap 机器来排除安装问题。

注意

在生产环境中,您需要进行灾难恢复和调试。

您可以使用此密钥以 core 用户身份通过 SSH 连接到 master 节点。在部署集群时,此密钥会添加到 core 用户的 ~/.ssh/authorized_keys 列表中。

注意

您必须使用一个本地密钥,而不要使用在特定平台上配置的密钥,如 AWS 密钥对

流程

  1. 如果还没有为计算机上免密码身份验证而配置的 SSH 密钥,请创建一个。例如,在使用 Linux 操作系统的计算机上运行以下命令:

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

    运行此命令会在指定的位置生成不需要密码的 SSH 密钥。

    注意

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

  2. 作为后台任务启动 ssh-agent 进程:

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

    输出示例

    Agent pid 31874

    注意

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

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

    $ ssh-add <path>/<file_name> 1

    输出示例

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

    1
    指定 SSH 私钥的路径和文件名,如 ~/.ssh/id_rsa
  4. GOOGLE_APPLICATION_CREDENTIALS 环境变量设置为服务帐户私钥文件的完整路径。

    $ export GOOGLE_APPLICATION_CREDENTIALS="<your_service_account_file>"
  5. 验证是否应用了凭证。

    $ gcloud auth list

后续步骤

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

16.1.6. 获取安装程序

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

先决条件

  • 运行 Linux 或 macOS 的计算机,本地磁盘空间为 500 MB

流程

  1. 访问 Red Hat 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 下载为 a.txt 文件。通过此 pull secret,您可以进行所含授权机构提供的服务的身份验证,这些服务包括为 OpenShift Container Platform 组件提供容器镜像的 Quay.io。

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

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

流程

  1. 在 vCenter 主页中下载 vCenter 的 root CA 证书。在 vSphere Web Services SDK 部分点击 Download trusted root CA certificates<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

16.1.8. 部署集群

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

重要

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

先决条件

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

流程

  1. 对于存储在以下位置的任何现有 GCP 凭证,删除不使用您为集群配置的 GCP 帐户的服务帐户密钥的凭证:

    • GOOGLE_CREDENTIALSGOOGLE_CLOUD_KEYFILE_JSONGCLOUD_KEYFILE_JSON 环境变量
    • ~/.gcp/osServiceAccount.json 文件
    • gcloud cli 默认凭证
  2. 更改为包含安装程序的目录并初始化集群部署:

    $ ./openshift-install create cluster --dir=<installation_directory> \ 1
        --log-level=info 2
    1
    对于 <installation_directory>,请指定用于保存安装程序所创建的文件的目录名称。
    2
    要查看不同的安装详情,请指定 warndebugerror,而不要指定 info
    重要

    指定一个空目录。一些安装信息,如 bootstrap X.509 证书,有较短的过期间隔,因此不要重复使用安装目录。如果要重复使用另一个集群安装中的个别文件,可以将其复制到您的目录中。但是,一些安装数据的文件名可能会在发行版本之间有所改变。从 OpenShift Container Platform 老版本中复制安装文件时要格外小心。

    在提示符处提供值:

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

      注意

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

    2. 选择 gcp 作为目标平台。
    3. 如果您没有为计算机上的 GCP 帐户配置服务帐户密钥,则必须从 GCP 获取,并粘贴文件的内容或输入文件的绝对路径。
    4. 选择要在其中置备集群的项目 ID。默认值由您配置的服务帐户指定。
    5. 选择要在其中部署集群的区域。
    6. 选择集群要部署到的基域。基域与您为集群创建的公共 DNS 区对应。
    7. 选择 vsphere 作为目标平台。
    8. 指定 vCenter 实例的名称。
    9. 指定创建集群所需的权限的 vCenter 帐户的用户名和密码。

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

    10. 选择要连接的 vCenter 实例中的数据中心。
    11. 选择要使用的默认 vCenter 数据存储。
    12. 选择要在其中安装 vCenter 集群的 OpenShift Container Platform 集群。
    13. 选择包含您配置的虚拟 IP 地址和 DNS 记录的 vCenter 实例中的网络。
    14. 输入您为 control plane API 访问配置的虚拟 IP 地址。
    15. 输入您为集群入口配置的虚拟 IP 地址。
    16. 输入基域。这个基域必须与您配置的 DNS 记录中使用的域相同。
    17. 为集群输入一个描述性名称。集群名称必须与您配置的 DNS 记录中使用的相同。如果您提供的名称超过 6 个字符,只有前 6 个字符会用在从集群名称生成的基础架构 ID 中。
    18. 粘贴从 Red Hat OpenShift Cluster Manager 站点的 Pull Secret 页面中获取的 pull secret。
    注意

    如果您在主机上配置的云供应商帐户没有足够的权限来部署集群,安装过程将会停止,并且显示缺少的权限。

    集群部署完成后,终端会显示访问集群的信息,包括指向其 Web 控制台的链接和 kubeadmin 用户的凭证。

    输出示例

    ...
    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: "4vYBz-Ee6gm-ymBZj-Wt5AL"
    INFO Time elapsed: 36m22s

    注意

    当安装成功时,集群访问和凭证信息还会输出到 <installation_directory>/.openshift_install.log

    重要

    安装程序生成的 Ignition 配置文件包含在 24 小时后过期的证书,然后在过期时进行续订。如果在更新证书前关闭集群,且集群在 24 小时后重启,集群会自动恢复过期的证书。一个例外情况是,您需要手动批准待处理的 node-bootstrapper 证书签名请求(CSR)来恢复 kubelet 证书。如需更多信息,请参阅从过期的 control plane 证书中恢复的文档。

    重要

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

  3. 可选:您可以减少用于安装集群的服务帐户的权限数。

    • 如果将 Owner 角色分配给您的服务帐户,您可以删除该角色并使用 Viewer 角色替换。
    • 如果您包含 Service Account Key Admin 角色,您可以将其删除。

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

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

重要

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

16.1.9.1. 在 Linux 上安装 OpenShift CLI

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

流程

  1. 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面
  2. Version 下拉菜单中选择相应的版本。
  3. 单击 OpenShift v4.7 Linux 客户端 条目旁边的 Download Now,再保存文件。
  4. 解包存档:

    $ tar xvzf <file>
  5. oc 二进制代码放到 PATH 中的目录中。

    执行以下命令可以查看当前的 PATH 设置:

    $ echo $PATH

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

$ oc <command>

16.1.9.2. 在 Windows 上安装 OpenShift CLI

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

流程

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

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

    C:\> path

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

C:\> oc <command>

16.1.9.3. 在 macOS 上安装 OpenShift CLI

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

流程

  1. 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面
  2. Version 下拉菜单中选择相应的版本。
  3. 单击 OpenShift v4.7 MacOSX 客户端 条目旁边的 Download Now,再保存文件。
  4. 解包和解压存档。
  5. oc 二进制文件移到 PATH 的目录中。

    要查看您的 PATH,打开一个终端窗口并执行以下命令:

    $ echo $PATH

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

$ oc <command>

16.1.10. 使用 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

16.1.11. 创建 registry 存储

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

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

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

ManagementState Image Registry Operator 配置从 Removed 改为 Managed

注意

Prometheus 控制台提供了一个 ImageRegistryRemoved 警报,例如:

"Image Registry has been removed.ImageStreamTags, BuildConfigs and DeploymentConfigs which reference ImageStreamTags may not work as expected.Please configure storage and update the config to Managed state by editing configs.imageregistry.operator.openshift.io."

16.1.11.2. 镜像 registry 存储配置

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

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

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

16.1.11.2.1. 为 VMware vSphere 配置 registry 存储

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

先决条件

  • 具有 Cluster Administrator 权限
  • VMware vSphere上有一个集群。
  • 为集群置备的持久性存储,如 Red Hat OpenShift Container Storage。

    重要

    如果您只有一个副本,OpenShift Container Platform 支持对镜像 registry 存储的 ReadWriteOnce 访问。要部署支持高可用性的、带有两个或多个副本的镜像 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
    注意

    如果存储类型为 emptyDIR,则副本数不能超过 1

  3. 检查 registry 配置:

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

    输出示例

    storage:
      pvc:
        claim: 1

    1
    claim 字段留空以允许自动创建一个 image-registry-storage PVC。
  4. 检查 clusteroperator 的状态:

    $ oc get clusteroperator image-registry
16.1.11.2.2. 为 VMware vSphere 配置块 registry 存储

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

重要

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

流程

  1. 要将镜像 registry 存储设置为块存储类型,对 registry 进行补丁,使其使用 Recreate rollout 策略,且仅使用 1 个副本运行:

    $ 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

16.1.12. 备份 VMware vSphere 卷

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

流程

要创建持久性卷的备份:

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

16.1.13. OpenShift Container Platform 的 Telemetry 访问

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

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

其他资源

16.1.14. 后续步骤