us-east-1
在 OpenShift Container Platform 4.17 版本中,您可以安装在您在受限网络中预配的 VMware vSphere 基础架构上的集群。
对多个 vCenter 的支持仅为技术预览功能。技术预览功能不受 Red Hat 生产服务级别协议 (SLA) 的支持,并且可能功能不完整。Red Hat 不建议在生产环境中使用它们。这些功能提供对即将推出的产品功能的早期访问,使客户能够在开发过程中测试功能并提供反馈。 有关 Red Hat 技术预览功能的支持范围的更多信息,请参阅 技术预览功能支持范围。 |
执行用户预配的基础架构安装的步骤仅作为示例提供。安装使用您提供的基础架构的集群需要了解 vSphere 平台和 OpenShift Container Platform 的安装过程。将用户预配的基础架构安装说明用作指南;您可以自由地通过其他方法创建所需的资源。 |
您已完成 使用用户预配的基础架构准备安装集群 中的任务。
您已查看 VMware 平台许可证。Red Hat 不会对您的 VMware 许可证施加任何限制,但某些 VMware 基础架构组件需要许可证。
您已查看有关 OpenShift Container Platform 安装和更新 过程的详细信息。
您已阅读有关 选择集群安装方法并为用户准备集群 的文档。
您已在镜像主机上创建了一个注册表,并获得了OpenShift Container Platform版本的imageContentSources
数据。
由于安装介质位于镜像主机上,您可以使用该计算机完成所有安装步骤。 |
您已为集群配置了持久性存储。要部署私有镜像注册表,您的存储必须提供ReadWriteMany
访问模式。
完成安装需要您将Red Hat Enterprise Linux CoreOS (RHCOS) OVA上传到vSphere主机。完成此过程的机器需要访问vCenter和ESXi主机的443端口。您已验证443端口可访问。
如果您使用防火墙,请与管理员确认443端口可访问。为了成功安装,控制平面节点必须能够通过443端口访问vCenter和ESXi主机。
如果您使用防火墙并计划使用遥测服务,则您已配置防火墙以允许集群需要访问的站点。
如果您正在配置代理,请务必也查看此站点列表。 |
在OpenShift Container Platform 4.17中,您可以执行无需主动连接互联网即可获取软件组件的安装。受限网络安装可以使用安装程序预配的基础设施或用户预配的基础设施完成,具体取决于您要安装集群的云平台。
如果您选择在云平台上执行受限网络安装,您仍然需要访问其云API。某些云功能(例如Amazon Web Service的Route 53 DNS和IAM服务)需要互联网访问。根据您的网络,您可能需要较少的互联网访问才能在裸机硬件、Nutanix或VMware vSphere上进行安装。
要完成受限网络安装,您必须创建一个注册表,该注册表镜像OpenShift镜像注册表的内容并包含安装介质。您可以在可以访问互联网和封闭网络的镜像主机上创建此注册表,或者使用满足您限制的其他方法。
由于用户预配安装的配置复杂,建议您在尝试使用用户预配的基础设施进行受限网络安装之前,先完成标准用户预配基础设施安装。完成此测试安装可能会更容易隔离和排查在受限网络中安装期间可能出现的任何问题。 |
在OpenShift Container Platform 4.17中,您需要访问互联网才能获取安装集群所需的镜像。
您必须具有互联网访问权限才能:
访问OpenShift Cluster Manager以下载安装程序并执行订阅管理。如果集群有互联网访问权限并且您没有禁用遥测,则该服务会自动授权您的集群。
访问Quay.io以获取安装集群所需的软件包。
获取执行集群更新所需的软件包。
您可以将OpenShift Container Platform集群部署到多个vSphere数据中心。每个数据中心可以运行多个集群。此配置降低了硬件故障或网络中断可能导致集群故障的风险。要启用区域和区域,您必须为OpenShift Container Platform集群定义多个故障域。
VMware vSphere区域和区域启用功能需要vSphere容器存储接口 (CSI) 驱动程序作为集群中的默认存储驱动程序。因此,此功能仅在新安装的集群上可用。 对于从先前版本升级的集群,您必须为集群启用CSI自动迁移。然后,您可以为升级的集群配置多个区域和区域。 |
默认安装配置将集群部署到单个vSphere数据中心。如果您想将集群部署到多个vSphere数据中心,则必须创建一个启用区域和区域功能的安装配置文件。
默认的install-config.yaml
文件包含vcenters
和failureDomains
字段,您可以在其中为OpenShift Container Platform集群指定多个vSphere数据中心和集群。如果您想在由单个数据中心组成的vSphere环境中安装OpenShift Container Platform集群,则可以将这些字段留空。
以下列表描述了与为集群定义区域和区域相关的术语
故障域:建立区域和区域之间的关系。您可以使用vCenter对象(例如datastore
对象)来定义故障域。故障域定义OpenShift Container Platform集群节点的vCenter位置。
区域:指定vCenter数据中心。您可以使用openshift-region
标签类别中的标签来定义区域。
区域:指定vCenter集群。您可以使用openshift-zone
标签类别中的标签来定义区域。
如果您计划在 |
您必须为每个vCenter数据中心创建一个vCenter标签,表示一个区域。此外,您必须为在数据中心中运行的每个集群创建一个vCenter标签,表示一个区域。创建标签后,您必须将每个标签附加到它们各自的数据中心和集群。
下表概述了在单个VMware vCenter中运行多个vSphere数据中心的配置中区域、区域和标签之间关系的示例。
数据中心(区域) | 集群(区域) | 标签 |
---|---|---|
us-east |
us-east-1 |
us-east-1a |
us-east-1b |
||
us-east-2 |
us-east-2a |
|
us-east-2b |
||
us-west |
us-west-1 |
us-west-1a |
us-west-1b |
||
us-west-2 |
us-west-2a |
|
us-west-2b |
安装集群需要手动创建安装配置文件。
Cloud Controller Manager 运算符会对提供的 hostname 或 IP 地址进行连接检查。请确保指定可访问的 vCenter 服务器的 hostname 或 IP 地址。如果为不存在的 vCenter 服务器提供元数据,则集群安装将在引导阶段失败。 |
您在本地机器上拥有一个 SSH 公钥,需要将其提供给安装程序。此密钥将用于 SSH 身份验证到您的集群节点,用于调试和灾难恢复。
您已获得 OpenShift Container Platform 安装程序和集群的 pull 密钥。
从镜像存储库命令的输出中获取imageContentSources
部分。
获取镜像注册表证书的内容。
创建一个安装目录来存储所需的安装资源
$ mkdir <installation_directory>
您必须创建一个目录。某些安装资源(如引导 X.509 证书)的有效期较短,因此您不能重用安装目录。如果您想重用来自另一个集群安装的单个文件,您可以将它们复制到您的目录中。但是,安装资源的文件名在不同版本之间可能会发生变化。从早期 OpenShift Container Platform 版本复制安装文件时,请谨慎操作。 |
自定义提供的示例install-config.yaml
文件模板,并将其保存在<installation_directory>
中。
您必须将此配置文件命名为 |
除非您使用 RHCOS 默认信任的注册表(例如docker.io
),否则您必须在additionalTrustBundle
部分提供镜像存储库证书的内容。在大多数情况下,您必须提供镜像的证书。
您必须包含镜像存储库命令输出中的imageContentSources
部分。
|
备份install-config.yaml
文件,以便您可以使用它来安装多个集群。
|
install-config.yaml
文件您可以自定义install-config.yaml
文件以指定有关 OpenShift Container Platform 集群平台的更多详细信息,或修改所需参数的值。
additionalTrustBundlePolicy: Proxyonly
apiVersion: v1
baseDomain: example.com (1)
compute: (2)
- architecture: amd64
name: <worker_node>
platform: {}
replicas: 0 (3)
controlPlane: (2)
architecture: amd64
name: <parent_node>
platform: {}
replicas: 3 (4)
metadata:
creationTimestamp: null
name: test (5)
networking:
---
platform:
vsphere:
failureDomains: (6)
- name: <failure_domain_name>
region: <default_region_name>
server: <fully_qualified_domain_name>
topology:
computeCluster: "/<data_center>/host/<cluster>"
datacenter: <data_center> (7)
datastore: "/<data_center>/datastore/<datastore>" (8)
networks:
- <VM_Network_name>
resourcePool: "/<data_center>/host/<cluster>/Resources/<resourcePool>" (9)
folder: "/<data_center_name>/vm/<folder_name>/<subfolder_name>" (10)
zone: <default_zone_name>
vcenters:
- datacenters:
- <data_center>
password: <password> (11)
port: 443
server: <fully_qualified_domain_name> (12)
user: [email protected]
diskType: thin (13)
fips: false (14)
pullSecret: '{"auths":{"<local_registry>": {"auth": "<credentials>","email": "[email protected]"}}}' (15)
sshKey: 'ssh-ed25519 AAAA...' (16)
additionalTrustBundle: | (17)
-----BEGIN CERTIFICATE-----
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
-----END CERTIFICATE-----
imageContentSources: (18)
- mirrors:
- <mirror_host_name>:<mirror_port>/<repo_name>/release
source: <source_image_1>
- mirrors:
- <mirror_host_name>:<mirror_port>/<repo_name>/release-images
source: <source_image_2>
1 | 集群的基本域名。所有 DNS 记录都必须为此基本域名的子域名,并包含集群名称。 | ||
2 | controlPlane 部分是一个单映射,但计算部分是一系列映射。为了满足不同数据结构的要求,compute 部分的第一行必须以连字符- 开头,而controlPlane 部分的第一行则不能。这两个部分都定义了一个单机器池,因此只使用一个控制平面。OpenShift Container Platform 不支持定义多个计算池。 |
||
3 | 您添加到集群的控制平面机器数量。由于集群使用此值作为集群中 etcd 端点的数量,因此该值必须与您部署的控制平面机器数量匹配。 | ||
4 | 您在 DNS 记录中指定的集群名称。 | ||
5 | 集群中控制平面机器的数量。由于集群使用此值作为集群中 etcd 端点的数量,因此该值必须与您部署的控制平面机器数量匹配。 | ||
6 | 建立区域和区域之间的关系。您可以使用 vCenter 对象(例如datastore 对象)定义故障域。故障域定义 OpenShift Container Platform 集群节点的 vCenter 位置。 |
||
7 | vSphere 数据中心。 | ||
8 | 保存虚拟机文件、模板和 ISO 映像的 vSphere 数据存储的路径。
|
||
9 | 可选:对于安装程序预配的基础架构,现有资源池的绝对路径,安装程序在其中创建虚拟机,例如/<data_center_name>/host/<cluster_name>/Resources/<resource_pool_name>/<optional_nested_resource_pool_name> 。如果您未指定值,则资源将安装在集群的根目录/example_data_center/host/example_cluster/Resources 中。 |
||
10 | 可选:对于安装程序预配的基础架构,现有文件夹的绝对路径,安装程序在其中创建虚拟机,例如/<data_center_name>/vm/<folder_name>/<subfolder_name> 。如果您未提供此值,则安装程序会在数据中心虚拟机文件夹中创建一个名为基础架构 ID 的顶级文件夹。如果您正在为集群提供基础架构,并且不想使用名为“thin”的默认StorageClass 对象,则可以从install-config.yaml 文件中省略folder 参数。 |
||
11 | 与 vSphere 用户关联的密码。 | ||
12 | vCenter 服务器的完全限定主机名或 IP 地址。
|
||
13 | vSphere 磁盘配置方法。 | ||
14 | 是否启用或禁用 FIPS 模式。默认情况下,FIPS 模式未启用。如果启用 FIPS 模式,则 OpenShift Container Platform 运行的 Red Hat Enterprise Linux CoreOS (RHCOS) 机器将绕过默认的 Kubernetes 加密套件,并改用 RHCOS 提供的加密模块。
|
||
15 | 对于<local_registry> ,请指定您的镜像注册表用于提供内容的注册表域名,以及可选的端口。例如 registry.example.com 或 registry.example.com:5000 。对于<credentials> ,请指定您的镜像注册表的 base64 编码用户名和密码。 |
||
16 | Red Hat Enterprise Linux CoreOS (RHCOS) 中 core 用户的默认 SSH 密钥的公钥部分。
|
||
17 | 提供您用于镜像注册表的证书文件的内容。 | ||
18 | 提供镜像存储库命令输出中的 imageContentSources 部分。 |
生产环境可以拒绝直接访问互联网,而是使用可用的 HTTP 或 HTTPS 代理。您可以通过在 install-config.yaml
文件中配置代理设置来配置新的 OpenShift Container Platform 集群以使用代理。
您有一个现有的 install-config.yaml
文件。
您已查看集群需要访问的站点,并确定其中任何站点是否需要绕过代理。默认情况下,所有集群出站流量都使用代理,包括对托管云提供商 API 的调用。如有必要,您可以将站点添加到 Proxy
对象的 spec.noProxy
字段以绕过代理。
对于在 Amazon Web Services (AWS)、Google Cloud Platform (GCP)、Microsoft Azure 和 Red Hat OpenStack Platform (RHOSP) 上的安装, |
编辑您的 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-----
additionalTrustBundlePolicy: <policy_to_add_additionalTrustBundle> (5)
1 | 用于创建集群外部 HTTP 连接的代理 URL。URL 方案必须为 http 。 |
2 | 用于创建集群外部 HTTPS 连接的代理 URL。 |
3 | 要从代理中排除的目标域名、IP 地址或其他网络 CIDR 的逗号分隔列表。用. 作为域名前缀,仅匹配子域。例如,.y.com 匹配 x.y.com ,但不匹配 y.com 。使用 * 绕过所有目标的代理。您必须包含 vCenter 的 IP 地址和用于其机器的 IP 范围。 |
4 | 如果提供,安装程序将生成一个名为 user-ca-bundle 的配置映射,该映射位于 openshift-config 命名空间中,其中包含一个或多个用于代理 HTTPS 连接所需的附加 CA 证书。然后,集群网络操作员将创建一个 trusted-ca-bundle 配置映射,该映射将这些内容与 Red Hat Enterprise Linux CoreOS (RHCOS) 信任捆绑包合并,并且此配置映射在 Proxy 对象的 trustedCA 字段中引用。除非代理的身份证书由 RHCOS 信任捆绑包中的授权机构签名,否则需要 additionalTrustBundle 字段。 |
5 | 可选:确定 Proxy 对象的配置以在 trustedCA 字段中引用 user-ca-bundle 配置映射的策略。允许的值为 Proxyonly 和 Always 。使用 Proxyonly 仅在配置 http/https 代理时引用 user-ca-bundle 配置映射。使用 Always 始终引用 user-ca-bundle 配置映射。默认值为 Proxyonly 。 |
安装程序不支持代理 |
如果安装程序超时,请重新启动,然后使用安装程序的
|
保存文件并在安装 OpenShift Container Platform 时引用它。
安装程序创建一个名为 cluster
的集群范围代理,该代理使用提供的 install-config.yaml
文件中的代理设置。如果未提供代理设置,则仍会创建 cluster
Proxy
对象,但它将具有 nil spec
。
仅支持名为 |
您可以修改默认安装配置文件,以便您可以将 OpenShift Container Platform 集群部署到多个 vSphere 数据中心。
OpenShift Container Platform 上一个版本的默认 install-config.yaml
文件配置已弃用。您可以继续使用已弃用的默认配置,但 openshift-installer
将提示您显示一条警告消息,指出配置文件中使用了已弃用的字段。
此示例使用 |
您有一个现有的 install-config.yaml
安装配置文件。
您必须为您的 OpenShift Container Platform 集群指定至少一个故障域,以便您可以为您的 VMware vCenter 服务器配置数据中心对象。如果您需要在不同的数据中心、集群、数据存储和其他组件中配置虚拟机节点,请考虑指定多个故障域。要启用区域和区域,您必须为您的 OpenShift Container Platform 集群定义多个故障域。 |
输入以下 govc
命令行工具命令以创建 openshift-region
和 openshift-zone
vCenter 标签类别:
如果您为 |
$ govc tags.category.create -d "OpenShift region" openshift-region
$ govc tags.category.create -d "OpenShift zone" openshift-zone
要为要在其中部署集群的每个区域 vSphere 数据中心创建一个区域标签,请在您的终端中输入以下命令:
$ govc tags.create -c <region_tag_category> <region_tag>
要为要在其中部署集群的每个 vSphere 集群创建一个区域标签,请输入以下命令:
$ govc tags.create -c <zone_tag_category> <zone_tag>
通过输入以下命令,将区域标签附加到每个 vCenter 数据中心对象:
$ govc tags.attach -c <region_tag_category> <region_tag_1> /<data_center_1>
通过输入以下命令,将区域标签附加到每个 vCenter 数据中心对象:
$ govc tags.attach -c <zone_tag_category> <zone_tag_1> /<data_center_1>/host/vcs-mdcnc-workload-1
切换到包含安装程序的目录,并根据您选择的安装要求初始化集群部署。
install-config.yaml
示例文件---
compute:
---
vsphere:
zones:
- "<machine_pool_zone_1>"
- "<machine_pool_zone_2>"
---
controlPlane:
---
vsphere:
zones:
- "<machine_pool_zone_1>"
- "<machine_pool_zone_2>"
---
platform:
vsphere:
vcenters:
---
datacenters:
- <data_center_1_name>
- <data_center_2_name>
failureDomains:
- name: <machine_pool_zone_1>
region: <region_tag_1>
zone: <zone_tag_1>
server: <fully_qualified_domain_name>
topology:
datacenter: <data_center_1>
computeCluster: "/<data_center_1>/host/<cluster1>"
networks:
- <VM_Network1_name>
datastore: "/<data_center_1>/datastore/<datastore1>"
resourcePool: "/<data_center_1>/host/<cluster1>/Resources/<resourcePool1>"
folder: "/<data_center_1>/vm/<folder1>"
- name: <machine_pool_zone_2>
region: <region_tag_2>
zone: <zone_tag_2>
server: <fully_qualified_domain_name>
topology:
datacenter: <data_center_2>
computeCluster: "/<data_center_2>/host/<cluster2>"
networks:
- <VM_Network2_name>
datastore: "/<data_center_2>/datastore/<datastore2>"
resourcePool: "/<data_center_2>/host/<cluster2>/Resources/<resourcePool2>"
folder: "/<data_center_2>/vm/<folder2>"
---
因为您必须修改一些集群定义文件并手动启动集群机器,所以您必须生成集群配置机器所需的Kubernetes清单和Ignition配置文件。
安装配置文件转换为Kubernetes清单。清单打包到Ignition配置文件中,这些文件稍后用于配置集群机器。
|
您已获得OpenShift Container Platform安装程序。对于受限网络安装,这些文件位于您的镜像主机上。
您已创建install-config.yaml
安装配置文件。
切换到包含OpenShift Container Platform安装程序的目录,并为集群生成Kubernetes清单
$ ./openshift-install create manifests --dir <installation_directory> (1)
1 | 对于<installation_directory> ,请指定包含您创建的install-config.yaml 文件的安装目录。 |
删除定义控制平面机器、计算机器集和控制平面机器集的Kubernetes清单文件
$ rm -f openshift/99_openshift-cluster-api_master-machines-*.yaml openshift/99_openshift-cluster-api_worker-machineset-*.yaml openshift/99_openshift-machine-api_master-control-plane-machine-set.yaml
由于您自己创建和管理这些资源,因此您无需初始化它们。
您可以保留计算机器集文件,以便使用机器API创建计算机器,但是您必须更新对它们的引用以匹配您的环境。
检查<installation_directory>/manifests/cluster-scheduler-02-config.yml
Kubernetes清单文件中mastersSchedulable
参数是否设置为false
。此设置可防止将Pod调度到控制平面机器上
打开<installation_directory>/manifests/cluster-scheduler-02-config.yml
文件。
找到mastersSchedulable
参数并确保将其设置为false
。
保存并退出文件。
要创建Ignition配置文件,请从包含安装程序的目录运行以下命令
$ ./openshift-install create ignition-configs --dir <installation_directory> (1)
1 | 对于<installation_directory> ,请指定相同的安装目录。 |
Ignition配置文件将为安装目录中的引导程序、控制平面和计算节点创建。kubeadmin-password
和kubeconfig
文件将创建在./<installation_directory>/auth
目录中
. ├── auth │ ├── kubeadmin-password │ └── kubeconfig ├── bootstrap.ign ├── master.ign ├── metadata.json └── worker.ign
您必须通过修改chrony.conf
文件的内容并将这些内容作为机器配置传递给您的节点来设置chrony时间服务 (chronyd
) 使用的时间服务器和相关设置。
创建一个包含chrony.conf
文件内容的Butane配置。例如,要在工作节点上配置chrony,请创建一个99-worker-chrony.bu
文件。
有关Butane的信息,请参阅“使用Butane创建机器配置”。 |
variant: openshift
version: 4.17.0
metadata:
name: 99-worker-chrony (1)
labels:
machineconfiguration.openshift.io/role: worker (1)
storage:
files:
- path: /etc/chrony.conf
mode: 0644 (2)
overwrite: true
contents:
inline: |
pool 0.rhel.pool.ntp.org iburst (3)
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
logdir /var/log/chrony
1 | 在控制平面节点上,在这两个位置将worker 替换为master 。 |
2 | 为机器配置文件中的mode 字段指定八进制值模式。创建文件并应用更改后,mode 将转换为十进制值。您可以使用命令oc get mc <mc-name> -o yaml 检查YAML文件。 |
3 | 指定任何有效的、可访问的时间源,例如您的DHCP服务器提供的时间源。 |
使用Butane生成一个MachineConfig
对象文件99-worker-chrony.yaml
,其中包含要传递给节点的配置
$ butane 99-worker-chrony.bu -o 99-worker-chrony.yaml
可以通过两种方式之一应用配置
如果集群尚未运行,在生成清单文件后,将MachineConfig
对象文件添加到<installation_directory>/openshift
目录中,然后继续创建集群。
如果集群已经在运行,请应用该文件
$ oc apply -f ./99-worker-chrony.yaml
Ignition配置文件包含一个唯一的集群标识符,您可以使用它在VMware vSphere中唯一标识您的集群。如果您计划使用集群标识符作为虚拟机文件夹的名称,则必须提取它。
您已获得OpenShift Container Platform安装程序和集群的pull secret。
您已为您的集群生成了Ignition配置文件。
您已安装jq
包。
要从Ignition配置文件元数据中提取和查看基础架构名称,请运行以下命令
$ jq -r .infraID <installation_directory>/metadata.json (1)
1 | 对于<installation_directory> ,请指定您存储安装文件的目录的路径。 |
openshift-vw9j6 (1)
1 | 此命令的输出是您的集群名称和一个随机字符串。 |
要在VMware vSphere上的用户预配的基础架构上安装OpenShift Container Platform,必须在vSphere主机上安装Red Hat Enterprise Linux CoreOS (RHCOS)。安装RHCOS时,必须提供OpenShift Container Platform安装程序为要安装的机器类型生成的Ignition配置文件。如果您已配置合适的网络、DNS和负载均衡基础架构,则在RHCOS机器重新启动后,OpenShift Container Platform引导过程将自动开始。
您已获得集群的Ignition配置文件。
您可以访问一个HTTP服务器,您可以从您的计算机访问该服务器,并且您创建的机器也可以访问该服务器。
您已创建一个vSphere集群。
将安装程序创建的引导程序Ignition配置文件(名为<installation_directory>/bootstrap.ign
)上传到您的HTTP服务器。记下此文件的URL。
将以下引导节点的辅助Ignition配置文件保存到您的计算机,文件名为<installation_directory>/merge-bootstrap.ign
{
"ignition": {
"config": {
"merge": [
{
"source": "<bootstrap_ignition_config_url>", (1)
"verification": {}
}
]
},
"timeouts": {},
"version": "3.2.0"
},
"networkd": {},
"passwd": {},
"storage": {},
"systemd": {}
}
1 | 指定您托管的引导 Ignition 配置文件的 URL。 |
创建引导机器的虚拟机 (VM) 时,您将使用此 Ignition 配置文件。
找到安装程序创建的以下 Ignition 配置文件:
<安装目录>/master.ign
<安装目录>/worker.ign
<安装目录>/merge-bootstrap.ign
将 Ignition 配置文件转换为 Base64 编码。稍后在此过程中,您必须将这些文件添加到虚拟机的额外配置参数 `guestinfo.ignition.config.data` 中。
例如,如果您使用 Linux 操作系统,可以使用 `base64` 命令对文件进行编码。
$ base64 -w0 <installation_directory>/master.ign > <installation_directory>/master.64
$ base64 -w0 <installation_directory>/worker.ign > <installation_directory>/worker.64
$ base64 -w0 <installation_directory>/merge-bootstrap.ign > <installation_directory>/merge-bootstrap.64
如果您计划在安装完成后向集群添加更多计算机器,请不要删除这些文件。 |
获取 RHCOS OVA 镜像。镜像可从RHCOS 镜像镜像页面获取。
RHCOS 镜像可能不会随着每次 OpenShift Container Platform 版本的发布而更改。您必须下载版本号小于或等于您安装的 OpenShift Container Platform 版本的最高版本镜像。如果可用,请使用与您的 OpenShift Container Platform 版本匹配的镜像版本。 |
文件名包含 OpenShift Container Platform 版本号,格式为 `rhcos-vmware.<架构>.ova`。
在 vSphere Client 中,在您的数据中心创建一个文件夹来存储您的虚拟机。
点击**虚拟机和模板**视图。
右键单击您的数据中心名称。
点击**新建文件夹** → **新建虚拟机和模板文件夹**。
在显示的窗口中,输入文件夹名称。如果您未在 `install-config.yaml` 文件中指定现有文件夹,则创建一个与基础架构 ID 同名的文件夹。您使用此文件夹名称,以便 vCenter 在其工作区配置的适当位置动态配置存储。
在 vSphere Client 中,为 OVA 镜像创建一个模板,然后根据需要克隆该模板。
在接下来的步骤中,您将创建一个模板,然后为集群中的所有机器克隆该模板。然后,在配置虚拟机时,您将为该克隆的机器类型提供 Ignition 配置文件的位置。 |
在**主机和集群**选项卡中,右键单击您的集群名称,然后选择**部署 OVF 模板**。
在**选择 OVF**选项卡上,指定您下载的 RHCOS OVA 文件的名称。
在**选择名称和文件夹**选项卡上,为您的模板设置一个**虚拟机名称**,例如 `Template-RHCOS`。单击您的 vSphere 集群的名称,然后选择您在上一步中创建的文件夹。
在**选择计算资源**选项卡上,单击您的 vSphere 集群的名称。
在**选择存储**选项卡上,配置虚拟机的存储选项。
根据您的存储偏好,选择**精简置备**或**厚置备**。
选择您在 `install-config.yaml` 文件中指定的存储库。
如果您想加密您的虚拟机,请选择**加密此虚拟机**。有关更多信息,请参见标题为“加密虚拟机的要求”的部分。
在**选择网络**选项卡上,指定您为集群配置的网络(如果可用)。
创建 OVF 模板时,请不要在**自定义模板**选项卡上指定值,也不要进一步配置模板。
不要启动原始虚拟机模板。虚拟机模板必须保持关闭状态,并且必须为新的 RHCOS 机器克隆。启动虚拟机模板会将虚拟机模板配置为平台上的虚拟机,这会阻止它用作计算机集可以应用配置的模板。 |
可选:如有必要,更新虚拟机模板中配置的虚拟硬件版本。有关更多信息,请参阅 VMware 文档中的将虚拟机升级到最新的硬件版本。
建议您在从虚拟机模板创建虚拟机之前,如有必要,将虚拟机模板的硬件版本更新到版本 15。现在已弃用在 vSphere 上运行的集群节点使用硬件版本 13。如果导入的模板默认为硬件版本 13,则必须确保您的 ESXi 主机在 6.7U3 或更高版本上,然后才能将虚拟机模板升级到硬件版本 15。如果您的 vSphere 版本低于 6.7U3,您可以跳过此升级步骤;但是,计划在 OpenShift Container Platform 的未来版本中删除对硬件版本 13 和低于 6.7U3 的 vSphere 版本的支持。 |
模板部署后,为集群中的机器部署虚拟机。
右键单击模板名称,然后单击**克隆** → **克隆到虚拟机**。
在**选择名称和文件夹**选项卡上,为虚拟机指定一个名称。您可以在名称中包含机器类型,例如 `control-plane-0` 或 `compute-1`。
确保整个 vSphere 安装中的所有虚拟机名称都是唯一的。 |
在**选择名称和文件夹**选项卡上,选择您为集群创建的文件夹的名称。
在**选择计算资源**选项卡上,选择数据中心中主机的名称。
在**选择克隆选项**选项卡上,选择**自定义此虚拟机的硬件**。
在**自定义硬件**选项卡上,单击**高级参数**。
以下配置建议仅供示例使用。作为集群管理员,您必须根据集群的资源需求来配置资源。为了最好地管理集群资源,请考虑从集群的根资源池创建资源池。 |
可选:覆盖 vSphere 中配置的 DHCP 网络。要启用静态 IP 网络
设置您的静态 IP 配置
$ export IPCFG="ip=<ip>::<gateway>:<netmask>:<hostname>:<iface>:none nameserver=srv1 [nameserver=srv2 [nameserver=srv3 [...]]]"
$ export IPCFG="ip=192.168.100.101::192.168.100.254:255.255.255.0:::none nameserver=8.8.8.8"
在您从 vSphere 中的 OVA 引导虚拟机之前,设置 `guestinfo.afterburn.initrd.network-kargs` 属性
$ govc vm.change -vm "<vm_name>" -e "guestinfo.afterburn.initrd.network-kargs=${IPCFG}"
通过在**属性**和**值**字段中指定数据来添加以下配置参数名称和值。确保您为创建的每个参数选择**添加**按钮。
`guestinfo.ignition.config.data`:找到您在此过程中先前创建的 base-64 编码文件,并将此机器类型的 base64 编码 Ignition 配置文件的内容粘贴到这里。
`guestinfo.ignition.config.data.encoding`:指定 `base64`。
`disk.EnableUUID`:指定 `TRUE`。
`stealclock.enable`:如果未定义此参数,请添加它并指定 `TRUE`。
从集群的根资源池创建一个子资源池。在此子资源池中执行资源分配。
在**自定义硬件**选项卡的**虚拟硬件**面板中,根据需要修改指定的值。确保 RAM、CPU 和磁盘存储量满足机器类型的最低要求。
完成其余配置步骤。单击**完成**按钮后,您就完成了克隆操作。
在**虚拟机**选项卡中,右键单击您的虚拟机,然后选择**电源** → **开启电源**。
检查控制台输出以验证 Ignition 是否已运行。
Ignition: ran on 2022/03/14 14:48:33 UTC (this boot)
Ignition: user-provided config was applied
按照前面步骤为每台机器创建集群的其余机器。
您必须在此处创建引导程序和控制平面机器。因为默认情况下某些 Pod 部署在计算机器上,所以在安装集群之前,还要创建至少两台计算机器。 |
您可以向 VMware vSphere 上的用户预配的 OpenShift Container Platform 集群中添加更多计算机器。
在您的 vSphere 模板部署到 OpenShift Container Platform 集群后,您可以在该集群中为机器部署虚拟机 (VM)。
获取计算机的 base64 编码的 Ignition 文件。
您可以访问为集群创建的 vSphere 模板。
右键单击模板名称,然后单击**克隆** → **克隆到虚拟机**。
在**选择名称和文件夹**选项卡上,指定 VM 的名称。您可以在名称中包含机器类型,例如 `compute-1`。
确保整个 vSphere 安装中的所有虚拟机名称都是唯一的。 |
在**选择名称和文件夹**选项卡上,选择您为集群创建的文件夹的名称。
在**选择计算资源**选项卡上,选择数据中心中主机的名称。
在**选择存储**选项卡上,选择配置和磁盘文件的存储。
在**选择克隆选项**选项卡上,选择**自定义此虚拟机的硬件**。
在**自定义硬件**选项卡上,单击**高级参数**。
通过在**属性**和**值**字段中指定数据来添加以下配置参数名称和值。确保您为创建的每个参数选择**添加**按钮。
`guestinfo.ignition.config.data`:粘贴此机器类型的 base64 编码的计算 Ignition 配置文件的内容。
`guestinfo.ignition.config.data.encoding`:指定 `base64`。
`disk.EnableUUID`:指定 `TRUE`。
在**自定义硬件**选项卡的**虚拟硬件**面板中,根据需要修改指定的值。确保 RAM、CPU 和磁盘存储量满足机器类型的最低要求。如果存在多个网络,请选择**添加新设备** > **网络适配器**,然后在**新建网络**菜单项提供的字段中输入您的网络信息。
完成其余配置步骤。单击**完成**按钮后,您就完成了克隆操作。
在**虚拟机**选项卡中,右键单击您的虚拟机,然后选择**电源** → **开启电源**。
继续为集群创建更多计算机器。
在大多数情况下,数据分区最初是由安装 RHCOS 创建的,而不是由安装其他操作系统创建的。在这种情况下,应允许 OpenShift Container Platform 安装程序配置您的磁盘分区。
但是,在安装 OpenShift Container Platform 节点时,您可能需要干预以覆盖默认分区的情况有两种:
创建单独的分区:对于空磁盘上的全新安装,您可能希望向分区添加单独的存储。这正式支持将 `/var` 或 `/var` 的子目录(例如 `/var/lib/etcd`)设为单独的分区,但不能同时两者都设为单独分区。
对于大于 100GB 的磁盘大小,尤其是大于 1TB 的磁盘大小,请创建单独的 `/var` 分区。有关更多信息,请参阅“创建单独的 `/var` 分区”和这篇Red Hat 知识库文章。 |
Kubernetes 只支持两个文件系统分区。如果您向原始配置中添加多个分区,Kubernetes 将无法监视所有分区。 |
保留现有分区:对于在现有节点上重新安装 OpenShift Container Platform 并希望保留从先前操作系统安装的数据分区的棕地安装,既有允许您保留现有数据分区的引导参数,也有 `coreos-installer` 的选项。
通常,OpenShift Container Platform 的磁盘分区应留给安装程序处理。但是,在某些情况下,您可能希望在您预期会增长的文件系统部分中创建单独的分区。
OpenShift Container Platform 支持添加单个分区以将存储附加到 `/var` 分区或 `/var` 的子目录。例如:
`/var/lib/containers`:保存与容器相关的內容,随着向系统添加更多镜像和容器,它可能会增长。
`/var/lib/etcd`:保存您可能出于性能优化 etcd 存储等目的而希望单独保留的数据。
`/var`:保存您可能出于审核等目的而希望单独保留的数据。
对于大于 100GB 的磁盘大小,尤其是大于 1TB 的磁盘大小,请创建单独的 `/var` 分区。 |
单独存储 `/var` 目录的内容使得根据需要更容易地扩展这些区域的存储,并在以后重新安装 OpenShift Container Platform 并保持数据完整性。使用此方法,您无需再次拉取所有容器,也无需在更新系统时复制海量日志文件。
因为在全新安装 Red Hat Enterprise Linux CoreOS (RHCOS) 之前必须存在 `/var`,所以以下过程通过创建一个在 OpenShift Container Platform 安装的 `openshift-install` 准备阶段插入的机器配置清单来设置单独的 `/var` 分区。
创建一个目录来保存 OpenShift Container Platform 安装文件
$ mkdir $HOME/clusterconfig
运行 `openshift-install` 以在 `manifest` 和 `openshift` 子目录中创建一组文件。根据提示回答系统问题。
$ openshift-install create manifests --dir $HOME/clusterconfig
? SSH Public Key ...
$ ls $HOME/clusterconfig/openshift/
99_kubeadmin-password-secret.yaml
99_openshift-cluster-api_master-machines-0.yaml
99_openshift-cluster-api_master-machines-1.yaml
99_openshift-cluster-api_master-machines-2.yaml
...
创建一个 Butane 配置文件,该文件配置附加分区。例如,将文件命名为 `$HOME/clusterconfig/98-var-partition.bu`,将磁盘设备名称更改为 `worker` 系统上存储设备的名称,并根据需要设置存储大小。此示例将 `/var` 目录放在单独的分区上。
variant: openshift
version: 4.17.0
metadata:
labels:
machineconfiguration.openshift.io/role: worker
name: 98-var-partition
storage:
disks:
- device: /dev/disk/by-id/<device_name> (1)
partitions:
- label: var
start_mib: <partition_start_offset> (2)
size_mib: <partition_size> (3)
number: 5
filesystems:
- device: /dev/disk/by-partlabel/var
path: /var
format: xfs
mount_options: [defaults, prjquota] (4)
with_mount_unit: true
1 | 要分区的磁盘的存储设备名称。 |
2 | 向引导磁盘添加数据分区时,建议最小值为 25000 兆字节。根文件系统会自动调整大小以填充所有可用空间,直至指定的偏移量。如果未指定值,或指定的值小于建议的最小值,则生成的根文件系统将太小,并且以后重新安装 RHCOS 可能会覆盖数据分区的开头。 |
3 | 数据分区的大小(以兆字节为单位)。 |
4 | 必须为用于容器存储的文件系统启用 `prjquota` 挂载选项。 |
创建单独的 `/var` 分区时,如果不同实例类型的设备名称不同,则不能对工作节点使用不同的实例类型。 |
从 Butane 配置文件创建清单并将其保存到 `clusterconfig/openshift` 目录。例如,运行以下命令:
$ butane $HOME/clusterconfig/98-var-partition.bu -o $HOME/clusterconfig/openshift/98-var-partition.yaml
再次运行 `openshift-install` 以从 `manifest` 和 `openshift` 子目录中的一组文件创建 Ignition 配置文件。
$ openshift-install create ignition-configs --dir $HOME/clusterconfig
$ ls $HOME/clusterconfig/
auth bootstrap.ign master.ign metadata.json worker.ign
现在,您可以将 Ignition 配置文件作为输入提供给 vSphere 安装过程,以安装 Red Hat Enterprise Linux CoreOS (RHCOS) 系统。
在集群节点首次启动到已安装到磁盘的持久性 RHCOS 环境后,OpenShift Container Platform 引导过程开始。通过 Ignition 配置文件提供配置信息用于初始化引导过程并在机器上安装 OpenShift Container Platform。您必须等待引导过程完成。
您已创建集群的 Ignition 配置文件。
您已配置合适的网络、DNS 和负载均衡基础设施。
您已获得安装程序并为集群生成了 Ignition 配置文件。
您已在集群机器上安装 RHCOS 并提供了 OpenShift Container Platform 安装程序生成的 Ignition 配置文件。
监控引导过程
$ ./openshift-install --dir <installation_directory> wait-for bootstrap-complete \ (1)
--log-level=info (2)
1 | 对于<installation_directory> ,请指定您存储安装文件的目录的路径。 |
2 | 要查看不同的安装详细信息,请指定 `warn`、`debug` 或 `error` 来代替 `info`。 |
INFO Waiting up to 30m0s for the Kubernetes API at https://api.test.example.com:6443...
INFO API v1.30.3 up
INFO Waiting up to 30m0s for bootstrapping to complete...
INFO It is now safe to remove the bootstrap resources
当 Kubernetes API 服务器发出信号表明它已在控制平面机器上引导时,该命令将成功。
引导过程完成后,从负载均衡器中移除引导机器。
此时必须从负载均衡器中移除引导机器。您也可以移除或重新格式化引导机器本身。 |
您可以通过导出集群kubeconfig
文件以默认系统用户的身份登录到您的集群。kubeconfig
文件包含集群信息,CLI 使用这些信息将客户端连接到正确的集群和API服务器。该文件特定于某个集群,并在安装OpenShift Container Platform期间创建。
您已部署了一个OpenShift Container Platform集群。
您已安装oc
CLI。
导出kubeadmin
凭据
$ export KUBECONFIG=<installation_directory>/auth/kubeconfig (1)
1 | 对于<installation_directory> ,请指定您存储安装文件的目录的路径。 |
验证您可以使用导出的配置成功运行oc
命令
$ oc whoami
system:admin
将机器添加到集群时,会为每个添加的机器生成两个挂起的证书签名请求 (CSR)。您必须确认这些 CSR 已获批准,或者必要时自行批准它们。必须先批准客户端请求,然后再批准服务器请求。
您已将机器添加到集群。
确认集群识别这些机器
$ oc get nodes
NAME STATUS ROLES AGE VERSION
master-0 Ready master 63m v1.30.3
master-1 Ready master 63m v1.30.3
master-2 Ready master 64m v1.30.3
输出列出了您创建的所有机器。
在批准某些 CSR 之前,上述输出可能不包含计算节点(也称为工作节点)。 |
查看挂起的 CSR,并确保您看到为添加到集群的每台机器显示的客户端请求状态为“Pending”(挂起)或“Approved”(已批准)。
$ oc get csr
NAME AGE REQUESTOR CONDITION
csr-8b2br 15m system:serviceaccount:openshift-machine-config-operator:node-bootstrapper Pending
csr-8vnps 15m system:serviceaccount:openshift-machine-config-operator:node-bootstrapper Pending
...
在此示例中,两台机器正在加入集群。您可能会在列表中看到更多已批准的 CSR。
如果 CSR 未获批准,在您添加的所有机器的挂起 CSR 状态均为“Pending”(挂起)后,请批准集群机器的 CSR。
由于 CSR 会自动轮换,因此请在将机器添加到集群后一小时内批准您的 CSR。如果您在一小时内未批准它们,证书将轮换,并且每个节点将存在两个以上的证书。您必须批准所有这些证书。批准客户端 CSR 后,Kubelet 会为服务证书创建辅助 CSR,这需要手动批准。然后,如果 Kubelet 请求具有相同参数的新证书,则 |
对于在未启用机器 API 的平台(例如裸机和其他用户预配的基础设施)上运行的集群,您必须实现一种自动批准 kubelet 服务证书请求 (CSR) 的方法。如果未批准请求,则 |
要分别批准它们,请对每个有效的 CSR 运行以下命令
$ oc adm certificate approve <csr_name> (1)
1 | <csr_name> 是当前 CSR 列表中 CSR 的名称。 |
要批准所有挂起的 CSR,请运行以下命令
$ oc get csr -o go-template='{{range .items}}{{if not .status}}{{.metadata.name}}{{"\n"}}{{end}}{{end}}' | xargs --no-run-if-empty oc adm certificate approve
在批准某些 CSR 之前,某些 Operator 可能无法使用。 |
现在您的客户端请求已获批准,您必须查看添加到集群的每台机器的服务器请求。
$ oc get csr
NAME AGE REQUESTOR CONDITION
csr-bfd72 5m26s system:node:ip-10-0-50-126.us-east-2.compute.internal Pending
csr-c57lv 5m26s system:node:ip-10-0-95-157.us-east-2.compute.internal Pending
...
如果其余 CSR 未获批准且状态为“Pending”(挂起),请批准集群机器的 CSR。
要分别批准它们,请对每个有效的 CSR 运行以下命令
$ oc adm certificate approve <csr_name> (1)
1 | <csr_name> 是当前 CSR 列表中 CSR 的名称。 |
要批准所有挂起的 CSR,请运行以下命令
$ oc get csr -o go-template='{{range .items}}{{if not .status}}{{.metadata.name}}{{"\n"}}{{end}}{{end}}' | xargs oc adm certificate approve
批准所有客户端和服务器 CSR 后,机器将具有“Ready”(就绪)状态。通过运行以下命令进行验证
$ oc get nodes
NAME STATUS ROLES AGE VERSION
master-0 Ready master 73m v1.30.3
master-1 Ready master 73m v1.30.3
master-2 Ready master 74m v1.30.3
worker-0 Ready worker 11m v1.30.3
worker-1 Ready worker 11m v1.30.3
批准服务器 CSR 后,机器可能需要几分钟才能过渡到“Ready”(就绪)状态。 |
控制平面初始化后,您必须立即配置某些 Operator,以便它们全部可用。
您的控制平面已初始化。
监视集群组件上线
$ watch -n5 oc get clusteroperators
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE
authentication 4.17.0 True False False 19m
baremetal 4.17.0 True False False 37m
cloud-credential 4.17.0 True False False 40m
cluster-autoscaler 4.17.0 True False False 37m
config-operator 4.17.0 True False False 38m
console 4.17.0 True False False 26m
csi-snapshot-controller 4.17.0 True False False 37m
dns 4.17.0 True False False 37m
etcd 4.17.0 True False False 36m
image-registry 4.17.0 True False False 31m
ingress 4.17.0 True False False 30m
insights 4.17.0 True False False 31m
kube-apiserver 4.17.0 True False False 26m
kube-controller-manager 4.17.0 True False False 36m
kube-scheduler 4.17.0 True False False 36m
kube-storage-version-migrator 4.17.0 True False False 37m
machine-api 4.17.0 True False False 29m
machine-approver 4.17.0 True False False 37m
machine-config 4.17.0 True False False 36m
marketplace 4.17.0 True False False 37m
monitoring 4.17.0 True False False 29m
network 4.17.0 True False False 38m
node-tuning 4.17.0 True False False 37m
openshift-apiserver 4.17.0 True False False 32m
openshift-controller-manager 4.17.0 True False False 30m
openshift-samples 4.17.0 True False False 32m
operator-lifecycle-manager 4.17.0 True False False 37m
operator-lifecycle-manager-catalog 4.17.0 True False False 37m
operator-lifecycle-manager-packageserver 4.17.0 True False False 32m
service-ca 4.17.0 True False False 38m
storage 4.17.0 True False False 37m
配置不可用的 Operator。
在OpenShift Container Platform安装期间,默认情况下,OperatorHub 会配置从Red Hat和社区项目提供的內容进行源代码的Operator目录。在受限网络环境中,您必须以集群管理员身份禁用默认目录。
通过将disableAllDefaultSources: true
添加到OperatorHub
对象来禁用默认目录的源。
$ oc patch OperatorHub cluster --type json \
-p '[{"op": "add", "path": "/spec/disableAllDefaultSources", "value": true}]'
或者,您可以使用 Web 控制台来管理目录源。在**管理** → **集群设置** → **配置** → **OperatorHub**页面上,单击**源**选项卡,您可以在其中创建、更新、删除、禁用和启用各个源。 |
对于不提供默认存储的平台,镜像注册表 Operator 最初不可用。安装后,您必须配置注册表以使用存储,以便使注册表 Operator 可用。
显示了配置持久卷的说明,这是生产集群所需的。在适用的情况下,将显示将空目录配置为存储位置的说明,这仅适用于非生产集群。
提供了其他说明,用于通过在升级期间使用Recreate
滚动策略来允许镜像注册表使用块存储类型。
作为集群管理员,安装后,您必须配置注册表以使用存储。
集群管理员权限。
VMware vSphere 上的集群。
为您的集群预配的持久性存储,例如 Red Hat OpenShift Data Foundation。
当您只有一个副本时,OpenShift Container Platform 支持镜像注册表存储的 |
必须具有“100Gi”容量。
测试表明使用 RHEL 上的 NFS 服务器作为核心服务的存储后端存在问题。这包括 OpenShift Container Registry 和 Quay、用于监控存储的 Prometheus 以及用于日志存储的 Elasticsearch。因此,不建议使用 RHEL NFS 来支持核心服务使用的 PV。 市场上的其他 NFS 实现可能没有这些问题。请联系各个 NFS 实现供应商,以获取有关针对这些 OpenShift Container Platform 核心组件可能完成的任何测试的更多信息。 |
要配置注册表以使用存储,请更改configs.imageregistry/cluster
资源中的spec.storage.pvc
。
使用共享存储时,请查看您的安全设置以防止外部访问。 |
验证您没有注册表 pod
$ oc get pod -n openshift-image-registry -l docker-registry=default
No resourses found in openshift-image-registry namespace
如果您的输出中确实有注册表 pod,则无需继续此过程。 |
检查注册表配置
$ oc edit configs.imageregistry.operator.openshift.io
storage:
pvc:
claim: (1)
1 | 留空claim 字段可自动创建image-registry-storage 持久卷声明 (PVC)。PVC 基于默认存储类生成。但是,请注意,默认存储类可能提供 ReadWriteOnce (RWO) 卷,例如 RADOS 块设备 (RBD),这在您复制到多个副本时可能会导致问题。 |
检查clusteroperator
状态
$ oc get clusteroperator image-registry
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE
image-registry 4.7 True False False 6h50m
您必须为镜像注册表操作符配置存储。对于非生产集群,您可以将镜像注册表设置为一个空目录。如果您这样做,如果重新启动注册表,所有镜像都将丢失。
将镜像注册表存储设置为空目录
$ oc patch configs.imageregistry.operator.openshift.io cluster --type merge --patch '{"spec":{"storage":{"emptyDir":{}}}}'
仅为非生产集群配置此选项。 |
如果您在镜像注册表操作符初始化其组件之前运行此命令,则oc patch
命令将失败并显示以下错误
Error from server (NotFound): configs.imageregistry.operator.openshift.io "cluster" not found
等待几分钟,然后再次运行命令。
为了允许镜像注册表在升级期间使用块存储类型(例如 vSphere 虚拟机磁盘 (VMDK)),作为集群管理员,您可以使用Recreate
滚动策略。
块存储卷受支持,但不建议在生产集群中与镜像注册表一起使用。注册表在块存储上配置的安装不是高可用的,因为注册表不能拥有多个副本。 |
输入以下命令将镜像注册表存储设置为块存储类型,修补注册表以使其使用Recreate
滚动策略,并仅运行1
个副本
$ oc patch config.imageregistry.operator.openshift.io/cluster --type=merge -p '{"spec":{"rolloutStrategy":"Recreate","replicas":1}}'
为块存储设备预配 PV,并为此卷创建 PVC。请求的块卷使用 ReadWriteOnce (RWO) 访问模式。
创建一个包含以下内容的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 | 持久卷声明的大小。 |
输入以下命令从文件创建PersistentVolumeClaim
对象
$ oc create -f pvc.yaml -n openshift-image-registry
输入以下命令编辑注册表配置,使其引用正确的 PVC
$ oc edit config.imageregistry.operator.openshift.io -o yaml
storage:
pvc:
claim: (1)
1 | 通过创建自定义 PVC,您可以将claim 字段留空,以便默认自动创建image-registry-storage PVC。 |
有关配置注册表存储以使其引用正确的 PVC 的说明,请参阅 为 vSphere 配置注册表。
完成操作符配置后,您可以在您提供的基础设施上完成集群安装。
您的控制平面已初始化。
您已完成初始操作符配置。
使用以下命令确认所有集群组件都在线
$ watch -n5 oc get clusteroperators
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE
authentication 4.17.0 True False False 19m
baremetal 4.17.0 True False False 37m
cloud-credential 4.17.0 True False False 40m
cluster-autoscaler 4.17.0 True False False 37m
config-operator 4.17.0 True False False 38m
console 4.17.0 True False False 26m
csi-snapshot-controller 4.17.0 True False False 37m
dns 4.17.0 True False False 37m
etcd 4.17.0 True False False 36m
image-registry 4.17.0 True False False 31m
ingress 4.17.0 True False False 30m
insights 4.17.0 True False False 31m
kube-apiserver 4.17.0 True False False 26m
kube-controller-manager 4.17.0 True False False 36m
kube-scheduler 4.17.0 True False False 36m
kube-storage-version-migrator 4.17.0 True False False 37m
machine-api 4.17.0 True False False 29m
machine-approver 4.17.0 True False False 37m
machine-config 4.17.0 True False False 36m
marketplace 4.17.0 True False False 37m
monitoring 4.17.0 True False False 29m
network 4.17.0 True False False 38m
node-tuning 4.17.0 True False False 37m
openshift-apiserver 4.17.0 True False False 32m
openshift-controller-manager 4.17.0 True False False 30m
openshift-samples 4.17.0 True False False 32m
operator-lifecycle-manager 4.17.0 True False False 37m
operator-lifecycle-manager-catalog 4.17.0 True False False 37m
operator-lifecycle-manager-packageserver 4.17.0 True False False 32m
service-ca 4.17.0 True False False 38m
storage 4.17.0 True False False 37m
或者,以下命令会在所有集群可用时通知您。它还会检索并显示凭据
$ ./openshift-install --dir <installation_directory> wait-for install-complete (1)
1 | 对于<installation_directory> ,请指定您存储安装文件的目录的路径。 |
INFO Waiting up to 30m0s for the cluster to initialize...
当集群版本操作符完成从 Kubernetes API 服务器部署 OpenShift Container Platform 集群时,命令成功。
|
确认 Kubernetes API 服务器正在与 Pod 通信。
要查看所有 Pod 的列表,请使用以下命令
$ oc get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
openshift-apiserver-operator openshift-apiserver-operator-85cb746d55-zqhs8 1/1 Running 1 9m
openshift-apiserver apiserver-67b9g 1/1 Running 0 3m
openshift-apiserver apiserver-ljcmx 1/1 Running 0 1m
openshift-apiserver apiserver-z25h4 1/1 Running 0 2m
openshift-authentication-operator authentication-operator-69d5d8bf84-vh2n8 1/1 Running 0 5m
...
使用以下命令查看上一个命令输出中列出的 Pod 的日志
$ oc logs <pod_name> -n <namespace> (1)
1 | 指定 Pod 名称和命名空间,如上一个命令的输出所示。 |
如果显示 Pod 日志,则 Kubernetes API 服务器可以与集群机器通信。
对于使用光纤通道协议 (FCP) 的安装,需要额外步骤来启用多路径。请勿在安装期间启用多路径。
有关更多信息,请参阅安装后机器配置任务文档中的“在 RHCOS 上使用内核参数启用多路径”。
在 集群注册 页面上注册您的集群。
完成集群安装后,您可以按照 向 vSphere 添加计算机器 的说明添加额外的计算机器。
可以配置 vSphere 分布式资源调度程序 (DRS) 反亲和规则以支持 OpenShift Container Platform 控制平面节点的更高可用性。反亲和规则确保 OpenShift Container Platform 控制平面节点的 vSphere 虚拟机不会调度到同一个 vSphere 主机。
|
通过运行以下命令创建反亲和规则
$ govc cluster.rule.create \
-name openshift4-control-plane-group \
-dc MyDatacenter -cluster MyCluster \
-enable \
-anti-affinity master-0 master-1 master-2
创建规则后,您的控制平面节点将由 vSphere 自动迁移,以便它们不会在同一主机上运行。vSphere 调和新规则时,这可能需要一些时间。成功完成命令在以下过程中显示。
迁移会自动发生,并且在迁移完成之前可能会导致短暂的 OpenShift API 中断或延迟。 |
如果控制平面虚拟机名称更改或迁移到新的 vSphere 集群,则需要手动更新 vSphere DRS 反亲和规则。
通过运行以下命令删除任何现有的 DRS 反亲和规则
$ govc cluster.rule.remove \
-name openshift4-control-plane-group \
-dc MyDatacenter -cluster MyCluster
[13-10-22 09:33:24] Reconfigure /MyDatacenter/host/MyCluster...OK
通过运行以下命令使用更新的名称重新创建规则
$ govc cluster.rule.create \
-name openshift4-control-plane-group \
-dc MyDatacenter -cluster MyOtherCluster \
-enable \
-anti-affinity master-0 master-1 master-2
在 OpenShift Container Platform 4.17 中,默认运行的遥测服务用于提供有关集群运行状况和更新成功的指标,需要互联网访问。如果您的集群连接到互联网,则遥测会自动运行,并且您的集群会注册到 OpenShift 集群管理器。
确认您的 OpenShift 集群管理器 库存正确后,无论是通过遥测自动维护还是手动使用 OpenShift 集群管理器维护,请 使用订阅监控 来跟踪您在帐户或多集群级别上的 OpenShift Container Platform 订阅。
有关遥测服务的更多信息,请参阅 关于远程运行状况监控
如果您使用的镜像注册表具有受信任的 CA 证书,请通过配置额外的信任存储将其添加到集群。
如有必要,您可以选择退出远程健康报告。
可选:查看 vSphere 问题检测器操作员的事件,以确定集群是否存在权限或存储配置问题。
可选:如果您创建了加密虚拟机,请创建一个加密存储类。