This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.6.12. 在带有用户置备的受限网络中的 GCP 上安装集群
在 OpenShift Container Platform 版本 4.8 中,您可以使用您提供的基础架构和安装发行内容的内部镜像在 Google Cloud Platform(GCP)上安装集群。
虽然您可以使用镜像安装发行内容安装 OpenShift Container Platform 集群,但您的集群仍需要访问互联网才能使用 GCP API。
此处概述了进行用户提供基础架构安装的步骤。提供的几个 Deployment Manager 模板可协助完成这些步骤,也可帮助您自行建模。您还可以自由选择通过其他方法创建所需的资源。
进行用户置备的基础架构安装的步骤仅作为示例。使用您提供的基础架构安装集群需要了解云供应商和 OpenShift Container Platform 安装过程。提供的几个 Deployment Manager 模板可帮助完成这些步骤,或者帮助您自行建模。您也可以自由选择通过其他方法创建所需的资源;模板仅作示例之用。
6.12.1. 先决条件 复制链接链接已复制到粘贴板!
- 您可以参阅有关 OpenShift Container Platform 安装和更新流程的详细信息。
- 您可以阅读有关选择集群安装方法的文档,并为用户准备它。
您在镜像主机上创建了一个镜像 registry,并获取您的 OpenShift Container Platform 版本的
imageContentSources数据。重要由于安装介质位于堡垒主机上,因此请使用该计算机完成所有安装步骤。
-
如果使用防火墙,则必须将其配置为允许集群需要访问的站点。虽然您可能需要授予更多站点的访问权限,但您必须授予对
*.googleapis.com和accounts.google.com的访问权限。 -
如果环境中无法访问云身份和访问管理(IAM)API,或者不想将管理员级别的凭证 secret 存储在
kube-system命名空间中,您可以手动创建和维护 IAM 凭证。
6.12.2. 关于在受限网络中安装 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 4.8 中,可以执行不需要有效的互联网连接来获取软件组件的安装。受限网络安装可使用安装程序置备的基础架构或用户置备的基础架构完成,具体取决于您要安装集群的云平台。
如果选择在云平台中执行受限网络安装,仍然需要访问其云 API。有些云功能,比如 Amazon Web Service 的 Route 53 DNS 和 IAM 服务,需要访问互联网。根据您的网络,在裸机硬件或 VMware vSphere 上安装时可能需要较少的互联网访问。
要完成受限网络安装,您必须创建一个 registry,镜像 OpenShift Container Platform registry 的内容并包含其安装介质。您可以在堡垒主机上创建此镜像,该主机可同时访问互联网和您的封闭网络,也可以使用满足您的限制条件的其他方法。
由于用户置备安装配置的复杂性,在尝试使用用户置备的基础架构受限网络安装前,请考虑完成标准用户置备的基础架构安装。通过完成此测试安装,您可以更轻松地隔离和排查您在受限网络中安装时可能出现的问题。
6.12.2.1. 其他限制 复制链接链接已复制到粘贴板!
受限网络中的集群还有以下额外限制:
-
ClusterVersion状态包含一个Unable to retrieve available updates错误。 - 默认情况下,您无法使用 Developer Catalog 的内容,因为您无法访问所需的镜像流标签。
6.12.3. OpenShift Container Platform 的互联网访问 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 4.8 中,您需要访问互联网来获得用来安装集群的镜像。
您必须具有以下互联网访问权限:
- 访问 OpenShift Cluster Manager 以下载安装程序并执行订阅管理。如果集群可以访问互联网,并且没有禁用 Telemetry,该服务会自动授权您的集群。
- 访问 Quay.io,以获取安装集群所需的软件包。
- 获取执行集群更新所需的软件包。
如果您的集群无法直接访问互联网,则可以在置备的某些类基础架构上执行受限网络安装。在此过程中,您要下载所需的内容,并使用它在镜像 registry(mirror registry) 中填充安装集群并生成安装程序所需的软件包。对于某些安装类型,集群要安装到的环境不需要访问互联网。在更新集群之前,要更新 registry 镜像系统中的内容。
6.12.4. 配置 GCP 项目 复制链接链接已复制到粘贴板!
在安装 OpenShift Container Platform 之前,您必须配置 Google Cloud Platform (GCP) 项目来托管它。
6.12.4.1. 创建一个 GCP 项目 复制链接链接已复制到粘贴板!
为了安装 OpenShift Container Platform,您必须在您的 Google Cloud Platform (GCP) 账户中创建一个项目来托管它。
流程
创建一个项目来托管您的 OpenShift Container Platform 集群。请参阅 GCP 文档中的创建和管理项目。
重要如果您使用安装程序置备的基础架构,您的 GCP 项目必须使用 Premium Network Service Tier。使用安装程序安装的集群不支持 Standard Network Service Tier。安装程序为
api-int.<cluster_name>.<base_domain>URL 配置内部负载均衡 ; 内部负载均衡需要 Premium Tier。
6.12.4.2. 在 GCP 中启用 API 服务 复制链接链接已复制到粘贴板!
Google Cloud Platform (GCP) 项目需要访问一些 API 服务来完成 OpenShift Container Platform 安装。
先决条件
- 创建了用于托管集群的项目。
流程
在托管集群的项目中启用如下所需的 API 服务。请参阅 GCP 文档中的启用服务。
Expand 表 6.42. 所需的 API 服务 API 服务 控制台服务名称 compute Engine API
compute.googleapis.comGoogle Cloud API
cloudapis.googleapis.comCloud Resource Manager API
cloudresourcemanager.googleapis.comGoogle DNS API
dns.googleapis.comIAM Service Account Credentials API
iamcredentials.googleapis.comIdentity and Access Management (IAM) API
iam.googleapis.comService Management API
servicemanagement.googleapis.comService Usage API
serviceusage.googleapis.comGoogle Cloud Storage JSON API
storage-api.googleapis.comCloud Storage
storage-component.googleapis.com
6.12.4.3. 为 GCP 配置 DNS 复制链接链接已复制到粘贴板!
要安装 OpenShift Container Platform,您使用的 Google Cloud Platform (GCP) 帐户必须在托管 OpenShift Container Platform 集群的同一项目中有一个专用的公共托管区。此区域必须对域具有权威。DNS 服务为集群外部连接提供集群 DNS 解析和名称查询。
流程
标识您的域或子域,以及注册商(registrar)。您可以转移现有的域和注册商,或通过 GCP 或其他来源获取新的域和注册商。
注意如果您购买新域,则需要时间来传播相关的 DNS 更改。有关通过 Google 购买域的更多信息,请参阅 Google Domains。
在 GCP 项目中为您的域或子域创建一个公共托管区。请参阅 GCP 文档中的创建公共区。
使用合适的根域(如
openshiftcorp.com)或子域(如clusters.openshiftcorp.com)。从托管区记录中提取新的权威名称服务器。请参阅 GCP 文档中的查找您的云 DNS 名称服务器。
您通常有四个名称服务器。
- 更新域所用名称服务器的注册商记录。例如,如果您将域注册到了 Google Domains,请参阅 Google Domains 帮助中的以下主题:如何切换到自定义名称服务器。
- 如果您将根域迁移到 Google Cloud DNS,请迁移您的 DNS 记录。请参阅 GCP 文档中的 Migrating to Cloud DNS 。
- 如果您使用子域,请按照您公司的流程将其委派记录添加到父域。这个过程可能包括对您公司的 IT 部门或控制您公司的根域和 DNS 服务的部门提出请求。
6.12.4.4. GCP 帐户限值 复制链接链接已复制到粘贴板!
OpenShift Container Platform 集群使用诸多 Google Cloud Platform (GCP) 组件,默认的配额不会影响您安装默认 OpenShift Container Platform 集群的能力。
默认集群中包含三台计算机器和三台 control plane 机器,使用了以下资源。请注意,一些资源只在 bootstrap 过程中需要,会在集群部署后删除。
| 服务 | 组件 | 位置 | 所需的资源总数 | bootstrap 后删除的资源 |
|---|---|---|---|---|
| 服务帐户 | IAM | 全局 | 5 | 0 |
| 防火墙规则 | 网络 | 全局 | 11 | 1 |
| 转发规则 | Compute | 全局 | 2 | 0 |
| 健康检查 | Compute | 全局 | 2 | 0 |
| 镜像 | Compute | 全局 | 1 | 0 |
| 网络 | 网络 | 全局 | 1 | 0 |
| 路由器 | 网络 | 全局 | 1 | 0 |
| Routes | 网络 | 全局 | 2 | 0 |
| 子网 | Compute | 全局 | 2 | 0 |
| 目标池 | 网络 | 全局 | 2 | 0 |
如果在安装过程中存在任何配额不足的情况,安装程序会显示一个错误信息,包括超过哪个配额,以及相关的区域。
请考虑您的集群的实际大小、预定的集群增长以及来自与您的帐户关联的其它集群的使用情况。CPU 、静态 IP 地址和持久性磁盘 SSD (storage) 配额是最可能不足的。
如果您计划在以下区域之一部署集群,您将超过最大存储配额,并可能会超过 CPU 配额限制:
-
asia-east2 -
asia-northeast2 -
asia-south1 -
domain-southeast1 -
europe-north1 -
europe-west2 -
europe-west3 -
europe-west6 -
northamerica-northeast1 -
southamerica-east1 -
us-west2
您可以从 GCP 控制台增加资源配额,但可能需要提交一个支持问题单。务必提前规划集群大小,以便在安装 OpenShift Container Platform 集群前有足够的时间来等待支持问题单被处理。
6.12.4.5. 在 GCP 中创建服务帐户 复制链接链接已复制到粘贴板!
OpenShift Container Platform 需要一个 Google Cloud Platform (GCP) 服务帐户,用于访问 Google API 中数据的验证和授权。如果您没有包含项目中所需角色的现有 IAM 服务帐户,您必须创建一个。
先决条件
- 创建了用于托管集群的项目。
流程
- 在用于托管 OpenShift Container Platform 集群的项目中,创建一个新服务帐户。请参阅 GCP 文档中的创建服务账户。
为服务帐户授予适当的权限。您可以逐一授予权限,也可以为其分配
Owner角色。请参阅将角色授予特定资源的服务帐户。注意获得所需权限最简单的方法是把服务帐户设置为项目的拥有者(owner),这意味着该服务帐户对项目有完全的控制权。您必须考虑这样设定所带来的的风险是否可以接受。
以 JSON 格式创建服务帐户密钥。请参阅 GCP 文档中的创建服务帐户密钥。
创建集群时需要该服务帐户密钥。
6.12.4.5.1. 所需的 GCP 权限 复制链接链接已复制到粘贴板!
如果将 Owner 角色附加到您创建的服务帐户,您向该服务帐户授予所有的权限,包括安装 OpenShift Container Platform 所需的权限。要部署 OpenShift Container Platform 集群,服务帐户需要以下权限:如果您将集群部署到现有的 VPC 中,则服务帐户不需要某些网络权限,如下表所示:
安装程序所需的角色
- Compute Admin
- Security Admin
- Service Account Admin
- Service Account User
- Storage Admin
安装过程中创建网络资源所需的角色
- DNS Administrator
用户置备的 GCP 基础架构所需的角色
- Deployment Manager Editor
- Service Account Key Admin
可选角色
若要使集群为其 Operator 创建新的有限凭证,请添加以下角色:
- Service Account Key Admin
以下角色将应用到 control plane 或计算机器使用的服务帐户:
| 帐户 | 角色 |
|---|---|
| Control Plane |
|
|
| |
|
| |
|
| |
|
| |
| Compute |
|
|
|
6.12.4.6. 支持的 GCP 区域 复制链接链接已复制到粘贴板!
您可以将 OpenShift Container Platform 集群部署到下列 Google Cloud Platform (GCP) 区域:
-
asia-east1(Changhua County, Taiwan) -
asia-east2(Hong Kong) -
asia-northeast1(Tokyo, Japan) -
asia-northeast2(Osaka, Japan) -
asia-northeast3(Seoul, South Korea) -
asia-south1(Mumbai, India) -
asia-southeast1(Jurong West, Singapore) -
asia-southeast2(Jakarta, India) -
australia-southeast1(Sydney, Australia) -
europe-central2(Warsaw, world) -
europe-north1(Hamina, Finland) -
europe-west1(St. Ghislain, Belgium) -
europe-west2(London, England, UK) -
europe-west3(Frankfurt, Germany) -
europe-west4(Eemshaven, Netherlands) -
europe-west6(Zürich, Switzerland) -
northamerica-northeast1(Montréal, Québec, Canada) -
southamerica-east1(São Paulo, Brazil) -
us-central1(Council Bluffs, Iowa, USA) -
us-east1(Moncks Corner, South Carolina, USA) -
us-east4(Ashburn, Northern Virginia, USA) -
us-west1(The Dalles, Oregon, USA) -
us-west2(Los Angeles, California, USA) -
us-west3(Salt Lake City, Utah, USA) -
us-west4(Las Vegas, Nevada, USA)
6.12.4.7. 为 GCP 安装和配置 CLI 工具 复制链接链接已复制到粘贴板!
要使用用户置备的基础架构在 Google Cloud Platform (GCP) 上安装 OpenShift Container Platform,您必须为 GCP 安装和配置 CLI 工具。
先决条件
- 创建了用于托管集群的项目。
- 您创建了服务帐户,并授予其所需的权限。
流程
在
$PATH中安装以下二进制文件:-
gcloud -
gsutil
请参阅 GCP 文档中的安装最新 Cloud SDK 版本。
-
使用
gcloud工具及您配置的服务帐户进行身份验证。请参阅 GCP 文档中的使用服务帐户授权。
6.12.5. 为 GCP 创建安装文件 复制链接链接已复制到粘贴板!
要使用用户置备的基础架构在 Google Cloud Platform (GCP) 上安装 OpenShift Container Platform,您必须生成并修改安装程序部署集群所需的文件,以便集群只创建要使用的机器。您要生成并自定义 install-config.yaml 文件、Kubernetes 清单和 Ignition 配置文件。您也可以选择在安装准备阶段首先设置独立的 var 分区。
6.12.5.1. 可选:创建独立 /var 分区 复制链接链接已复制到粘贴板!
建议安装程序将 OpenShift Container Platform 的磁盘分区保留给安装程序。然而,在有些情况下您可能需要在文件系统的一部分中创建独立分区。
OpenShift Container Platform 支持添加单个分区来将存储附加到 /var 分区或 /var 的子目录。例如:
-
/var/lib/containers:保存镜像相关的内容,随着更多镜像和容器添加到系统中,它所占用的存储会增加。 -
/var/lib/etcd:保存您可能希望保持独立的数据,比如 etcd 存储的性能优化。 -
/var:保存您希望独立保留的数据,用于特定目的(如审计)。
单独存储 /var 目录的内容可方便地根据需要对区域扩展存储,并可以在以后重新安装 OpenShift Container Platform 时保持该数据地完整。使用这个方法,您不必再次拉取所有容器,在更新系统时也无法复制大量日志文件。
因为 /var 在进行一个全新的 Red Hat Enterprise Linux CoreOS(RHCOS)安装前必需存在,所以这个流程会在 OpenShift Container Platform 安装过程的 openshift-install 准备阶段插入的机器配置清单来设置独立的 /var 分区。
如果按照以下步骤在此流程中创建独立 /var 分区,则不需要再次创建 Kubernetes 清单和 Ignition 配置文件,如本节所述。
流程
创建存放 OpenShift Container Platform 安装文件的目录:
mkdir $HOME/clusterconfig
$ mkdir $HOME/clusterconfigCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行
openshift-install在manifest和openshift子目录中创建一组文件。在出现提示时回答系统问题:openshift-install create manifests --dir $HOME/clusterconfig
$ openshift-install create manifests --dir $HOME/clusterconfigCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
? SSH Public Key ... INFO Credentials loaded from the "myprofile" profile in file "/home/myuser/.aws/credentials" INFO Consuming Install Config from target directory INFO Manifests created in: $HOME/clusterconfig/manifests and $HOME/clusterconfig/openshift
? SSH Public Key ... INFO Credentials loaded from the "myprofile" profile in file "/home/myuser/.aws/credentials" INFO Consuming Install Config from target directory INFO Manifests created in: $HOME/clusterconfig/manifests and $HOME/clusterconfig/openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:确认安装程序在
clusterconfig/openshift目录中创建了清单:ls $HOME/clusterconfig/openshift/
$ ls $HOME/clusterconfig/openshift/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
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 ...
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 ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建用于配置额外分区的 Butane 配置。例如,将文件命名为
$HOME/clusterconfig/98-var-partition.bu,将磁盘设备名称改为worker系统上存储设备的名称,并根据情况设置存储大小。这个示例将/var目录放在一个单独的分区中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在创建独立
/var分区时,如果不同的实例类型没有相同的设备名称,则无法将不同的实例类型用于 worker 节点。从 Butane 配置创建一个清单,并将它保存到
clusterconfig/openshift目录中。例如,运行以下命令:butane $HOME/clusterconfig/98-var-partition.bu -o $HOME/clusterconfig/openshift/98-var-partition.yaml
$ butane $HOME/clusterconfig/98-var-partition.bu -o $HOME/clusterconfig/openshift/98-var-partition.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 再次运行
openshift-install,从manifest和openshift子目录中的一组文件创建 Ignition 配置:openshift-install create ignition-configs --dir $HOME/clusterconfig ls $HOME/clusterconfig/
$ openshift-install create ignition-configs --dir $HOME/clusterconfig $ ls $HOME/clusterconfig/ auth bootstrap.ign master.ign metadata.json worker.ignCopy to Clipboard Copied! Toggle word wrap Toggle overflow
现在,您可以使用 Ignition 配置文件作为安装程序的输入来安装 Red Hat Enterprise Linux CoreOS(RHCOS)系统。
6.12.5.2. 创建安装配置文件 复制链接链接已复制到粘贴板!
您可以自定义在 Google Cloud Platform (GCP) 上安装的 OpenShift Container Platform 集群。
先决条件
- 获取 OpenShift Container Platform 安装程序以及集群的 pull secret。对于受限网络安装,这些文件位于您的堡垒主机上。
-
具有创建镜像容器镜像仓库(registry)时生成的
imageContentSources值。 - 获取您的镜像 registry 的证书内容。
- 在订阅级别获取服务主体权限。
流程
创建
install-config.yaml文件。更改到包含安装程序的目录,再运行以下命令:
./openshift-install create install-config --dir <installation_directory>
$ ./openshift-install create install-config --dir <installation_directory>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 对于
<installation_directory>,请指定用于保存安装程序所创建的文件的目录名称。
重要指定一个空目录。一些安装信息,如 bootstrap X.509 证书,有较短的过期间隔,因此不要重复使用安装目录。如果要重复使用另一个集群安装中的个别文件,可以将其复制到您的目录中。但是,一些安装数据的文件名可能会在发行版本之间有所改变。从 OpenShift Container Platform 老版本中复制安装文件时要格外小心。
在提示符处,提供您的云的配置详情:
可选:选择用来访问集群机器的 SSH 密钥。
注意对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定
ssh-agent进程使用的 SSH 密钥。- 选择 gcp 作为目标平台。
- 如果您没有为计算机上的 GCP 帐户配置服务帐户密钥,则必须从 GCP 获取,并粘贴文件的内容或输入文件的绝对路径。
- 选择要在其中置备集群的项目 ID。默认值由您配置的服务帐户指定。
- 选择要在其中部署集群的区域。
- 选择集群要部署到的基域。基域与您为集群创建的公共 DNS 区对应。
- 为集群输入一个描述性名称。
- 粘贴 Red Hat OpenShift Cluster Manager 中的 pull secret。
编辑
install-config.yaml文件,以提供在受限网络中安装所需的其他信息。更新
pullSecret值,使其包含 registry 的身份验证信息:pullSecret: '{"auths":{"<mirror_host_name>:5000": {"auth": "<credentials>","email": "you@example.com"}}}'pullSecret: '{"auths":{"<mirror_host_name>:5000": {"auth": "<credentials>","email": "you@example.com"}}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于
<mirror_host_name>,请指定您在镜像 registry 证书中指定的 registry 域名;对于<credentials>,请指定您的镜像 registry 的 base64 编码用户名和密码。添加
additionalTrustBundle参数和值。additionalTrustBundle: | -----BEGIN CERTIFICATE----- ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ -----END CERTIFICATE-----
additionalTrustBundle: | -----BEGIN CERTIFICATE----- ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ -----END CERTIFICATE-----Copy to Clipboard Copied! Toggle word wrap Toggle overflow 该值必须是您用于镜像 registry 的证书文件内容,可以是现有的可信证书颁发机构或您为镜像 registry 生成的自签名证书。
定义在父
platform.gcp字段中安装集群的 VPC 的网络和子网:network: <existing_vpc> controlPlaneSubnet: <control_plane_subnet> computeSubnet: <compute_subnet>
network: <existing_vpc> controlPlaneSubnet: <control_plane_subnet> computeSubnet: <compute_subnet>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于
platform.gcp.network,指定现有 Google VPC 的名称。对于platform.gcp.controlPlaneSubnet和platform.gcp.computeSubnet,请分别指定要分别部署 control plane 机器和计算机器的现有子网。添加镜像内容资源,如下例所示:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要完成这些值,请使用您在创建镜像容器镜像仓库(registry)时记录的
imageContentSources。
-
对需要的
install-config.yaml文件做任何其他修改。您可以在安装配置参数部分中找到有关可用参数的更多信息。 备份
install-config.yaml文件,以便用于安装多个集群。重要install-config.yaml文件会在安装过程中消耗掉。如果要重复使用此文件,必须现在备份。
6.12.5.3. 使用自定义机器类型 复制链接链接已复制到粘贴板!
支持使用自定义机器类型来安装 OpenShift Container Platform 集群。
在使用自定义机器类型时请考虑以下几点:
- 与预定义的实例类型类似,自定义机器类型必须满足 control plane 和计算机器的最低资源要求。
自定义机器类型的名称必须遵循以下语法:
custom-<number_of_cpus>-<amount_of_memory_in_mb>例如,
custom-6-20480。
6.12.5.4. 在安装过程中配置集群范围代理 复制链接链接已复制到粘贴板!
生产环境可能会拒绝直接访问互联网,而是提供 HTTP 或 HTTPS 代理。您可以通过在 install-config.yaml 文件中配置代理设置,将新的 OpenShift Container Platform 集群配置为使用代理。
先决条件
-
您有一个现有的
install-config.yaml文件。 您检查了集群需要访问的站点,并决定是否需要绕过代理。默认情况下代理所有集群出口流量,包括对托管云供应商 API 的调用。您需要将站点添加到
Proxy对象的spec.noProxy字段来绕过代理。注意Proxy对象status.noProxy字段使用安装配置中的networking.machineNetwork[].cidr、networking.clusterNetwork[].cidr和networking.serviceNetwork[]字段的值填充。对于在 Amazon Web Services(AWS)、Google Cloud Platform(GCP)、Microsoft Azure 和 Red Hat OpenStack Platform(RHOSP)上安装,
Proxy对象status.noProxy字段也会使用实例元数据端点填充(169.254.169.254)。
流程
编辑
install-config.yaml文件并添加代理设置。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 用于创建集群外 HTTP 连接的代理 URL。URL 必须是
http。 - 2
- 用于创建集群外 HTTPS 连接的代理 URL。
- 3
- 要排除在代理中的目标域名、IP 地址或其他网络 CIDR 的逗号分隔列表。在域前面加
.来仅匹配子域。例如:.y.com匹配x.y.com,但不匹配y.com。使用*绕过所有目的地的代理。 - 4
- 如果提供,安装程序会在
openshift-config 命名空间中生成名为的配置映射来保存额外的 CA 证书。如果您提供user-ca-bundleadditionalTrustBundle和至少一个代理设置,则Proxy对象会被配置为引用trustedCA字段中的user-ca-bundle配置映射。然后,Cluster Network Operator 会创建一个trusted-ca-bundle配置映射,该配置映射将为trustedCA参数指定的内容与 RHCOS 信任捆绑包合并。additionalTrustBundle字段是必需的,除非代理的身份证书由来自 RHCOS 信任捆绑包的颁发机构签名。
注意安装程序不支持代理的
readinessEndpoints字段。- 保存该文件,并在安装 OpenShift Container Platform 时引用。
安装程序会创建一个名为 cluster 的集群范围代理,该代理使用提供的 install-config.yaml 文件中的代理设置。如果没有提供代理设置,仍然会创建一个 cluster Proxy 对象,但它会有一个空 spec。
只支持名为 cluster 的 Proxy 对象,且无法创建额外的代理。
6.12.5.5. 创建 Kubernetes 清单和 Ignition 配置文件 复制链接链接已复制到粘贴板!
由于您必须修改一些集群定义文件并要手动启动集群机器,因此您必须生成 Kubernetes 清单和 Ignition 配置文件,集群需要这两项来配置机器。
安装配置文件转换为 Kubernetes 清单。清单被嵌套到 Ignition 配置文件中,稍后用于配置集群机器。
-
OpenShift Container Platform 安装程序生成的 Ignition 配置文件包含在 24 小时后过期的证书,之后过期证书会在此时进行续订。如果在更新证书前关闭集群,且集群在 24 小时后重启,集群会自动恢复过期的证书。一个例外情况是,您需要手动批准待处理的
node-bootstrapper证书签名请求(CSR)来恢复 kubelet 证书。如需更多信息,请参阅从过期的 control plane 证书中恢复的文档。 - 建议您在生成 12 小时后使用 Ignition 配置文件,因为集群安装后 24 小时证书从 16 小时轮转至 22 小时。通过在 12 小时内使用 Ignition 配置文件,您可以避免在安装过程中运行证书更新时避免安装失败。
先决条件
- 已获得 OpenShift Container Platform 安装程序。对于受限网络安装,这些文件位于您的堡垒主机上。
-
已创建
install-config.yaml安装配置文件。
流程
切换到包含 OpenShift Container Platform 安装程序的目录,并为集群生成 Kubernetes 清单:
./openshift-install create manifests --dir <installation_directory>
$ ./openshift-install create manifests --dir <installation_directory>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 对于
<installation_directory>,请指定含有您创建的install-config.yaml文件的安装目录。
删除定义 control plane 机器的 Kubernetes 清单文件:
rm -f <installation_directory>/openshift/99_openshift-cluster-api_master-machines-*.yaml
$ rm -f <installation_directory>/openshift/99_openshift-cluster-api_master-machines-*.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 通过删除这些文件,您可以防止集群自动生成 control plane 机器。
可选:如果您不希望集群置备计算机器,请删除定义 worker 机器的 Kubernetes 清单文件:
rm -f <installation_directory>/openshift/99_openshift-cluster-api_worker-machineset-*.yaml
$ rm -f <installation_directory>/openshift/99_openshift-cluster-api_worker-machineset-*.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 由于您要自行创建并管理 worker 机器,因此不需要初始化这些机器。
检查
<installation_directory>/manifests/cluster-scheduler-02-config.ymlKubernetes 清单文件中的mastersSchedulable参数是否已设置为false。此设置可防止在 control plane 机器上调度 pod:-
打开
<installation_directory>/manifests/cluster-scheduler-02-config.yml文件。 -
找到
mastersSchedulable参数并确保它被设置为false。 - 保存并退出文件。
-
打开
可选:如果您不希望 Ingress Operator 代表您创建 DNS 记录,请删除
<installation_directory>/manifests/cluster-dns-02-config.ymlDNS 配置文件中的privateZone和publicZone部分:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您这样做,后续步骤中必须手动添加入口 DNS 记录。
要创建 Ignition 配置文件,从包含安装程序的目录运行以下命令:
./openshift-install create ignition-configs --dir <installation_directory>
$ ./openshift-install create ignition-configs --dir <installation_directory>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 对于
<installation_directory>,请指定相同的安装目录。
Ignition 配置文件是为安装目录中的 bootstrap、control plane 和计算节点创建的 Ignition 配置文件。
kubeadmin-password和kubeconfig文件是在./<installation_directory>/auth目录中创建的:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.12.6. 导出常用变量 复制链接链接已复制到粘贴板!
6.12.6.1. 提取基础架构名称 复制链接链接已复制到粘贴板!
Ignition 配置文件包含一个唯一集群标识符,您可以使用它在 Google Cloud Platform (GCP) 中唯一地标识您的集群。基础架构名称还用于在 OpenShift Container Platform 安装过程中定位适当的 GCP 资源。提供的 Deployment Manager 模板包含对此基础架构名称的引用,因此您必须提取它。
先决条件
- 获取 OpenShift Container Platform 安装程序以及集群的 pull secret。
- 已为集群生成 Ignition 配置文件。
-
安装了
jq软件包。
流程
要从 Ignition 配置文件元数据中提取和查看基础架构名称,请运行以下命令:
jq -r .infraID <installation_directory>/metadata.json
$ jq -r .infraID <installation_directory>/metadata.json1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 对于
<installation_directory>,请指定安装文件保存到的目录的路径。
输出示例
openshift-vw9j6
openshift-vw9j61 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 此命令的输出是您的集群名称和随机字符串。
6.12.6.2. 为 Deployment Manager 模板导出常用变量 复制链接链接已复制到粘贴板!
您必须导出与提供的 Deployment Manager 模板搭配使用的一组常用变量,它们有助于在 Google Cloud Platform (GCP) 上完成用户提供基础架构安装。
特定的 Deployment Manager 模板可能还需要其他导出变量,这些变量在相关的程序中详细介绍。
先决条件
- 获取 OpenShift Container Platform 安装程序以及集群的 pull secret。
- 为集群生成 Ignition 配置文件。
-
安装
jq软件包。
流程
导出由提供的 Deployment Manager 模板使用的以下常用变量:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 对于
<installation_directory>,请指定安装文件保存到的目录的路径。
6.12.7. 在 GCP 中创建 VPC 复制链接链接已复制到粘贴板!
您必须在 Google Cloud Platform (GCP) 中创建一个 VPC,供您的 OpenShift Container Platform 集群使用。您可以自定义 VPC 来满足您的要求。创建 VPC 的一种方法是修改提供的 Deployment Manager 模板。
如果不使用提供的 Deployment Manager 模板来创建 GCP 基础架构,您必须检查提供的信息并手动创建基础架构。如果集群没有正确初始化,您可能需要联系红帽支持并提供您的安装日志。
先决条件
- 配置 GCP 帐户。
- 为集群生成 Ignition 配置文件。
流程
-
复制 VPC 的 Deployment Manager 模板一节中的模板,并将它以
01_vpc.py形式保存到计算机上。此模板描述了集群所需的 VPC。 创建
01_vpc.yaml资源定义文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
gcloudCLI 创建部署:gcloud deployment-manager deployments create ${INFRA_ID}-vpc --config 01_vpc.yaml$ gcloud deployment-manager deployments create ${INFRA_ID}-vpc --config 01_vpc.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.12.7.1. VPC 的 Deployment Manager 模板 复制链接链接已复制到粘贴板!
您可以使用以下 Deployment Manager 模板来部署 OpenShift Container Platform 集群所需的 VPC:
例 6.19. 01_VPC.py Deployment Manager 模板
6.12.8. 用户置备的基础架构对网络的要求 复制链接链接已复制到粘贴板!
所有 Red Hat Enterprise Linux CoreOS(RHCOS)机器需要在启动过程中在 initramfs 中配置网络,以获取其 Ignition 配置文件。
6.12.8.1. 通过 DHCP 设置集群节点主机名 复制链接链接已复制到粘贴板!
在 Red Hat Enterprise Linux CoreOS(RHCOS)机器上,主机名通过 NetworkManager 进行设置。默认情况下,机器通过 DHCP 获取其主机名。如果主机名不是由 DHCP 提供,且通过内核参数静态设置,则通过反向 DNS 查找来获取。反向 DNS 查找发生在网络在节点上初始化后,可能需要一些时间来解决。其他系统服务可以在之前启动并检测主机名为 localhost 或类似主机。您可以使用 DHCP 为各个集群节点提供主机名来避免这种情况。
另外,通过 DHCP 设置主机名可以绕过具有 DNS split-horizon 实施的环境中的任何手动 DNS 记录名称配置错误。
6.12.8.2. 网络连接要求 复制链接链接已复制到粘贴板!
您必须配置机器之间的网络连接,以便 OpenShift Container Platform 集群组件进行通信。每台机器都必须能够解析集群中所有其他机器的主机名。
本节详细介绍了所需的端口。
| 协议 | 端口 | 描述 |
|---|---|---|
| ICMP | N/A | 网络可访问性测试 |
| TCP |
| 指标 |
|
|
主机级别的服务,包括端口 | |
|
| Kubernetes 保留的默认端口 | |
|
| openshift-sdn | |
| UDP |
| VXLAN 和 Geneve |
|
| VXLAN 和 Geneve | |
|
|
主机级别的服务,包括端口 | |
|
| IPsec IKE 数据包 | |
|
| IPsec NAT-T 数据包 | |
| TCP/UDP |
| Kubernetes 节点端口 |
| ESP | N/A | IPsec Encapsulating Security Payload(ESP) |
| 协议 | 端口 | 描述 |
|---|---|---|
| TCP |
| Kubernetes API |
| 协议 | 端口 | 描述 |
|---|---|---|
| TCP |
| etcd 服务器和对等端口 |
6.12.9. 在 GCP 中创建负载均衡器 复制链接链接已复制到粘贴板!
您必须在 Google Cloud Platform (GCP) 中配置负载均衡器,供您的 OpenShift Container Platform 集群使用。创建这些组件的一种方法是修改提供的 Deployment Manager 模板。
如果不使用提供的 Deployment Manager 模板来创建 GCP 基础架构,您必须检查提供的信息并手动创建基础架构。如果集群没有正确初始化,您可能需要联系红帽支持并提供您的安装日志。
先决条件
- 配置 GCP 帐户。
- 为集群生成 Ignition 配置文件。
- 在 GCP 中创建和配置 VPC 及相关子网。
流程
-
复制负载均衡器的 Deployment Manager 模板一节中的模板,并将它以
02_lb_int.py形式保存到计算机上。此模板描述了集群所需的负载均衡对象。 -
对于外部集群,还要将本主题的 外部负载均衡器的 Deployment Manager 模板 部分中的模板进行复制,并将它以
02_lb_ext.py形式保存到计算机上。此模板描述了集群所需的外部负载均衡对象。 导出部署模板使用的变量:
导出集群网络位置:
export CLUSTER_NETWORK=(`gcloud compute networks describe ${INFRA_ID}-network --format json | jq -r .selfLink`)$ export CLUSTER_NETWORK=(`gcloud compute networks describe ${INFRA_ID}-network --format json | jq -r .selfLink`)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 导出 control plane 子网位置:
export CONTROL_SUBNET=(`gcloud compute networks subnets describe ${INFRA_ID}-master-subnet --region=${REGION} --format json | jq -r .selfLink`)$ export CONTROL_SUBNET=(`gcloud compute networks subnets describe ${INFRA_ID}-master-subnet --region=${REGION} --format json | jq -r .selfLink`)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 导出集群使用的三个区域(zone):
export ZONE_0=(`gcloud compute regions describe ${REGION} --format=json | jq -r .zones[0] | cut -d "/" -f9`)$ export ZONE_0=(`gcloud compute regions describe ${REGION} --format=json | jq -r .zones[0] | cut -d "/" -f9`)Copy to Clipboard Copied! Toggle word wrap Toggle overflow export ZONE_1=(`gcloud compute regions describe ${REGION} --format=json | jq -r .zones[1] | cut -d "/" -f9`)$ export ZONE_1=(`gcloud compute regions describe ${REGION} --format=json | jq -r .zones[1] | cut -d "/" -f9`)Copy to Clipboard Copied! Toggle word wrap Toggle overflow export ZONE_2=(`gcloud compute regions describe ${REGION} --format=json | jq -r .zones[2] | cut -d "/" -f9`)$ export ZONE_2=(`gcloud compute regions describe ${REGION} --format=json | jq -r .zones[2] | cut -d "/" -f9`)Copy to Clipboard Copied! Toggle word wrap Toggle overflow
创建
02_infra.yaml资源定义文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
gcloudCLI 创建部署:gcloud deployment-manager deployments create ${INFRA_ID}-infra --config 02_infra.yaml$ gcloud deployment-manager deployments create ${INFRA_ID}-infra --config 02_infra.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 导出集群 IP 地址:
export CLUSTER_IP=(`gcloud compute addresses describe ${INFRA_ID}-cluster-ip --region=${REGION} --format json | jq -r .address`)$ export CLUSTER_IP=(`gcloud compute addresses describe ${INFRA_ID}-cluster-ip --region=${REGION} --format json | jq -r .address`)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于外部集群,还要导出集群公共 IP 地址:
export CLUSTER_PUBLIC_IP=(`gcloud compute addresses describe ${INFRA_ID}-cluster-public-ip --region=${REGION} --format json | jq -r .address`)$ export CLUSTER_PUBLIC_IP=(`gcloud compute addresses describe ${INFRA_ID}-cluster-public-ip --region=${REGION} --format json | jq -r .address`)Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.12.9.1. 外部负载均衡器的 Deployment Manager 模板 复制链接链接已复制到粘贴板!
您可以使用以下 Deployment Manager 模板来部署 OpenShift Container Platform 集群所需的外部负载均衡器:
例 6.20. 02_lb_ext.py Deployment Manager 模板
6.12.9.2. 内部负载均衡器的 Deployment Manager 模板 复制链接链接已复制到粘贴板!
您可以使用以下 Deployment Manager 模板来部署 OpenShift Container Platform 集群所需的内部负载均衡器:
例 6.21. 02_lb_int.py Deployment Manager 模板
创建外部集群时,除了 02_lb_ext.py 模板外,还需要此模板。
6.12.10. 在 GCP 中创建私有 DNS 区域 复制链接链接已复制到粘贴板!
您必须在 Google Cloud Platform (GCP) 中配置一个私人的 DNS 区以供您的 OpenShift Container Platform 集群使用。创建此组件的一种方法是修改提供的 Deployment Manager 模板。
如果不使用提供的 Deployment Manager 模板来创建 GCP 基础架构,您必须检查提供的信息并手动创建基础架构。如果集群没有正确初始化,您可能需要联系红帽支持并提供您的安装日志。
先决条件
- 配置 GCP 帐户。
- 为集群生成 Ignition 配置文件。
- 在 GCP 中创建和配置 VPC 及相关子网。
流程
-
复制 私人 DNS 的 Deployment Manager 模板一节中的模板,并将它以
02_dns.py形式保存到计算机上。此模板描述了集群所需的私有 DNS 对象。 创建
02_dns.yaml资源定义文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
gcloudCLI 创建部署:gcloud deployment-manager deployments create ${INFRA_ID}-dns --config 02_dns.yaml$ gcloud deployment-manager deployments create ${INFRA_ID}-dns --config 02_dns.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 由于 Deployment Manager 的限制,模板不会创建 DNS 条目,因此您必须手动创建它们:
添加内部 DNS 条目:
if [ -f transaction.yaml ]; then rm transaction.yaml; fi gcloud dns record-sets transaction start --zone ${INFRA_ID}-private-zone gcloud dns record-sets transaction add ${CLUSTER_IP} --name api.${CLUSTER_NAME}.${BASE_DOMAIN}. --ttl 60 --type A --zone ${INFRA_ID}-private-zone gcloud dns record-sets transaction add ${CLUSTER_IP} --name api-int.${CLUSTER_NAME}.${BASE_DOMAIN}. --ttl 60 --type A --zone ${INFRA_ID}-private-zone gcloud dns record-sets transaction execute --zone ${INFRA_ID}-private-zone$ if [ -f transaction.yaml ]; then rm transaction.yaml; fi $ gcloud dns record-sets transaction start --zone ${INFRA_ID}-private-zone $ gcloud dns record-sets transaction add ${CLUSTER_IP} --name api.${CLUSTER_NAME}.${BASE_DOMAIN}. --ttl 60 --type A --zone ${INFRA_ID}-private-zone $ gcloud dns record-sets transaction add ${CLUSTER_IP} --name api-int.${CLUSTER_NAME}.${BASE_DOMAIN}. --ttl 60 --type A --zone ${INFRA_ID}-private-zone $ gcloud dns record-sets transaction execute --zone ${INFRA_ID}-private-zoneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 对于外部集群,还要添加外部 DNS 条目:
if [ -f transaction.yaml ]; then rm transaction.yaml; fi gcloud dns record-sets transaction start --zone ${BASE_DOMAIN_ZONE_NAME} gcloud dns record-sets transaction add ${CLUSTER_PUBLIC_IP} --name api.${CLUSTER_NAME}.${BASE_DOMAIN}. --ttl 60 --type A --zone ${BASE_DOMAIN_ZONE_NAME} gcloud dns record-sets transaction execute --zone ${BASE_DOMAIN_ZONE_NAME}$ if [ -f transaction.yaml ]; then rm transaction.yaml; fi $ gcloud dns record-sets transaction start --zone ${BASE_DOMAIN_ZONE_NAME} $ gcloud dns record-sets transaction add ${CLUSTER_PUBLIC_IP} --name api.${CLUSTER_NAME}.${BASE_DOMAIN}. --ttl 60 --type A --zone ${BASE_DOMAIN_ZONE_NAME} $ gcloud dns record-sets transaction execute --zone ${BASE_DOMAIN_ZONE_NAME}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.12.10.1. 私有 DNS 的 Deployment Manager 模板 复制链接链接已复制到粘贴板!
您可以使用以下 Deployment Manager 模板来部署 OpenShift Container Platform 集群所需的 私有 DNS:
例 6.22. 02_dns.py Deployment Manager 模板
6.12.11. 在 GCP 中创建防火墙规则 复制链接链接已复制到粘贴板!
您必须在 Google Cloud Platform (GCP) 中创建一个防火墙,供您的 OpenShift Container Platform 集群使用。创建这些组件的一种方法是修改提供的 Deployment Manager 模板。
如果不使用提供的 Deployment Manager 模板来创建 GCP 基础架构,您必须检查提供的信息并手动创建基础架构。如果集群没有正确初始化,您可能需要联系红帽支持并提供您的安装日志。
先决条件
- 配置 GCP 帐户。
- 为集群生成 Ignition 配置文件。
- 在 GCP 中创建和配置 VPC 及相关子网。
流程
-
复制防火墙规则的 Deployment Manager 模板一节中的模板,并将它以
03_firewall.py形式保存到计算机上。此模板描述了集群所需的安全组。 创建
03_firewall.yaml资源定义文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
gcloudCLI 创建部署:gcloud deployment-manager deployments create ${INFRA_ID}-firewall --config 03_firewall.yaml$ gcloud deployment-manager deployments create ${INFRA_ID}-firewall --config 03_firewall.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.12.11.1. 防火墙规则的 Deployment Manager 模板 复制链接链接已复制到粘贴板!
您可以使用以下 Deployment Manager 模板来部署 OpenShift Container Platform 集群所需的防火墙规则:
例 6.23. 03_firewall.py Deployment Manager 模板
6.12.13. 为 GCP 基础架构创建 RHCOS 集群镜像 复制链接链接已复制到粘贴板!
您必须对 OpenShift Container Platform 节点的 Google Cloud Platform (GCP) 使用有效的 Red Hat Enterprise Linux CoreOS (RHCOS) 镜像。
流程
从 RHCOS 镜像镜像页面获取 RHCOS 镜像。
重要RHCOS 镜像可能不会随着 OpenShift Container Platform 的每一发行版本都有改变。您必须下载一个最高版本的镜像,其版本号应小于或等于您安装的 OpenShift Container Platform 版本。如果可用,请使用与 OpenShift Container Platform 版本匹配的镜像版本。
文件名包含 OpenShift Container Platform 版本号,格式为
rhcos-<version>-<arch>-gcp.<arch>.tar.gz。创建 Google 存储桶:
gsutil mb gs://<bucket_name>
$ gsutil mb gs://<bucket_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 RHCOS 镜像上传到 Google 存储桶:
gsutil cp <downloaded_image_file_path>/rhcos-<version>-x86_64-gcp.x86_64.tar.gz gs://<bucket_name>
$ gsutil cp <downloaded_image_file_path>/rhcos-<version>-x86_64-gcp.x86_64.tar.gz gs://<bucket_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将上传的 RHCOS 镜像位置导出为变量:
export IMAGE_SOURCE="gs://<bucket_name>/rhcos-<version>-x86_64-gcp.x86_64.tar.gz"
$ export IMAGE_SOURCE="gs://<bucket_name>/rhcos-<version>-x86_64-gcp.x86_64.tar.gz"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建集群镜像:
gcloud compute images create "${INFRA_ID}-rhcos-image" \ --source-uri="${IMAGE_SOURCE}"$ gcloud compute images create "${INFRA_ID}-rhcos-image" \ --source-uri="${IMAGE_SOURCE}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.12.14. 在 GCP 中创建 bootstrap 机器 复制链接链接已复制到粘贴板!
您必须在 Google Cloud Platform (GCP) 中创建 bootstrap 机器,以便在 OpenShift Container Platform 集群初始化过程中使用。创建此机器的一种方法是修改提供的 Deployment Manager 模板。
如果不使用提供的 Deployment Manager 模板来创建 bootstrap 机器,您必须检查提供的信息并手动创建基础架构。如果集群没有正确初始化,您可能需要联系红帽支持并提供您的安装日志。
先决条件
- 配置 GCP 帐户。
- 为集群生成 Ignition 配置文件。
- 在 GCP 中创建和配置 VPC 及相关子网。
- 在 GCP 中创建和配置联网及负载均衡器。
- 创建 control plane 和计算角色。
- 确定安装了 pyOpenSSL。
流程
-
复制 bootstrap 机器的 Deployment Manager 模板一节中的模板,并将它以
04_bootstrap.py形式保存到计算机上。此模板描述了集群所需的 bootstrap 机器。 导出安装程序所需的 Red Hat Enterprise Linux CoreOS(RHCOS)镜像的位置:
export CLUSTER_IMAGE=(`gcloud compute images describe ${INFRA_ID}-rhcos-image --format json | jq -r .selfLink`)$ export CLUSTER_IMAGE=(`gcloud compute images describe ${INFRA_ID}-rhcos-image --format json | jq -r .selfLink`)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建存储桶并上传
bootstrap.ign文件:gsutil mb gs://${INFRA_ID}-bootstrap-ignition gsutil cp <installation_directory>/bootstrap.ign gs://${INFRA_ID}-bootstrap-ignition/$ gsutil mb gs://${INFRA_ID}-bootstrap-ignition $ gsutil cp <installation_directory>/bootstrap.ign gs://${INFRA_ID}-bootstrap-ignition/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为 bootstrap 实例创建一个签名的 URL,用于访问 Ignition 配置。将输出中的 URL 导出为变量:
export BOOTSTRAP_IGN=`gsutil signurl -d 1h service-account-key.json gs://${INFRA_ID}-bootstrap-ignition/bootstrap.ign | grep "^gs:" | awk '{print $5}'`$ export BOOTSTRAP_IGN=`gsutil signurl -d 1h service-account-key.json gs://${INFRA_ID}-bootstrap-ignition/bootstrap.ign | grep "^gs:" | awk '{print $5}'`Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
04_bootstrap.yaml资源定义文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
infra_id是来自于提取步骤的INFRA_ID基础架构名称。- 2
region是集群要部署到的区域,如us-central1。- 3
zone是 Bootstrap 实例要部署到的区域,如us-central1-b。- 4
cluster_network是集群网络的selfLinkURL。- 5
control_subnet是控制子网的selfLinkURL。- 6
image是 RHCOS 镜像的selfLinkURL。- 7
machine_type是实例的机器类型,如n1-standard-4。- 8
root_volume_size是 bootstrap 机器的引导磁盘大小。- 9
bootstrap_ign是创建签名 URL 时的 URL 输出。
使用
gcloudCLI 创建部署:gcloud deployment-manager deployments create ${INFRA_ID}-bootstrap --config 04_bootstrap.yaml$ gcloud deployment-manager deployments create ${INFRA_ID}-bootstrap --config 04_bootstrap.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 由于 Deployment Manager 的限制,模板无法管理负载均衡器成员资格,因此您必须手动添加 bootstrap 机器:
将 bootstrap 实例添加到内部负载均衡器实例组中:
gcloud compute instance-groups unmanaged add-instances \ ${INFRA_ID}-bootstrap-instance-group --zone=${ZONE_0} --instances=${INFRA_ID}-bootstrap$ gcloud compute instance-groups unmanaged add-instances \ ${INFRA_ID}-bootstrap-instance-group --zone=${ZONE_0} --instances=${INFRA_ID}-bootstrapCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将 bootstrap 实例组添加到内部负载均衡器后端服务中:
gcloud compute backend-services add-backend \ ${INFRA_ID}-api-internal-backend-service --region=${REGION} --instance-group=${INFRA_ID}-bootstrap-instance-group --instance-group-zone=${ZONE_0}$ gcloud compute backend-services add-backend \ ${INFRA_ID}-api-internal-backend-service --region=${REGION} --instance-group=${INFRA_ID}-bootstrap-instance-group --instance-group-zone=${ZONE_0}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.12.14.1. bootstrap 机器的 Deployment Manager 模板 复制链接链接已复制到粘贴板!
您可以使用以下 Deployment Manager 模板来部署 OpenShift Container Platform 集群所需的 bootstrap 机器:
例 6.25. 04_bootstrap.py Deployment Manager 模板
6.12.15. 在 GCP 中创建 control plane 机器 复制链接链接已复制到粘贴板!
您必须在 Google Cloud Platform (GCP) 中创建 control plane 机器,供您的集群使用。创建这些机器的一种方法是修改提供的 Deployment Manager 模板。
如果不使用提供的 Deployment Manager 模板来创建 control plane 机器,您必须检查提供的信息并手动创建基础架构。如果集群没有正确初始化,您可能需要联系红帽支持并提供您的安装日志。
先决条件
- 配置 GCP 帐户。
- 为集群生成 Ignition 配置文件。
- 在 GCP 中创建和配置 VPC 及相关子网。
- 在 GCP 中创建和配置联网及负载均衡器。
- 创建 control plane 和计算角色。
- 创建 bootstrap 机器。
流程
-
复制 control plane 机器的 Deployment Manager 模板一节中的模板,并将它以
05_control_plane.py形式保存到计算机上。此模板描述了集群所需的 control plane 机器。 导出资源定义所需的以下变量:
export MASTER_IGNITION=`cat <installation_directory>/master.ign`
$ export MASTER_IGNITION=`cat <installation_directory>/master.ign`Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
05_control_plane.yaml资源定义文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
infra_id是来自于提取步骤的INFRA_ID基础架构名称。- 2
zones是 control plane 实例要部署到的区域,如us-central1-a、us-central1-b和us-central1-c。- 3
control_subnet是控制子网的selfLinkURL。- 4
image是 RHCOS 镜像的selfLinkURL。- 5
machine_type是实例的机器类型,如n1-standard-4。- 6
service_account_email是创建的 master 服务帐户的电子邮件地址。- 7
ignition是master.ign文件的内容。
使用
gcloudCLI 创建部署:gcloud deployment-manager deployments create ${INFRA_ID}-control-plane --config 05_control_plane.yaml$ gcloud deployment-manager deployments create ${INFRA_ID}-control-plane --config 05_control_plane.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 由于 Deployment Manager 的限制,模板无法管理负载均衡器成员资格,因此您必须手动添加 control plane 机器。
运行以下命令,将 control plane 机器添加到适当的实例组中:
gcloud compute instance-groups unmanaged add-instances ${INFRA_ID}-master-${ZONE_0}-instance-group --zone=${ZONE_0} --instances=${INFRA_ID}-master-0 gcloud compute instance-groups unmanaged add-instances ${INFRA_ID}-master-${ZONE_1}-instance-group --zone=${ZONE_1} --instances=${INFRA_ID}-master-1 gcloud compute instance-groups unmanaged add-instances ${INFRA_ID}-master-${ZONE_2}-instance-group --zone=${ZONE_2} --instances=${INFRA_ID}-master-2$ gcloud compute instance-groups unmanaged add-instances ${INFRA_ID}-master-${ZONE_0}-instance-group --zone=${ZONE_0} --instances=${INFRA_ID}-master-0 $ gcloud compute instance-groups unmanaged add-instances ${INFRA_ID}-master-${ZONE_1}-instance-group --zone=${ZONE_1} --instances=${INFRA_ID}-master-1 $ gcloud compute instance-groups unmanaged add-instances ${INFRA_ID}-master-${ZONE_2}-instance-group --zone=${ZONE_2} --instances=${INFRA_ID}-master-2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于外部集群,还需要运行以下命令将 control plane 机器添加到目标池中:
gcloud compute target-pools add-instances ${INFRA_ID}-api-target-pool --instances-zone="${ZONE_0}" --instances=${INFRA_ID}-master-0 gcloud compute target-pools add-instances ${INFRA_ID}-api-target-pool --instances-zone="${ZONE_1}" --instances=${INFRA_ID}-master-1 gcloud compute target-pools add-instances ${INFRA_ID}-api-target-pool --instances-zone="${ZONE_2}" --instances=${INFRA_ID}-master-2$ gcloud compute target-pools add-instances ${INFRA_ID}-api-target-pool --instances-zone="${ZONE_0}" --instances=${INFRA_ID}-master-0 $ gcloud compute target-pools add-instances ${INFRA_ID}-api-target-pool --instances-zone="${ZONE_1}" --instances=${INFRA_ID}-master-1 $ gcloud compute target-pools add-instances ${INFRA_ID}-api-target-pool --instances-zone="${ZONE_2}" --instances=${INFRA_ID}-master-2Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.12.15.1. control plane 机器的 Deployment Manager 模板 复制链接链接已复制到粘贴板!
您可以使用以下 Deployment Manager 模板来部署 OpenShift Container Platform 集群所需的control plane 机器:
例 6.26. 05_control_plane.py Deployment Manager 模板
6.12.16. 等待 bootstrap 完成并删除 GCP 中的 bootstrap 资源 复制链接链接已复制到粘贴板!
在 Google Cloud Platform (GCP) 中创建所有所需的基础架构后,请等待您通过安装程序生成的 Ignition 配置文件所置备的机器上完成 bootstrap 过程。
先决条件
- 配置 GCP 帐户。
- 为集群生成 Ignition 配置文件。
- 在 GCP 中创建和配置 VPC 及相关子网。
- 在 GCP 中创建和配置联网及负载均衡器。
- 创建 control plane 和计算角色。
- 创建 bootstrap 机器。
- 创建 control plane 机器。
流程
更改到包含安装程序的目录,再运行以下命令:
./openshift-install wait-for bootstrap-complete --dir <installation_directory> \ --log-level info$ ./openshift-install wait-for bootstrap-complete --dir <installation_directory> \1 --log-level info2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果命令退出且不显示
FATAL警告,则代表您的 control plane 已被初始化。删除 bootstrap 资源:
gcloud compute backend-services remove-backend ${INFRA_ID}-api-internal-backend-service --region=${REGION} --instance-group=${INFRA_ID}-bootstrap-instance-group --instance-group-zone=${ZONE_0} gsutil rm gs://${INFRA_ID}-bootstrap-ignition/bootstrap.ign gsutil rb gs://${INFRA_ID}-bootstrap-ignition gcloud deployment-manager deployments delete ${INFRA_ID}-bootstrap$ gcloud compute backend-services remove-backend ${INFRA_ID}-api-internal-backend-service --region=${REGION} --instance-group=${INFRA_ID}-bootstrap-instance-group --instance-group-zone=${ZONE_0} $ gsutil rm gs://${INFRA_ID}-bootstrap-ignition/bootstrap.ign $ gsutil rb gs://${INFRA_ID}-bootstrap-ignition $ gcloud deployment-manager deployments delete ${INFRA_ID}-bootstrapCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.12.17. 在 GCP 中创建额外的 worker 机器 复制链接链接已复制到粘贴板!
您可以通过分散启动各个实例或利用集群外自动化流程(如自动缩放组),在 Google Cloud Platform (GCP) 中为您的集群创建 worker 机器。您还可以利用 OpenShift Container Platform 中的内置集群扩展机制和机器 API。
在本例中,您要使用 Deployment Manager 模板来手动启动一个实例。通过在文件中添加类型为 06_worker.py 的其他资源,即可启动其他实例。
如果不使用提供的 Deployment Manager 模板来创建 worker 机器,您必须检查提供的信息并手动创建基础架构。如果集群没有正确初始化,您可能需要联系红帽支持并提供您的安装日志。
先决条件
- 配置 GCP 帐户。
- 为集群生成 Ignition 配置文件。
- 在 GCP 中创建和配置 VPC 及相关子网。
- 在 GCP 中创建和配置联网及负载均衡器。
- 创建 control plane 和计算角色。
- 创建 bootstrap 机器。
- 创建 control plane 机器。
流程
-
复制本主题的 worker 机器的 Deployment Manager 模板部分中的模板,并将它以
06_worker.py形式保存到计算机中。此模板描述了集群所需的 worker 机器。 导出资源定义使用的变量。
导出托管计算机器的子网:
export COMPUTE_SUBNET=(`gcloud compute networks subnets describe ${INFRA_ID}-worker-subnet --region=${REGION} --format json | jq -r .selfLink`)$ export COMPUTE_SUBNET=(`gcloud compute networks subnets describe ${INFRA_ID}-worker-subnet --region=${REGION} --format json | jq -r .selfLink`)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为您的服务帐户导出电子邮件地址:
export WORKER_SERVICE_ACCOUNT=(`gcloud iam service-accounts list --filter "email~^${INFRA_ID}-w@${PROJECT_NAME}." --format json | jq -r '.[0].email'`)$ export WORKER_SERVICE_ACCOUNT=(`gcloud iam service-accounts list --filter "email~^${INFRA_ID}-w@${PROJECT_NAME}." --format json | jq -r '.[0].email'`)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 导出计算机器 Ignition 配置文件的位置:
export WORKER_IGNITION=`cat <installation_directory>/worker.ign`
$ export WORKER_IGNITION=`cat <installation_directory>/worker.ign`Copy to Clipboard Copied! Toggle word wrap Toggle overflow
创建
06_worker.yaml资源定义文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
name是 worker 机器的名称,如worker-0。- 2 9
infra_id是来自于提取步骤的INFRA_ID基础架构名称。- 3 10
zone是 worker 机器要部署到的区域,如us-central1-a。- 4 11
compute_subnet是计算子网的selfLink。- 5 12
image是 RHCOS 镜像的selfLinkURL。1- 6 13
machine_type是实例的机器类型,如n1-standard-4。- 7 14
service_account_email是创建的 worker 服务帐户的电子邮件地址。- 8 15
ignition是worker.ign文件的内容。
-
可选:如果要启动更多实例,请在
06_worker.yaml资源定义文件中包含类型为06_worker.py的其他资源。 使用
gcloudCLI 创建部署:gcloud deployment-manager deployments create ${INFRA_ID}-worker --config 06_worker.yaml$ gcloud deployment-manager deployments create ${INFRA_ID}-worker --config 06_worker.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
要使用 GCP Marketplace 镜像,请指定要使用的功能:
-
OpenShift Container Platform:
https://www.googleapis.com/compute/v1/projects/redhat-marketplace-public/global/images/redhat-coreos-ocp-48-x86-64-202210040145 -
OpenShift Platform Plus:
https://www.googleapis.com/compute/v1/projects/redhat-marketplace-public/global/images/redhat-coreos-opp-48-x86-64-202206140145 -
OpenShift Kubernetes Engine:
https://www.googleapis.com/compute/v1/projects/redhat-marketplace-public/global/images/redhat-coreos-oke-48-x86-64-202206140145
-
OpenShift Container Platform:
6.12.17.1. worker 机器的 Deloyment Manager 模板 复制链接链接已复制到粘贴板!
您可以使用以下 Deployment Manager 模板来部署 OpenShift Container Platform 集群所需的 worker 机器:
例 6.27. 06_worker.py Deployment Manager 模板
6.12.18. 使用 CLI 登录到集群 复制链接链接已复制到粘贴板!
您可以通过导出集群 kubeconfig 文件,以默认系统用户身份登录集群。kubeconfig 文件包含关于集群的信息,供 CLI 用于将客户端连接到正确集群和 API 服务器。该文件特只适用于一个特定的集群,在 OpenShift Container Platform 安装过程中创建。
先决条件
- 已部署了 OpenShift Container Platform 集群。
-
已安装
ocCLI。
流程
导出
kubeadmin凭证:export KUBECONFIG=<installation_directory>/auth/kubeconfig
$ export KUBECONFIG=<installation_directory>/auth/kubeconfig1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 对于
<installation_directory>,请指定安装文件保存到的目录的路径。
使用导出的配置,验证能否成功运行
oc命令:oc whoami
$ oc whoamiCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
system:admin
system:adminCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.12.19. 禁用默认的 OperatorHub 源 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 安装过程中,默认为 OperatorHub 配置由红帽和社区项目提供的源内容的 operator 目录。在受限网络环境中,必须以集群管理员身份禁用默认目录。
流程
通过在
OperatorHub对象中添加disableAllDefaultSources: true来禁用默认目录的源:oc patch OperatorHub cluster --type json \ -p '[{"op": "add", "path": "/spec/disableAllDefaultSources", "value": true}]'$ oc patch OperatorHub cluster --type json \ -p '[{"op": "add", "path": "/spec/disableAllDefaultSources", "value": true}]'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
或者,您可以使用 Web 控制台管理目录源。在 Administration
6.12.20. 批准机器的证书签名请求 复制链接链接已复制到粘贴板!
将机器添加到集群时,会为您添加的每台机器生成两个待处理证书签名请求(CSR)。您必须确认这些 CSR 已获得批准,或根据需要自行批准。客户端请求必须首先被批准,然后是服务器请求。
先决条件
- 您已将机器添加到集群中。
流程
确认集群可以识别这些机器:
oc get nodes
$ oc get nodesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME STATUS ROLES AGE VERSION master-0 Ready master 63m v1.21.0 master-1 Ready master 63m v1.21.0 master-2 Ready master 64m v1.21.0
NAME STATUS ROLES AGE VERSION master-0 Ready master 63m v1.21.0 master-1 Ready master 63m v1.21.0 master-2 Ready master 64m v1.21.0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出将列出您创建的所有机器。
注意在一些 CSR 被批准前,以上输出可能不包括计算节点(也称为 worker 节点)。
检查待处理的 CSR,并确保可以看到添加到集群中的每台机器都有
Pending或Approved状态的客户端请求:oc get csr
$ oc get csrCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
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 ...
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 ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在本例中,两台机器加入了集群。您可能会在列表中看到更多已批准的 CSR。
如果 CSR 没有获得批准,请在所添加机器的所有待处理 CSR 都处于
Pending状态后,为您的集群机器批准这些 CSR:注意由于 CSR 会自动轮转,因此请在将机器添加到集群后一小时内批准您的 CSR。如果没有在一小时内批准,证书将会轮转,每个节点将会存在多个证书。您必须批准所有这些证书。批准客户端 CSR 后,Kubelet 为服务证书创建一个二级 CSR,这需要手动批准。然后,如果 Kubelet 请求具有相同参数的新证书,则
machine-approver会自动批准后续服务证书续订请求。注意对于在未启用机器 API 的平台中运行的集群,如裸机和其他用户置备的基础架构,必须采用一种方法自动批准 kubelet 提供证书请求(CSR)。如果没有批准请求,则
oc exec、oc rsh和oc logs命令将无法成功,因为 API 服务器连接到 kubelet 时需要服务证书。与 Kubelet 端点联系的任何操作都需要此证书批准。这个方法必须监视新的 CSR,确认 CSR 由system:node或system:admin组中的node-bootstrapper服务帐户提交,并确认节点的身份。若要单独批准,请对每个有效的 CSR 运行以下命令:
oc adm certificate approve <csr_name>
$ oc adm certificate approve <csr_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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$ oc get csr -o go-template='{{range .items}}{{if not .status}}{{.metadata.name}}{{"\n"}}{{end}}{{end}}' | xargs --no-run-if-empty oc adm certificate approveCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在有些 CSR 被批准前,一些 Operator 可能无法使用。
现在,您的客户端请求已被批准,您必须查看添加到集群中的每台机器的服务器请求:
oc get csr
$ oc get csrCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
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 ...
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 ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果剩余的 CSR 没有被批准,且处于
Pending状态,请批准集群机器的 CSR:若要单独批准,请对每个有效的 CSR 运行以下命令:
oc adm certificate approve <csr_name>
$ oc adm certificate approve <csr_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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$ oc get csr -o go-template='{{range .items}}{{if not .status}}{{.metadata.name}}{{"\n"}}{{end}}{{end}}' | xargs oc adm certificate approveCopy to Clipboard Copied! Toggle word wrap Toggle overflow
批准所有客户端和服务器 CSR 后,器将处于
Ready状态。运行以下命令验证:oc get nodes
$ oc get nodesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意批准服务器 CSR 后可能需要几分钟时间让机器转换为
Ready状态。
其他信息
- 如需有关 CSR 的更多信息,请参阅证书签名请求。
6.12.21. 可选:添加入口 DNS 记录 复制链接链接已复制到粘贴板!
如果您在创建 Kubernetes 清单并生成 Ignition 配置时删除了 DNS 区配置,您必须手动创建指向入口负载均衡器的 DNS 记录。您可以创建通配符 *.apps.{baseDomain}. 或具体的记录。您可以根据自己的要求使用 A、CNAME 和其他记录。
先决条件
- 配置 GCP 帐户。
- 在创建 Kubernetes 清单并生成 Ignition 配置时删除 DNS 区配置。
- 在 GCP 中创建和配置 VPC 及相关子网。
- 在 GCP 中创建和配置联网及负载均衡器。
- 创建 control plane 和计算角色。
- 创建 bootstrap 机器。
- 创建 control plane 机器。
- 创建 worker 机器。
流程
等待入口路由器创建负载均衡器并填充
EXTERNAL-IP字段:oc -n openshift-ingress get service router-default
$ oc -n openshift-ingress get service router-defaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE router-default LoadBalancer 172.30.18.154 35.233.157.184 80:32288/TCP,443:31215/TCP 98
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE router-default LoadBalancer 172.30.18.154 35.233.157.184 80:32288/TCP,443:31215/TCP 98Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在您的区中添加 A 记录:
使用 A 记录:
为路由器 IP 地址导出变量:
export ROUTER_IP=`oc -n openshift-ingress get service router-default --no-headers | awk '{print $4}'`$ export ROUTER_IP=`oc -n openshift-ingress get service router-default --no-headers | awk '{print $4}'`Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在专用区中添加 A 记录:
if [ -f transaction.yaml ]; then rm transaction.yaml; fi gcloud dns record-sets transaction start --zone ${INFRA_ID}-private-zone gcloud dns record-sets transaction add ${ROUTER_IP} --name \*.apps.${CLUSTER_NAME}.${BASE_DOMAIN}. --ttl 300 --type A --zone ${INFRA_ID}-private-zone gcloud dns record-sets transaction execute --zone ${INFRA_ID}-private-zone$ if [ -f transaction.yaml ]; then rm transaction.yaml; fi $ gcloud dns record-sets transaction start --zone ${INFRA_ID}-private-zone $ gcloud dns record-sets transaction add ${ROUTER_IP} --name \*.apps.${CLUSTER_NAME}.${BASE_DOMAIN}. --ttl 300 --type A --zone ${INFRA_ID}-private-zone $ gcloud dns record-sets transaction execute --zone ${INFRA_ID}-private-zoneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 对于外部集群,还要将 A 记录添加到公共区:
if [ -f transaction.yaml ]; then rm transaction.yaml; fi gcloud dns record-sets transaction start --zone ${BASE_DOMAIN_ZONE_NAME} gcloud dns record-sets transaction add ${ROUTER_IP} --name \*.apps.${CLUSTER_NAME}.${BASE_DOMAIN}. --ttl 300 --type A --zone ${BASE_DOMAIN_ZONE_NAME} gcloud dns record-sets transaction execute --zone ${BASE_DOMAIN_ZONE_NAME}$ if [ -f transaction.yaml ]; then rm transaction.yaml; fi $ gcloud dns record-sets transaction start --zone ${BASE_DOMAIN_ZONE_NAME} $ gcloud dns record-sets transaction add ${ROUTER_IP} --name \*.apps.${CLUSTER_NAME}.${BASE_DOMAIN}. --ttl 300 --type A --zone ${BASE_DOMAIN_ZONE_NAME} $ gcloud dns record-sets transaction execute --zone ${BASE_DOMAIN_ZONE_NAME}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
如果需要添加特定域而不使用通配符,可以为集群的每个当前路由创建条目:
oc get --all-namespaces -o jsonpath='{range .items[*]}{range .status.ingress[*]}{.host}{"\n"}{end}{end}' routes$ oc get --all-namespaces -o jsonpath='{range .items[*]}{range .status.ingress[*]}{.host}{"\n"}{end}{end}' routesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.12.22. 在用户置备的基础架构上完成 GCP 安装 复制链接链接已复制到粘贴板!
在 Google Cloud Platform (GCP) 用户置备的基础架构上启动 OpenShift Container Platform 安装后,您可以监控集群事件,直到集群就绪可用。
先决条件
- 在用户置备的 GCP 基础架构上为 OpenShift Container Platform 集群部署 bootstrap 机器。
-
安装
ocCLI 并登录。
流程
完成集群安装:
./openshift-install --dir <installation_directory> wait-for install-complete
$ ./openshift-install --dir <installation_directory> wait-for install-complete1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
INFO Waiting up to 30m0s for the cluster to initialize...
INFO Waiting up to 30m0s for the cluster to initialize...Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 对于
<installation_directory>,请指定安装文件保存到的目录的路径。
重要-
安装程序生成的 Ignition 配置文件包含在 24 小时后过期的证书,然后在过期时进行续订。如果在更新证书前关闭集群,且集群在 24 小时后重启,集群会自动恢复过期的证书。一个例外情况是,您需要手动批准待处理的
node-bootstrapper证书签名请求(CSR)来恢复 kubelet 证书。如需更多信息,请参阅从过期的 control plane 证书中恢复的文档。 - 建议您在生成 12 小时后使用 Ignition 配置文件,因为集群安装后 24 小时证书从 16 小时轮转至 22 小时。通过在 12 小时内使用 Ignition 配置文件,您可以避免在安装过程中运行证书更新时避免安装失败。
观察集群的运行状态。
运行以下命令来查看当前的集群版本和状态:
oc get clusterversion
$ oc get clusterversionCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME VERSION AVAILABLE PROGRESSING SINCE STATUS version False True 24m Working towards 4.5.4: 99% complete
NAME VERSION AVAILABLE PROGRESSING SINCE STATUS version False True 24m Working towards 4.5.4: 99% completeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,查看 control plane 上由 Cluster Version Operator (CVO) 管理的 Operator:
oc get clusteroperators
$ oc get clusteroperatorsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来查看您的集群 pod:
oc get pods --all-namespaces
$ oc get pods --all-namespacesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
当前集群版本是
AVAILABLE时表示安装完毕。
6.12.23. OpenShift Container Platform 的 Telemetry 访问 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 4.8 中,默认运行的 Telemetry 服务提供有关集群健康状况和成功更新的指标,需要访问互联网。如果您的集群连接到互联网,Telemetry 会自动运行,而且集群会注册到 OpenShift Cluster Manager。
确认 OpenShift Cluster Manager 清单正确后,可以由 Telemetry 自动维护,也可以使用 OpenShift Cluster Manager 手动维护,使用订阅监控来跟踪帐户或多集群级别的 OpenShift Container Platform 订阅。
6.12.24. 后续步骤 复制链接链接已复制到粘贴板!
- 自定义集群。
-
为 Cluster Samples Operator 和
must-gather工具配置镜像流。 - 了解如何在受限网络中使用 Operator Lifecycle Manager(OLM)。
- 如果您用来安装集群的镜像 registry 具有一个可信任的 CA,通过配置额外的信任存储将其添加到集群中。
- 如果需要,您可以选择不使用远程健康报告。