在 Azure 上安装
在 Azure 上安装 OpenShift Container Platform
摘要
第 1 章 准备在 Azure 上安装 复制链接链接已复制到粘贴板!
1.1. 先决条件 复制链接链接已复制到粘贴板!
- 您可以参阅有关 OpenShift Container Platform 安装和更新 流程的详细信息。
- 您可以阅读选择集群安装方法并为用户准备它的文档。
1.2. 在 Azure 上安装 OpenShift Container Platform 的要求 复制链接链接已复制到粘贴板!
在 Microsoft Azure 上安装 OpenShift Container Platform 前,您必须配置 Azure 帐户。如需了解有关帐户配置、帐户限值、公共 DNS 区配置、所需角色、创建服务主体和支持的 Azure 区域的详细信息,请参阅配置 Azure 帐户。
如果环境中无法访问云身份和访问管理(IAM)API,或者不想将管理员级别的凭证 secret 存储在 kube-system 命名空间中,请参阅为 Azure 手动创建 IAM 以获取其他选项。
1.3. 选择在 Azure 上安装 OpenShift Container Platform 的方法 复制链接链接已复制到粘贴板!
您可以在安装程序置备的基础架构或用户置备的基础架构上安装 OpenShift Container Platform。默认安装类型使用安装程序置备的基础架构,安装程序会在其中为集群置备底层基础架构。您还可以在您置备的基础架构上安装 OpenShift Container Platform。如果不使用安装程序置备的基础架构,您必须自己管理和维护集群资源。
如需有关安装程序置备和用户置备的安装过程的更多信息,请参阅 安装过程。
1.3.1. 在安装程序置备的基础架构上安装集群 复制链接链接已复制到粘贴板!
您可以使用以下方法之一在 OpenShift Container Platform 安装程序置备的 Azure 基础架构上安装集群:
- 在 Azure 上快速安装集群:您可以在由 OpenShift Container Platform 安装程序置备的 Azure 基础架构上安装 OpenShift Container Platform。您可以使用默认配置选项快速安装集群。
- 在 Azure 上安装自定义集群:您可以在安装程序置备的 Azure 基础架构上安装自定义集群。安装程序允许在安装阶段应用一些自定义。其它自定义选项可在安装后使用。
- 使用自定义网络在 Azure 上安装集群:您可以在安装过程中自定义 OpenShift Container Platform 网络配置,以便集群可以与现有的 IP 地址分配共存,并遵循您的网络要求。
- 在 Azure 上将集群安装到现有的 VNet 中: 您可以在 Azure 上的现有 Azure Virtual Network(VNet)上安装 OpenShift Container Platform。如果您按照公司的说明设置了限制,可以使用这个安装方法,例如在创建新帐户或基础架构时的限制。
- 在 Azure 上安装私有集群:您可以在 Azure 上将私有集群安装到现有 Azure Virtual Network(VNet)中。您可以使用此方法将 OpenShift Container Platform 部署到互联网中不可见的内部网络中。
- 在 Azure 上将集群安装到一个政府区域:OpenShift Container Platform 可以部署到 Microsoft Azure Government(MAG)区域,这些区域是为需要运行敏感工作负载的美国政府机构、州和本地级别的政府机构、企业和其他需要运行敏感工作负载的美国客户而设计的。
1.3.2. 在用户置备的基础架构上安装集群 复制链接链接已复制到粘贴板!
您可以使用以下方法在您置备的 Azure 基础架构上安装集群:
- 使用 ARM 模板在 Azure 上安装集群:您可以使用您提供的基础架构在 Azure 上安装 OpenShift Container Platform。您可以使用提供的 Azure Resource Manager(ARM)模板来协助安装。
1.4. 后续步骤 复制链接链接已复制到粘贴板!
第 2 章 配置 Azure 帐户 复制链接链接已复制到粘贴板!
在安装 OpenShift Container Platform 之前,您必须配置 Microsoft Azure 帐户。
所有通过公共端点提供的 Azure 资源均存在资源名称的限制,您无法创建使用某些名称的资源。如需 Azure 限制词语列表,请参阅 Azure 文档中的解决保留资源名称错误。
2.1. Azure 帐户限值 复制链接链接已复制到粘贴板!
OpenShift Container Platform 集群使用诸多 Microsoft Azure 组件,默认的 Azure 订阅和服务限值、配额和约束会影响您安装 OpenShift Container Platform 集群的能力。
默认的限制因服务类别的不同(如 Free Trial 或 Pay-As-You-Go)以及系列的不同(如 Dv2 、F 或 G)而有所不同。例如,对于 Enterprise Agreement 订阅的默认限制是 350 个内核。
在 Azure 上安装默认集群前,请检查您的订阅类型的限制,如有必要,请提高帐户的配额限制。
下表总结了 Azure 组件,它们的限值会影响您安装和运行 OpenShift Container Platform 集群的能力。
| 组件 | 默认所需的组件数 | 默认 Azure 限值 | 描述 | ||||||
|---|---|---|---|---|---|---|---|---|---|
| vCPU | 44 | 每个区域 20 个 | 默认集群需要 44 个 vCPU,因此您必须提高帐户限值。 默认情况下,每个集群创建以下实例:
因为 bootstrap 和 control plane 机器使用 若要部署更多 worker 节点、启用自动扩展、部署大型工作负载或使用不同的实例类型,您必须进一步提高帐户的 vCPU 限值,以确保集群可以部署您需要的机器。 | ||||||
| OS Disk | 7 | 每个集群机器必须至少有 100 GB 存储和 300 IOPS。虽然这些值是最低支持的值,但对于具有密集型工作负载的生产环境集群和集群,建议使用更快的存储。有关优化性能存储的更多信息,请参阅"扩展和性能"部分中的页面标题为"优化存储"。 | |||||||
| VNet | 1 | 每个区域 1000 个 | 每个默认集群都需要一个虚拟网络 (VNet),此网络包括两个子网。 | ||||||
| 网络接口 | 7 | 每个区域 65,536 个 | 每个默认集群都需要 7 个网络接口。如果您要创建更多机器或者您部署的工作负载要创建负载均衡器,则集群会使用更多的网络接口。 | ||||||
| 网络安全组 | 2 | 5000 | 每个集群为 VNet 中的每个子网创建网络安全组。默认集群为 control plane 和计算节点子网创建网络安全组:
| ||||||
| 网络负载均衡器 | 3 | 每个区域 1000 个 | 每个集群都会创建以下负载均衡器:
如果您的应用程序创建了更多的 Kubernetes | ||||||
| 公共 IP 地址 | 3 | 两个公共负载均衡器各自使用一个公共 IP 地址。bootstrap 机器也使用一个公共 IP 地址,以便您可以在安装期间通过 SSH 连接到该机器来进行故障排除。bootstrap 节点的 IP 地址仅在安装过程中使用。 | |||||||
| 专用 IP 地址 | 7 | 内部负载均衡器、三台 control plane 机器中的每一台以及三台 worker 机器中的每一台各自使用一个专用 IP 地址。 | |||||||
| Spot VM vCPU(可选) | 0 如果配置 spot 虚拟机,您的集群必须为每个计算节点有两个 spot VM vCPU。 | 每个区域 20 个 | 这是可选组件。要使用 spot 虚拟机,您必须将 Azure 默认限值增加到集群中至少有两倍的计算节点数量。 注意 不建议将 spot 虚拟机用于 control plane 节点。 |
2.2. 在 Azure 中配置公共 DNS 区 复制链接链接已复制到粘贴板!
要安装 OpenShift Container Platform,您使用的 Microsoft Azure 帐户必须在帐户中具有一个专用的公共托管 DNS 区。此区域必须对域具有权威。此服务为集群外部连接提供集群 DNS 解析和名称查询。
流程
标识您的域或子域,以及注册商(registrar)。您可以转移现有的域和注册商,或通过 Azure 或其他来源获取新的域和注册商。
注意如需通过 Azure 购买域的更多信息,请参阅 Azure 文档中的购买 Azure 应用服务的自定义域名。
- 如果您使用现有的域和注册商,请将其 DNS 迁移到 Azure。请参阅 Azure 文档中的将活动 DNS 名称迁移到 Azure 应用服务。
为您的域配置 DNS。按照 Azure 文档中教程:在 Azure DNS 中托管域部分里的步骤,为您的域或子域创建一个公共托管区,提取新的权威名称服务器,并更新您的域使用的名称服务器的注册商记录。
使用合适的根域(如
openshiftcorp.com)或子域(如clusters.openshiftcorp.com)。- 如果您使用子域,请按照您公司的流程将其委派记录添加到父域。
2.3. 提高 Azure 帐户限值 复制链接链接已复制到粘贴板!
要提高帐户限值,请在 Azure 门户上提交支持请求。
每一支持请求只能提高一种类型的配额。
流程
- 从 Azure 门户,点击左下角的 Help + suport。
点击 New support request,然后选择所需的值:
- 从 Issue type 列表中,选择 Service and subscription limits (quotas)。
- 从 Subscription 列表中,选择要修改的订阅。
- 从 Quota type 列表中,选择要提高的配额。例如,选择 Compute-VM (cores-vCPUs) subscription limit increases 以增加 vCPU 的数量,这是安装集群所必须的。
- 点击 Next: Solutions。
在 Problem Details 页面中,提供您要提高配额所需的信息:
- 点击 Provide details,然后在 Quota details 窗口中提供所需的详情。
- 在 SUPPORT METHOD 和 CONTACT INFO 部分中,提供问题严重性和您的联系详情。
- 点击 Next: Review + create,然后点击 Create。
2.4. 所需的 Azure 角色 复制链接链接已复制到粘贴板!
OpenShift Container Platform 需要一个服务主体,以便可以管理 Microsoft Azure 资源。在创建服务主体前,请查看以下信息:
您的 Azure 帐户订阅必须具有以下角色:
-
User Access Administrator -
贡献者
您的 Azure Active Directory (AD)必须具有以下权限:
-
"microsoft.directory/servicePrincipals/createAsOwner"
要在 Azure 门户上设置角色,请参阅 Azure 文档中的使用 RBAC 和 Azure 门户管理对 Azure 资源的访问。
2.5. 安装程序置备的基础架构所需的 Azure 权限 复制链接链接已复制到粘贴板!
当您为服务主体分配 Contributor 和 User Access Administrator 角色时,会自动授予所有所需的权限。
如果机构的安全策略需要更严格的权限集,您可以创建具有所需权限的自定义角色。在 Microsoft Azure 上创建 OpenShift Container Platform 集群需要以下权限。
例 2.1. 创建授权资源所需的权限
-
Microsoft.Authorization/policies/audit/action -
Microsoft.Authorization/policies/auditIfNotExists/action -
Microsoft.Authorization/roleAssignments/read -
Microsoft.Authorization/roleAssignments/write
例 2.2. 创建计算资源所需的权限
-
Microsoft.Compute/availabilitySets/read -
Microsoft.Compute/availabilitySets/write -
Microsoft.Compute/disks/beginGetAccess/action -
Microsoft.Compute/disks/delete -
Microsoft.Compute/disks/read -
Microsoft.Compute/disks/write -
Microsoft.Compute/galleries/images/read -
Microsoft.Compute/galleries/images/versions/read -
Microsoft.Compute/galleries/images/versions/write -
Microsoft.Compute/galleries/images/write -
Microsoft.Compute/galleries/read -
Microsoft.Compute/galleries/write -
Microsoft.Compute/snapshots/read -
Microsoft.Compute/snapshots/write -
Microsoft.Compute/snapshots/delete -
Microsoft.Compute/virtualMachines/delete -
Microsoft.Compute/virtualMachines/powerOff/action -
Microsoft.Compute/virtualMachines/read -
Microsoft.Compute/virtualMachines/write
例 2.3. 创建身份管理资源所需的权限
-
Microsoft.ManagedIdentity/userAssignedIdentities/assign/action -
Microsoft.ManagedIdentity/userAssignedIdentities/read -
Microsoft.ManagedIdentity/userAssignedIdentities/write
例 2.4. 创建网络资源所需的权限
-
Microsoft.Network/dnsZones/A/write -
Microsoft.Network/dnsZones/CNAME/write -
Microsoft.Network/dnszones/CNAME/read -
Microsoft.Network/dnszones/read -
Microsoft.Network/loadBalancers/backendAddressPools/join/action -
Microsoft.Network/loadBalancers/backendAddressPools/read -
Microsoft.Network/loadBalancers/backendAddressPools/write -
Microsoft.Network/loadBalancers/read -
Microsoft.Network/loadBalancers/write -
Microsoft.Network/networkInterfaces/delete -
Microsoft.Network/networkInterfaces/join/action -
Microsoft.Network/networkInterfaces/read -
Microsoft.Network/networkInterfaces/write -
Microsoft.Network/networkSecurityGroups/join/action -
Microsoft.Network/networkSecurityGroups/read -
Microsoft.Network/networkSecurityGroups/securityRules/delete -
Microsoft.Network/networkSecurityGroups/securityRules/read -
Microsoft.Network/networkSecurityGroups/securityRules/write -
Microsoft.Network/networkSecurityGroups/write -
Microsoft.Network/privateDnsZones/A/read -
Microsoft.Network/privateDnsZones/A/write -
Microsoft.Network/privateDnsZones/A/delete -
Microsoft.Network/privateDnsZones/SOA/read -
Microsoft.Network/privateDnsZones/read -
Microsoft.Network/privateDnsZones/virtualNetworkLinks/read -
Microsoft.Network/privateDnsZones/virtualNetworkLinks/write -
Microsoft.Network/privateDnsZones/write -
Microsoft.Network/publicIPAddresses/delete -
Microsoft.Network/publicIPAddresses/join/action -
Microsoft.Network/publicIPAddresses/read -
Microsoft.Network/publicIPAddresses/write -
Microsoft.Network/virtualNetworks/join/action -
Microsoft.Network/virtualNetworks/read -
Microsoft.Network/virtualNetworks/subnets/join/action -
Microsoft.Network/virtualNetworks/subnets/read -
Microsoft.Network/virtualNetworks/subnets/write -
Microsoft.Network/virtualNetworks/write
在 Azure 上创建私有 OpenShift Container Platform 集群不需要以下权限。
-
Microsoft.Network/dnsZones/A/write -
Microsoft.Network/dnsZones/CNAME/write -
Microsoft.Network/dnszones/CNAME/read -
Microsoft.Network/dnszones/read
例 2.5. 检查资源健康状况所需的权限
-
Microsoft.Resourcehealth/healthevent/Activated/action -
Microsoft.Resourcehealth/healthevent/InProgress/action -
Microsoft.Resourcehealth/healthevent/Pending/action -
Microsoft.Resourcehealth/healthevent/Resolved/action -
Microsoft.Resourcehealth/healthevent/Updated/action
例 2.6. 创建资源组所需的权限
-
Microsoft.Resources/subscriptions/resourceGroups/read -
Microsoft.Resources/subscriptions/resourcegroups/write
例 2.7. 创建资源标签所需的权限
-
Microsoft.Resources/tags/write
例 2.8. 创建存储资源所需的权限
-
Microsoft.Storage/storageAccounts/blobServices/read -
Microsoft.Storage/storageAccounts/blobServices/containers/write -
Microsoft.Storage/storageAccounts/fileServices/read -
Microsoft.Storage/storageAccounts/fileServices/shares/read -
Microsoft.Storage/storageAccounts/fileServices/shares/write -
Microsoft.Storage/storageAccounts/fileServices/shares/delete -
Microsoft.Storage/storageAccounts/listKeys/action -
Microsoft.Storage/storageAccounts/read -
Microsoft.Storage/storageAccounts/write
例 2.9. 创建 marketplace 虚拟机资源的可选权限
-
Microsoft.MarketplaceOrdering/offertypes/publishers/offers/plans/agreements/read -
Microsoft.MarketplaceOrdering/offertypes/publishers/offers/plans/agreements/write
例 2.10. 创建计算资源的可选权限
-
Microsoft.Compute/availabilitySets/delete -
Microsoft.Compute/images/read -
Microsoft.Compute/images/write -
Microsoft.Compute/images/delete
例 2.11. 启用用户管理加密的可选权限
-
Microsoft.Compute/diskEncryptionSets/read -
Microsoft.Compute/diskEncryptionSets/write -
Microsoft.Compute/diskEncryptionSets/delete -
Microsoft.KeyVault/vaults/read -
Microsoft.KeyVault/vaults/write -
Microsoft.KeyVault/vaults/delete -
Microsoft.KeyVault/vaults/deploy/action -
Microsoft.KeyVault/vaults/keys/read -
Microsoft.KeyVault/vaults/keys/write -
Microsoft.Features/providers/features/register/action
例 2.12. 使用 Azure 网络地址转换 (NAT) 安装私有集群的可选权限
-
Microsoft.Network/natGateways/join/action -
Microsoft.Network/natGateways/read -
Microsoft.Network/natGateways/write
例 2.13. 使用 Azure 防火墙安装私有集群的可选权限
-
Microsoft.Network/azureFirewalls/applicationRuleCollections/write -
Microsoft.Network/azureFirewalls/read -
Microsoft.Network/azureFirewalls/write -
Microsoft.Network/routeTables/join/action -
Microsoft.Network/routeTables/read -
Microsoft.Network/routeTables/routes/read -
Microsoft.Network/routeTables/routes/write -
Microsoft.Network/routeTables/write -
Microsoft.Network/virtualNetworks/peer/action -
Microsoft.Network/virtualNetworks/virtualNetworkPeerings/read -
Microsoft.Network/virtualNetworks/virtualNetworkPeerings/write
例 2.14. 运行收集 bootstrap 的可选权限
-
Microsoft.Compute/virtualMachines/instanceView/read
删除 Microsoft Azure 上的 OpenShift Container Platform 集群需要以下权限。您可以使用相同的权限删除 Azure 上的私有 OpenShift Container Platform 集群。
例 2.15. 删除授权资源所需的权限
-
Microsoft.Authorization/roleAssignments/delete
例 2.16. 删除计算资源所需的权限
-
Microsoft.Compute/disks/delete -
Microsoft.Compute/galleries/delete -
Microsoft.Compute/galleries/images/delete -
Microsoft.Compute/galleries/images/versions/delete -
Microsoft.Compute/virtualMachines/delete
例 2.17. 删除身份管理资源所需的权限
-
Microsoft.ManagedIdentity/userAssignedIdentities/delete
例 2.18. 删除网络资源所需的权限
-
Microsoft.Network/dnszones/read -
Microsoft.Network/dnsZones/A/read -
Microsoft.Network/dnsZones/A/delete -
Microsoft.Network/dnsZones/CNAME/read -
Microsoft.Network/dnsZones/CNAME/delete -
Microsoft.Network/loadBalancers/delete -
Microsoft.Network/networkInterfaces/delete -
Microsoft.Network/networkSecurityGroups/delete -
Microsoft.Network/privateDnsZones/read -
Microsoft.Network/privateDnsZones/A/read -
Microsoft.Network/privateDnsZones/delete -
Microsoft.Network/privateDnsZones/virtualNetworkLinks/delete -
Microsoft.Network/publicIPAddresses/delete -
Microsoft.Network/virtualNetworks/delete
在 Azure 上删除私有 OpenShift Container Platform 集群不需要以下权限。
-
Microsoft.Network/dnszones/read -
Microsoft.Network/dnsZones/A/read -
Microsoft.Network/dnsZones/A/delete -
Microsoft.Network/dnsZones/CNAME/read -
Microsoft.Network/dnsZones/CNAME/delete
例 2.19. 检查资源健康状况所需的权限
-
Microsoft.Resourcehealth/healthevent/Activated/action -
Microsoft.Resourcehealth/healthevent/Resolved/action -
Microsoft.Resourcehealth/healthevent/Updated/action
例 2.20. 删除资源组所需的权限
-
Microsoft.Resources/subscriptions/resourcegroups/delete
例 2.21. 删除存储资源所需的权限
-
Microsoft.Storage/storageAccounts/delete -
Microsoft.Storage/storageAccounts/listKeys/action
要在 Azure 上安装 OpenShift Container Platform,您必须将权限范围到您的订阅。之后,您可以将这些权限重新限定到安装程序创建的资源组。如果其他资源组中存在公共 DNS 区域,则必须始终将网络 DNS 区域相关权限应用到您的订阅。默认情况下,OpenShift Container Platform 安装程序分配 Contributor 角色的 Azure 身份。
在删除 OpenShift Container Platform 集群时,您可以将订阅的所有权限限定到您的订阅。
2.6. 创建服务主体 复制链接链接已复制到粘贴板!
由于 OpenShift Container Platform 及其安装程序使用 Azure Resource Manager 创建 Microsoft Azure 资源,因此您必须创建一个服务主体来代表它。
先决条件
流程
登录 Azure CLI:
az login
$ az loginCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您的 Azure 帐户使用订阅,请确定您使用正确的订阅:
查看可用帐户列表并记录您要用于集群的订阅的
tenantId值:az account list --refresh
$ az account list --refreshCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 查看您的活跃帐户详情,确认
tenantId值与您要使用的订阅匹配:az account show
$ az account showCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 确保
tenantId参数的值是正确的订阅 ID。
如果您使用的订阅不正确,请更改活跃的订阅:
az account set -s <subscription_id>
$ az account set -s <subscription_id>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定订阅 ID。
验证订阅 ID 更新:
az account show
$ az account showCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
记录输出中的
tenantId和id参数值。OpenShift Container Platform 安装过程中需要这些值。 为您的帐户创建服务主体:
az ad sp create-for-rbac --role <role_name> \ --name <service_principal> \ --scopes /subscriptions/<subscription_id>$ az ad sp create-for-rbac --role <role_name> \1 --name <service_principal> \2 --scopes /subscriptions/<subscription_id>3 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
记录前面输出中
appId和password参数的值。OpenShift Container Platform 安装过程中需要这些值。 如果您将
Contributor角色应用到服务主体,请运行以下命令来分配User Administrator Access角色:az role assignment create --role "User Access Administrator" \ --assignee-object-id $(az ad sp show --id <appId> --query id -o tsv)
$ az role assignment create --role "User Access Administrator" \ --assignee-object-id $(az ad sp show --id <appId> --query id -o tsv)1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 为您的服务主体指定
appId参数值。
2.7. 支持的 Azure Marketplace 区域 复制链接链接已复制到粘贴板!
使用 Azure Marketplace 镜像安装集群可供购买在北美和 EMEA 中提供的客户提供服务。
虽然优惠必须在北美或 EMEA 处购买,但您可以将集群部署到 OpenShift Container Platform 支持的 Azure 公共分区中。
Azure Government 区域不支持使用 Azure Marketplace 镜像部署集群。
2.8. 支持的 Azure 区域 复制链接链接已复制到粘贴板!
安装程序会根据您的订阅动态地生成可用的 Microsoft Azure 区域列表。
支持的 Azure 公共区域
-
australiacentral(Australia Central) -
australiaeast(Australia East) -
australiasoutheast(Australia South East) -
brazilsouth(Brazil South) -
canadacentral(Canada Central) -
canadaeast(Canada East) -
centralindia(Central India) -
centralus(Central US) -
eastasia(East Asia) -
eastus(East US) -
eastus2(East US 2) -
francecentral(France Central) -
germanywestcentral(Germany West Central) -
israelcentral(Israel Central) -
italynorth(Italy North) -
japaneast(Japan East) -
japanwest(Japan West) -
koreacentral(Korea Central) -
koreasouth(Korea South) -
mexicocentral(Mexico Central) -
northcentralus(North Central US) -
northeurope(North Europe) -
norwayeast(Norway East) -
polandcentral(Poland Central) -
qatarcentral(Qatar Central) -
southafricanorth(South Africa North) -
southcentralus(South Central US) -
southeastasia(Southeast Asia) -
southindia(South India) -
swedencentral(Sweden Central) -
switzerlandnorth(Switzerland North) -
uaenorth(UAE North) -
uksouth(UK South) -
ukwest(UK West) -
westcentralus(West Central US) -
westeurope(West Europe) -
westindia(West India) -
westus(West US) -
westus2(West US 2) -
westus3(West US 3)
支持的 Azure 政府区域
OpenShift Container Platform 4.6 添加了对以下 Microsoft Azure Government(MAG)区域的支持:
-
usgovtexas(US Gov Texas) -
usgovvirginia(US Gov Virginia)
您可以参阅 Azure 文档来了解与所有可用 MAG 区域的信息。其他 MAG 区域应该可以与 OpenShift Container Platform 一起工作,但并没有经过测试。
2.9. 后续步骤 复制链接链接已复制到粘贴板!
- 在 Azure 上安装 OpenShift Container Platform 集群。您可以安装自定义集群或使用默认选项快速安装集群。
第 3 章 为 Azure 手动创建 IAM 复制链接链接已复制到粘贴板!
在无法访问云身份和访问管理(IAM)API 的环境中,或者管理员更不希望将管理员级别的凭证 secret 存储在集群 kube-system 命名空间中时,可以在安装前将 Cloud Credential Operator(CCO)放入手动模式。
3.1. 在 kube-system 项目中存储管理员级别的 secret 的替代方案 复制链接链接已复制到粘贴板!
Cloud Credential Operator(CCO)将云供应商凭证作为 Kubernetes 自定义资源定义(CRD)进行管理。您可以通过在 install-config.yaml 文件中为 credentialsMode 参数设置不同的值,来配置 CCO 来满足机构的安全要求。
如果您不希望在集群 kube-system 项目中存储管理员级别的凭证 secret,您可以在安装 OpenShift Container Platform 时把 CCO 的 credentialsMode 参数设置为 Manual,并手动管理您的云凭证。
使用手动模式可允许每个集群组件只拥有所需的权限,而无需在集群中存储管理员级别的凭证。如果您的环境没有连接到云供应商公共 IAM 端点,您还可以使用此模式。但是,每次升级都必须手动将权限与新发行镜像协调。您还必须手动为每个请求它们的组件提供凭证。
3.2. 手动创建 IAM 复制链接链接已复制到粘贴板!
在无法访问云身份和访问管理(IAM)API 的环境中,或者管理员更不希望将管理员级别的凭证 secret 存储在集群 kube-system 命名空间中时,可以在安装前将 Cloud Credential Operator(CCO)放入手动模式。
流程
运行以下命令,切换到包含安装程序的目录并创建
install-config.yaml文件:openshift-install create install-config --dir <installation_directory>
$ openshift-install create install-config --dir <installation_directory>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
<installation_directory>是安装程序在其中创建文件的目录。编辑
install-config.yaml配置文件,使其包含将credentialsMode参数设置为Manual。install-config.yaml配置文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 添加这一行将
credentialsMode参数设置为Manual。
从包含安装程序的目录中运行以下命令来生成清单:
openshift-install create manifests --dir <installation_directory>
$ openshift-install create manifests --dir <installation_directory>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
<installation_directory>是安装程序在其中创建文件的目录。在包含安装程序的目录中,运行以下命令来获取构建
openshift-install二进制文件的 OpenShift Container Platform 发行镜像的详情:openshift-install version
$ openshift-install versionCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
release image quay.io/openshift-release-dev/ocp-release:4.y.z-x86_64
release image quay.io/openshift-release-dev/ocp-release:4.y.z-x86_64Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,找到此发行版本镜像中的所有
CredentialsRequest对象:oc adm release extract quay.io/openshift-release-dev/ocp-release:4.y.z-x86_64 \ --credentials-requests \ --cloud=azure
$ oc adm release extract quay.io/openshift-release-dev/ocp-release:4.y.z-x86_64 \ --credentials-requests \ --cloud=azureCopy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令为每个
CredentialsRequest对象创建一个 YAML 文件。CredentialsRequest对象示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在之前生成的
openshift-install清单目录中为 secret 创建 YAML 文件。secret 必须使用在spec.secretRef中为每个CredentialsRequest定义的命名空间和 secret 名称存储。带有 secret 的
CredentialsRequest对象示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow Secret对象示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要发行镜像包含通过
TechPreviewNoUpgrade功能集启用的技术预览功能的CredentialsRequest对象。您可以使用release.openshift.io/feature-set: TechPreviewNoUpgrade注解来识别这些对象。- 如果不使用这些功能,请不要为这些对象创建 secret。为不使用的技术预览功能创建 secret 可能会导致安装失败。
- 如果使用这些功能,必须为对应的对象创建 secret。
要使用
TechPreviewNoUpgrade注解查找CredentialsRequest对象,请运行以下命令:grep "release.openshift.io/feature-set" *
$ grep "release.openshift.io/feature-set" *Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
0000_30_capi-operator_00_credentials-request.yaml: release.openshift.io/feature-set: TechPreviewNoUpgrade
0000_30_capi-operator_00_credentials-request.yaml: release.openshift.io/feature-set: TechPreviewNoUpgradeCopy to Clipboard Copied! Toggle word wrap Toggle overflow
从包含安装程序的目录中,开始创建集群:
openshift-install create cluster --dir <installation_directory>
$ openshift-install create cluster --dir <installation_directory>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要在升级使用手动维护凭证的集群前,您必须确保 CCO 处于可升级状态。
3.3. 后续步骤 复制链接链接已复制到粘贴板!
安装 OpenShift Container Platform 集群:
- 使用安装程序置备的基础架构默认选项在 Azure 上快速安装集群
- 在安装程序置备的基础架构中使用云自定义安装集群
- 在安装程序置备的基础架构中使用网络自定义安装集群
第 4 章 为 Azure 启用用户管理的加密 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 版本 4.12 中,您可以在 Azure 中使用用户管理的加密密钥安装集群。要启用此功能,您可以在安装后准备 Azure DiskEncryptionSet,修改 install-config.yaml 文件,然后执行安装后的步骤。
4.1. 准备 Azure 磁盘加密集 复制链接链接已复制到粘贴板!
OpenShift Container Platform 安装程序可以使用带有用户管理的密钥的现有磁盘加密集。要启用此功能,您可以在 Azure 中创建磁盘加密集,并为安装程序提供密钥。
流程
运行以下命令,为 Azure 资源组设置以下环境变量:
export RESOURCEGROUP="<resource_group>" \ LOCATION="<location>"$ export RESOURCEGROUP="<resource_group>" \1 LOCATION="<location>"2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,为 Azure Key Vault 和 Disk Encryption Set 设置以下环境变量:
export KEYVAULT_NAME="<keyvault_name>" \ KEYVAULT_KEY_NAME="<keyvault_key_name>" \ DISK_ENCRYPTION_SET_NAME="<disk_encryption_set_name>"$ export KEYVAULT_NAME="<keyvault_name>" \1 KEYVAULT_KEY_NAME="<keyvault_key_name>" \2 DISK_ENCRYPTION_SET_NAME="<disk_encryption_set_name>"3 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,为您的 Azure Service Principal 设置环境变量:
export CLUSTER_SP_ID="<service_principal_id>"
$ export CLUSTER_SP_ID="<service_principal_id>"1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定用于此安装的服务主体的 ID。
运行以下命令,在 Azure 中启用主机级别加密:
az feature register --namespace "Microsoft.Compute" --name "EncryptionAtHost"
$ az feature register --namespace "Microsoft.Compute" --name "EncryptionAtHost"Copy to Clipboard Copied! Toggle word wrap Toggle overflow az feature show --namespace Microsoft.Compute --name EncryptionAtHost
$ az feature show --namespace Microsoft.Compute --name EncryptionAtHostCopy to Clipboard Copied! Toggle word wrap Toggle overflow az provider register -n Microsoft.Compute
$ az provider register -n Microsoft.ComputeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,创建一个 Azure 资源组来保存磁盘加密集和相关资源:
az group create --name $RESOURCEGROUP --location $LOCATION
$ az group create --name $RESOURCEGROUP --location $LOCATIONCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建 Azure 密钥库:
az keyvault create -n $KEYVAULT_NAME -g $RESOURCEGROUP -l $LOCATION \ --enable-purge-protection true$ az keyvault create -n $KEYVAULT_NAME -g $RESOURCEGROUP -l $LOCATION \ --enable-purge-protection trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,在密钥 vault 中创建加密密钥:
az keyvault key create --vault-name $KEYVAULT_NAME -n $KEYVAULT_KEY_NAME \ --protection software$ az keyvault key create --vault-name $KEYVAULT_NAME -n $KEYVAULT_KEY_NAME \ --protection softwareCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令捕获密钥 vault 的 ID:
KEYVAULT_ID=$(az keyvault show --name $KEYVAULT_NAME --query "[id]" -o tsv)
$ KEYVAULT_ID=$(az keyvault show --name $KEYVAULT_NAME --query "[id]" -o tsv)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,捕获密钥 vault 中的密钥 URL:
KEYVAULT_KEY_URL=$(az keyvault key show --vault-name $KEYVAULT_NAME --name \ $KEYVAULT_KEY_NAME --query "[key.kid]" -o tsv)$ KEYVAULT_KEY_URL=$(az keyvault key show --vault-name $KEYVAULT_NAME --name \ $KEYVAULT_KEY_NAME --query "[key.kid]" -o tsv)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建磁盘加密集:
az disk-encryption-set create -n $DISK_ENCRYPTION_SET_NAME -l $LOCATION -g \ $RESOURCEGROUP --source-vault $KEYVAULT_ID --key-url $KEYVAULT_KEY_URL$ az disk-encryption-set create -n $DISK_ENCRYPTION_SET_NAME -l $LOCATION -g \ $RESOURCEGROUP --source-vault $KEYVAULT_ID --key-url $KEYVAULT_KEY_URLCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,为 DiskEncryptionSet 资源授予对密钥 vault 的访问权限:
DES_IDENTITY=$(az disk-encryption-set show -n $DISK_ENCRYPTION_SET_NAME -g \ $RESOURCEGROUP --query "[identity.principalId]" -o tsv)$ DES_IDENTITY=$(az disk-encryption-set show -n $DISK_ENCRYPTION_SET_NAME -g \ $RESOURCEGROUP --query "[identity.principalId]" -o tsv)Copy to Clipboard Copied! Toggle word wrap Toggle overflow az keyvault set-policy -n $KEYVAULT_NAME -g $RESOURCEGROUP --object-id \ $DES_IDENTITY --key-permissions wrapkey unwrapkey get$ az keyvault set-policy -n $KEYVAULT_NAME -g $RESOURCEGROUP --object-id \ $DES_IDENTITY --key-permissions wrapkey unwrapkey getCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,授予 Azure Service Principal 权限来读取 DiskEncryptionSet:
DES_RESOURCE_ID=$(az disk-encryption-set show -n $DISK_ENCRYPTION_SET_NAME -g \ $RESOURCEGROUP --query "[id]" -o tsv)$ DES_RESOURCE_ID=$(az disk-encryption-set show -n $DISK_ENCRYPTION_SET_NAME -g \ $RESOURCEGROUP --query "[id]" -o tsv)Copy to Clipboard Copied! Toggle word wrap Toggle overflow az role assignment create --assignee $CLUSTER_SP_ID --role "<reader_role>" \ --scope $DES_RESOURCE_ID -o jsonc$ az role assignment create --assignee $CLUSTER_SP_ID --role "<reader_role>" \1 --scope $DES_RESOURCE_ID -o jsoncCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定对磁盘加密集的读取权限的 Azure 角色。您可以使用
Owner角色或具有所需权限的自定义角色。
4.2. 后续步骤 复制链接链接已复制到粘贴板!
安装 OpenShift Container Platform 集群:
第 5 章 在 Azure 上快速安装集群 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 版本 4.12 中,您可以使用默认配置选项在 Microsoft Azure 上安装集群。
5.1. 先决条件 复制链接链接已复制到粘贴板!
- 您可以参阅有关 OpenShift Container Platform 安装和更新 流程的详细信息。
- 您可以阅读选择集群安装方法并为用户准备它的文档。
- 您已将 Azure 帐户配置为托管集群,并决定要将集群部署到的已测试和验证的区域。
- 如果使用防火墙,将其配置为允许集群需要访问的站点。
-
如果环境中无法访问云身份和访问管理(IAM)API,或者不想将管理员级别的凭证 secret 存储在
kube-system命名空间中,您可以 手动创建和维护 IAM 凭证。
5.2. OpenShift Container Platform 互联网访问 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 4.12 中,您需要访问互联网来安装集群。
您必须具有以下互联网访问权限:
- 访问 OpenShift Cluster Manager Hybrid Cloud Console 以下载安装程序并执行订阅管理。如果集群可以访问互联网,并且没有禁用 Telemetry,该服务会自动授权您的集群。
- 访问 Quay.io,以获取安装集群所需的软件包。
- 获取执行集群更新所需的软件包。
如果您的集群无法直接访问互联网,则可以在置备的某些类型的基础架构上执行受限网络安装。在此过程中,您可以下载所需的内容,并使用它为镜像 registry 填充安装软件包。对于某些安装类型,集群要安装到的环境不需要访问互联网。在更新集群前,您要更新镜像 registry 的内容。
5.3. 为集群节点 SSH 访问生成密钥对 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 安装过程中,您可以为安装程序提供 SSH 公钥。密钥通过它们的 Ignition 配置文件传递给 Red Hat Enterprise Linux CoreOS(RHCOS)节点,用于验证对节点的 SSH 访问。密钥添加到每个节点上 core 用户的 ~/.ssh/authorized_keys 列表中,这将启用免密码身份验证。
将密钥传递给节点后,您可以使用密钥对作为用户 核心 通过 SSH 连接到 RHCOS 节点。若要通过 SSH 访问节点,必须由 SSH 为您的本地用户管理私钥身份。
如果要通过 SSH 连接到集群节点来执行安装调试或灾难恢复,则必须在安装过程中提供 SSH 公钥。./openshift-install gather 命令还需要在集群节点上设置 SSH 公钥。
不要在生产环境中跳过这个过程,在生产环境中需要灾难恢复和调试。
您必须使用本地密钥,而不是使用特定平台方法配置 的密钥,如 AWS 密钥对。
流程
如果您在本地计算机上没有可用于在集群节点上进行身份验证的现有 SSH 密钥对,请创建一个。例如,在使用 Linux 操作系统的计算机上运行以下命令:
ssh-keygen -t ed25519 -N '' -f <path>/<file_name>
$ ssh-keygen -t ed25519 -N '' -f <path>/<file_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定新 SSH 密钥的路径和文件名,如
~/.ssh/id_ed25519。如果您已有密钥对,请确保您的公钥位于~/.ssh目录中。
注意如果您计划在
x86_64、ppc64le和s390x架构上安装使用 FIPS 验证或 Modules In Process 加密库的 OpenShift Container Platform 集群。请不要创建使用ed25519算法的密钥。相反,创建一个使用rsa或ecdsa算法的密钥。查看公共 SSH 密钥:
cat <path>/<file_name>.pub
$ cat <path>/<file_name>.pubCopy to Clipboard Copied! Toggle word wrap Toggle overflow 例如,运行以下命令来查看
~/.ssh/id_ed25519.pub公钥:cat ~/.ssh/id_ed25519.pub
$ cat ~/.ssh/id_ed25519.pubCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将 SSH 私钥身份添加到本地用户的 SSH 代理(如果尚未添加)。在集群节点上,或者要使用
./openshift-install gather命令,需要对该密钥进行 SSH 代理管理,才能在集群节点上进行免密码 SSH 身份验证。注意在某些发行版中,自动管理默认 SSH 私钥身份,如
~/.ssh/id_rsa和~/.ssh/id_dsa。如果
ssh-agent进程尚未为您的本地用户运行,请将其作为后台任务启动:eval "$(ssh-agent -s)"
$ eval "$(ssh-agent -s)"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Agent pid 31874
Agent pid 31874Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果集群处于 FIPS 模式,则只使用 FIPS 兼容算法来生成 SSH 密钥。密钥必须是 RSA 或 ECDSA。
将 SSH 私钥添加到
ssh-agent:ssh-add <path>/<file_name>
$ ssh-add <path>/<file_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定 SSH 私钥的路径和文件名,如
~/.ssh/id_ed25519.pub
输出示例
Identity added: /home/<you>/<path>/<file_name> (<computer_name>)
Identity added: /home/<you>/<path>/<file_name> (<computer_name>)Copy to Clipboard Copied! Toggle word wrap Toggle overflow
后续步骤
- 安装 OpenShift Container Platform 时,为安装程序提供 SSH 公钥。
5.4. 获取安装程序 复制链接链接已复制到粘贴板!
在安装 OpenShift Container Platform 前,将安装文件下载到您用于安装的主机上。
先决条件
- 您有一台运行 Linux 或 macOS 的计算机,本地磁盘空间为 500 MB。
流程
- 访问 OpenShift Cluster Manager 站点的 Infrastructure Provider 页面。如果您有红帽帐户,请使用您的凭证登录。如果没有,请创建一个帐户。
- 选择您的基础架构供应商。
进入到安装类型的页面,下载与您的主机操作系统和架构对应的安装程序,并将该文件放在您要存储安装配置文件的目录中。
重要安装程序会在用来安装集群的计算机上创建几个文件。在完成集群安装后,您必须保留安装程序和安装程序所创建的文件。这两个文件都需要删除集群。
重要删除安装程序创建的文件不会删除您的集群,即使集群在安装过程中失败也是如此。要删除集群,请为特定云供应商完成 OpenShift Container Platform 卸载流程。
提取安装程序。例如,在使用 Linux 操作系统的计算机上运行以下命令:
tar -xvf openshift-install-linux.tar.gz
$ tar -xvf openshift-install-linux.tar.gzCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 从 Red Hat OpenShift Cluster Manager 下载安装 pull secret。此 pull secret 允许您与所含授权机构提供的服务进行身份验证,这些服务包括为 OpenShift Container Platform 组件提供容器镜像的 Quay.io。
5.5. 部署集群 复制链接链接已复制到粘贴板!
您可以在兼容云平台上安装 OpenShift Container Platform。
在初始安装过程中,您只能运行安装程序的 create cluster 命令一次。
先决条件
- 使用托管集群的云平台配置帐户。
- 获取 OpenShift Container Platform 安装程序和集群的 pull secret。
- 验证主机上的云供应商帐户是否有部署集群的正确权限。权限不正确的帐户会导致安装过程失败,并显示包括缺失权限的错误消息。
流程
进入包含安装程序的目录并初始化集群部署:
./openshift-install create cluster --dir <installation_directory> \ --log-level=info$ ./openshift-install create cluster --dir <installation_directory> \1 --log-level=info2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在指定目录时:
-
验证该目录是否具有
执行权限。在安装目录中运行 Terraform 二进制文件需要这个权限。 - 使用空目录。有些安装资产,如 bootstrap X.509 证书的过期间隔较短,因此不得重复使用安装目录。如果要重复使用另一个集群安装中的单个文件,您可以将它们复制到您的目录中。但是,安装资产的文件名可能会在发行版本间有所变化。从以前的 OpenShift Container Platform 版本中复制安装文件时请小心。
-
验证该目录是否具有
在提示符处提供值:
可选: 选择用于访问集群机器的 SSH 密钥。
注意对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定
ssh-agent进程使用的 SSH 密钥。- 选择 azure 作为目标平台。
如果安装程序无法找到包含 Microsoft Azure 配置集信息的
osServicePrincipal.json配置文件,位于计算机上的~/.azure/目录中,安装程序会提示您输入订阅和服务主体的以下 Azure 参数值。-
azure subscription id:要用于集群的订阅 ID。指定帐户输出中的
id值。 -
azure tenant id:租户 ID。指定帐户输出中的
tenantId值。 -
azure service principal client id:服务主体的
appId参数值。 azure service principal client secret:服务主体的
password参数值。重要为之前列出的参数输入值后,安装程序会创建一个
osServicePrincipal.json配置文件,并将此文件存储在计算机上的~/.azure/目录中。这些操作可确保安装程序在目标平台上创建 OpenShift Container Platform 集群时加载配置集。
-
azure subscription id:要用于集群的订阅 ID。指定帐户输出中的
- 选择要将集群部署到的区域。
- 选择集群要部署到的基域。基域与您为集群创建的 Azure DNS 区对应。
为集群输入一个描述性名称。
重要所有通过公共端点提供的 Azure 资源均存在资源名称的限制,您无法创建使用某些名称的资源。如需 Azure 限制词语列表,请参阅 Azure 文档中的解决保留资源名称错误。
- 粘贴 Red Hat OpenShift Cluster Manager 中的 pull secret。
注意如果您在主机上配置的云供应商帐户没有足够的权限来部署集群,安装过程将停止,并显示缺少的权限。
验证
当集群部署成功完成时:
-
终端会显示用于访问集群的说明,包括指向 Web 控制台和
kubeadmin用户的凭证的链接。 -
凭证信息还会输出到
<installation_directory>/.openshift_install.log.
不要删除安装程序或安装程序所创建的文件。需要这两者才能删除集群。
输出示例
-
安装程序生成的 Ignition 配置文件包含在 24 小时后过期的证书,然后在过期时进行续订。如果在更新证书前关闭集群,且集群在 24 小时后重启,集群会自动恢复过期的证书。一个例外是,您必须手动批准待处理的
node-bootstrapper证书签名请求(CSR)来恢复 kubelet 证书。如需更多信息,请参阅从过期的 control plane 证书 中恢复的文档。 - 建议您在 Ignition 配置文件生成后的 12 小时内使用它们,因为 24 小时的证书会在集群安装后的 16 小时到 22 小时间进行轮转。通过在 12 小时内使用 Ignition 配置文件,您可以避免在安装过程中因为执行了证书更新而导致安装失败的问题。
5.6. 通过下载二进制文件安装 OpenShift CLI 复制链接链接已复制到粘贴板!
您可以安装 OpenShift CLI(oc)来使用命令行界面与 OpenShift Container Platform 进行交互。您可以在 Linux、Windows 或 macOS 上安装 oc。
如果安装了旧版本的 oc,则无法使用 OpenShift Container Platform 4.12 中的所有命令。下载并安装新版本的 oc。
在 Linux 上安装 OpenShift CLI
您可以按照以下流程在 Linux 上安装 OpenShift CLI(oc)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 产品变体 下拉列表中选择架构。
- 从 版本 下拉列表中选择适当的版本。
- 点 OpenShift v4.12 Linux Client 条目旁的 Download Now 来保存文件。
解包存档:
tar xvf <file>
$ tar xvf <file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
oc二进制文件放到PATH 中的目录中。要查看您的
PATH,请执行以下命令:echo $PATH
$ echo $PATHCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
安装 OpenShift CLI 后,可以使用
oc命令:oc <command>
$ oc <command>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在 Windows 上安装 OpenShift CLI
您可以按照以下流程在 Windows 上安装 OpenShift CLI(oc)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 版本 下拉列表中选择适当的版本。
- 点 OpenShift v4.12 Windows Client 条目旁的 Download Now 来保存文件。
- 使用 ZIP 程序解压存档。
将
oc二进制文件移到PATH 中的目录中。要查看您的
PATH,请打开命令提示并执行以下命令:path
C:\> pathCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
安装 OpenShift CLI 后,可以使用
oc命令:oc <command>
C:\> oc <command>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在 macOS 上安装 OpenShift CLI
您可以按照以下流程在 macOS 上安装 OpenShift CLI(oc)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 版本 下拉列表中选择适当的版本。
点 OpenShift v4.12 macOS Client 条目旁的 Download Now 来保存文件。
注意对于 macOS arm64,请选择 OpenShift v4.12 macOS arm64 Client 条目。
- 解包和解压存档。
将
oc二进制文件移到 PATH 的目录中。要查看您的
PATH,请打开终端并执行以下命令:echo $PATH
$ echo $PATHCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
安装 OpenShift CLI 后,可以使用
oc命令:oc <command>
$ oc <command>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.7. 使用 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
5.8. OpenShift Container Platform 的 Telemetry 访问 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 4.12 中,默认运行的 Telemetry 服务提供有关集群健康状况和成功更新的指标,需要访问互联网。如果您的集群连接到互联网,Telemetry 会自动运行,并且集群会注册到 OpenShift Cluster Manager Hybrid Cloud Console。
确认 OpenShift Cluster Manager Hybrid Cloud Console 清单正确后,可以由 Telemetry 自动维护,也可以使用 OpenShift Cluster Manager 手动维护,使用订阅监控来跟踪帐户或多集群级别的 OpenShift Container Platform 订阅。
5.9. 后续步骤 复制链接链接已复制到粘贴板!
第 6 章 使用自定义在 Azure 上安装集群 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 版本 4.12 中,您可以在安装程序在 Microsoft Azure 上置备的基础架构上安装自定义的集群。要自定义安装,请在安装集群前修改 install-config.yaml 文件中的参数。
6.1. 先决条件 复制链接链接已复制到粘贴板!
- 您可以参阅有关 OpenShift Container Platform 安装和更新 流程的详细信息。
- 您可以阅读选择集群安装方法并为用户准备它的文档。
- 您已将 Azure 帐户配置为托管集群,并决定要将集群部署到的已测试和验证的区域。
- 如果使用防火墙,将其配置为允许集群需要访问的站点。
-
如果环境中无法访问云身份和访问管理(IAM)API,或者不想将管理员级别的凭证 secret 存储在
kube-system命名空间中,您可以 手动创建和维护 IAM 凭证。 - 如果您使用客户管理的加密密钥,准备了用于加密的 Azure 环境。
6.2. OpenShift Container Platform 互联网访问 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 4.12 中,您需要访问互联网来安装集群。
您必须具有以下互联网访问权限:
- 访问 OpenShift Cluster Manager Hybrid Cloud Console 以下载安装程序并执行订阅管理。如果集群可以访问互联网,并且没有禁用 Telemetry,该服务会自动授权您的集群。
- 访问 Quay.io,以获取安装集群所需的软件包。
- 获取执行集群更新所需的软件包。
如果您的集群无法直接访问互联网,则可以在置备的某些类型的基础架构上执行受限网络安装。在此过程中,您可以下载所需的内容,并使用它为镜像 registry 填充安装软件包。对于某些安装类型,集群要安装到的环境不需要访问互联网。在更新集群前,您要更新镜像 registry 的内容。
6.3. 为集群节点 SSH 访问生成密钥对 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 安装过程中,您可以为安装程序提供 SSH 公钥。密钥通过它们的 Ignition 配置文件传递给 Red Hat Enterprise Linux CoreOS(RHCOS)节点,用于验证对节点的 SSH 访问。密钥添加到每个节点上 core 用户的 ~/.ssh/authorized_keys 列表中,这将启用免密码身份验证。
将密钥传递给节点后,您可以使用密钥对作为用户 核心 通过 SSH 连接到 RHCOS 节点。若要通过 SSH 访问节点,必须由 SSH 为您的本地用户管理私钥身份。
如果要通过 SSH 连接到集群节点来执行安装调试或灾难恢复,则必须在安装过程中提供 SSH 公钥。./openshift-install gather 命令还需要在集群节点上设置 SSH 公钥。
不要在生产环境中跳过这个过程,在生产环境中需要灾难恢复和调试。
您必须使用本地密钥,而不是使用特定平台方法配置 的密钥,如 AWS 密钥对。
流程
如果您在本地计算机上没有可用于在集群节点上进行身份验证的现有 SSH 密钥对,请创建一个。例如,在使用 Linux 操作系统的计算机上运行以下命令:
ssh-keygen -t ed25519 -N '' -f <path>/<file_name>
$ ssh-keygen -t ed25519 -N '' -f <path>/<file_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定新 SSH 密钥的路径和文件名,如
~/.ssh/id_ed25519。如果您已有密钥对,请确保您的公钥位于~/.ssh目录中。
注意如果您计划在
x86_64、ppc64le和s390x架构上安装使用 FIPS 验证或 Modules In Process 加密库的 OpenShift Container Platform 集群。请不要创建使用ed25519算法的密钥。相反,创建一个使用rsa或ecdsa算法的密钥。查看公共 SSH 密钥:
cat <path>/<file_name>.pub
$ cat <path>/<file_name>.pubCopy to Clipboard Copied! Toggle word wrap Toggle overflow 例如,运行以下命令来查看
~/.ssh/id_ed25519.pub公钥:cat ~/.ssh/id_ed25519.pub
$ cat ~/.ssh/id_ed25519.pubCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将 SSH 私钥身份添加到本地用户的 SSH 代理(如果尚未添加)。在集群节点上,或者要使用
./openshift-install gather命令,需要对该密钥进行 SSH 代理管理,才能在集群节点上进行免密码 SSH 身份验证。注意在某些发行版中,自动管理默认 SSH 私钥身份,如
~/.ssh/id_rsa和~/.ssh/id_dsa。如果
ssh-agent进程尚未为您的本地用户运行,请将其作为后台任务启动:eval "$(ssh-agent -s)"
$ eval "$(ssh-agent -s)"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Agent pid 31874
Agent pid 31874Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果集群处于 FIPS 模式,则只使用 FIPS 兼容算法来生成 SSH 密钥。密钥必须是 RSA 或 ECDSA。
将 SSH 私钥添加到
ssh-agent:ssh-add <path>/<file_name>
$ ssh-add <path>/<file_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定 SSH 私钥的路径和文件名,如
~/.ssh/id_ed25519.pub
输出示例
Identity added: /home/<you>/<path>/<file_name> (<computer_name>)
Identity added: /home/<you>/<path>/<file_name> (<computer_name>)Copy to Clipboard Copied! Toggle word wrap Toggle overflow
后续步骤
- 安装 OpenShift Container Platform 时,为安装程序提供 SSH 公钥。
6.4. 选择 Azure Marketplace 镜像 复制链接链接已复制到粘贴板!
如果要使用 Azure Marketplace 服务部署 OpenShift Container Platform 集群,您必须首先获取 Azure Marketplace 镜像。安装程序使用这个镜像来部署 worker 节点。在获取您的镜像时,请考虑以下事项:
-
虽然镜像相同,但 Azure Marketplace publisher 根据您的区域。如果您位于北美,请将
redhat指定为发布者。如果您位于 EMEA,请将redhat-limited指定为发布者。 -
此项优惠包括
rh-ocp-workerSKU 和rh-ocp-worker-gen1SKU。rh-ocp-workerSKU 代表 Hyper-V 生成版本 2 虚拟机镜像。OpenShift Container Platform 中使用的默认实例类型与版本 2 兼容。如果您计划使用与版本 1 兼容的实例类型,请使用与rh-ocp-worker-gen1SKU 关联的镜像。rh-ocp-worker-gen1SKU 代表 Hyper-V 版本 1 虚拟机镜像。
在使用 64 位 ARM 实例的集群上不支持使用 Azure marketplace 安装镜像。
您应该只修改计算机器的 RHCOS 镜像以使用 Azure Marketplace 镜像。control plane 机器和基础架构节点不需要 OpenShift Container Platform 订阅,且默认使用公共 RHCOS 默认镜像,这不会对 Azure bill 造成订阅成本。因此,您不应该修改集群默认引导镜像或 control plane 引导镜像。将 Azure Marketplace 镜像应用到它们时,会生成无法恢复的额外许可成本。
先决条件
-
已安装 Azure CLI 客户端
(az)。 - 您的 Azure 帐户为产品授权,您使用 Azure CLI 客户端登录到此帐户。
流程
运行以下命令之一,显示所有可用的 OpenShift Container Platform 镜像:
北美:
az vm image list --all --offer rh-ocp-worker --publisher redhat -o table
$ az vm image list --all --offer rh-ocp-worker --publisher redhat -o tableCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Offer Publisher Sku Urn Version ------------- -------------- ------------------ -------------------------------------------------------------- -------------- rh-ocp-worker RedHat rh-ocp-worker RedHat:rh-ocp-worker:rh-ocpworker:4.8.2021122100 4.8.2021122100 rh-ocp-worker RedHat rh-ocp-worker-gen1 RedHat:rh-ocp-worker:rh-ocp-worker-gen1:4.8.2021122100 4.8.2021122100
Offer Publisher Sku Urn Version ------------- -------------- ------------------ -------------------------------------------------------------- -------------- rh-ocp-worker RedHat rh-ocp-worker RedHat:rh-ocp-worker:rh-ocpworker:4.8.2021122100 4.8.2021122100 rh-ocp-worker RedHat rh-ocp-worker-gen1 RedHat:rh-ocp-worker:rh-ocp-worker-gen1:4.8.2021122100 4.8.2021122100Copy to Clipboard Copied! Toggle word wrap Toggle overflow 欧洲、中东和非洲地区:
az vm image list --all --offer rh-ocp-worker --publisher redhat-limited -o table
$ az vm image list --all --offer rh-ocp-worker --publisher redhat-limited -o tableCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Offer Publisher Sku Urn Version ------------- -------------- ------------------ -------------------------------------------------------------- -------------- rh-ocp-worker redhat-limited rh-ocp-worker redhat-limited:rh-ocp-worker:rh-ocp-worker:4.8.2021122100 4.8.2021122100 rh-ocp-worker redhat-limited rh-ocp-worker-gen1 redhat-limited:rh-ocp-worker:rh-ocp-worker-gen1:4.8.2021122100 4.8.2021122100
Offer Publisher Sku Urn Version ------------- -------------- ------------------ -------------------------------------------------------------- -------------- rh-ocp-worker redhat-limited rh-ocp-worker redhat-limited:rh-ocp-worker:rh-ocp-worker:4.8.2021122100 4.8.2021122100 rh-ocp-worker redhat-limited rh-ocp-worker-gen1 redhat-limited:rh-ocp-worker:rh-ocp-worker-gen1:4.8.2021122100 4.8.2021122100Copy to Clipboard Copied! Toggle word wrap Toggle overflow
注意无论您安装的 OpenShift Container Platform 版本是什么,要使用的 Azure Marketplace 镜像的正确版本都是 4.8。如果需要,您的虚拟机会在安装过程中自动升级。
运行以下命令之一检查您的所提供的镜像:
北美:
az vm image show --urn redhat:rh-ocp-worker:rh-ocp-worker:<version>
$ az vm image show --urn redhat:rh-ocp-worker:rh-ocp-worker:<version>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 欧洲、中东和非洲地区:
az vm image show --urn redhat-limited:rh-ocp-worker:rh-ocp-worker:<version>
$ az vm image show --urn redhat-limited:rh-ocp-worker:rh-ocp-worker:<version>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
运行以下命令之一查看提供的术语:
北美:
az vm image terms show --urn redhat:rh-ocp-worker:rh-ocp-worker:<version>
$ az vm image terms show --urn redhat:rh-ocp-worker:rh-ocp-worker:<version>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 欧洲、中东和非洲地区:
az vm image terms show --urn redhat-limited:rh-ocp-worker:rh-ocp-worker:<version>
$ az vm image terms show --urn redhat-limited:rh-ocp-worker:rh-ocp-worker:<version>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
运行以下命令之一接受产品条款:
北美:
az vm image terms accept --urn redhat:rh-ocp-worker:rh-ocp-worker:<version>
$ az vm image terms accept --urn redhat:rh-ocp-worker:rh-ocp-worker:<version>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 欧洲、中东和非洲地区:
az vm image terms accept --urn redhat-limited:rh-ocp-worker:rh-ocp-worker:<version>
$ az vm image terms accept --urn redhat-limited:rh-ocp-worker:rh-ocp-worker:<version>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
记录您的所提供的镜像详情。在部署集群前,您必须使用
publisher,offer,sku, 和version的值来更新install-config.yaml文件中的compute部分。
使用 Azure Marketplace worker 节点的 install-config.yaml 文件示例
6.5. 获取安装程序 复制链接链接已复制到粘贴板!
在安装 OpenShift Container Platform 前,将安装文件下载到您用于安装的主机上。
先决条件
- 您有一台运行 Linux 或 macOS 的计算机,本地磁盘空间为 500 MB。
流程
- 访问 OpenShift Cluster Manager 站点的 Infrastructure Provider 页面。如果您有红帽帐户,请使用您的凭证登录。如果没有,请创建一个帐户。
- 选择您的基础架构供应商。
进入到安装类型的页面,下载与您的主机操作系统和架构对应的安装程序,并将该文件放在您要存储安装配置文件的目录中。
重要安装程序会在用来安装集群的计算机上创建几个文件。在完成集群安装后,您必须保留安装程序和安装程序所创建的文件。这两个文件都需要删除集群。
重要删除安装程序创建的文件不会删除您的集群,即使集群在安装过程中失败也是如此。要删除集群,请为特定云供应商完成 OpenShift Container Platform 卸载流程。
提取安装程序。例如,在使用 Linux 操作系统的计算机上运行以下命令:
tar -xvf openshift-install-linux.tar.gz
$ tar -xvf openshift-install-linux.tar.gzCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 从 Red Hat OpenShift Cluster Manager 下载安装 pull secret。此 pull secret 允许您与所含授权机构提供的服务进行身份验证,这些服务包括为 OpenShift Container Platform 组件提供容器镜像的 Quay.io。
6.6. 创建安装配置文件 复制链接链接已复制到粘贴板!
您可以自定义在 Microsoft Azure 上安装的 OpenShift Container Platform 集群。
先决条件
- 获取 OpenShift Container Platform 安装程序和集群的 pull secret。
- 在订阅级别获取服务主体权限。
流程
创建
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>,请指定要存储安装程序创建的文件的目录名称。
在指定目录时:
-
验证该目录是否具有
执行权限。在安装目录中运行 Terraform 二进制文件需要这个权限。 - 使用空目录。有些安装资产,如 bootstrap X.509 证书的过期间隔较短,因此不得重复使用安装目录。如果要重复使用另一个集群安装中的单个文件,您可以将它们复制到您的目录中。但是,安装资产的文件名可能会在发行版本间有所变化。从以前的 OpenShift Container Platform 版本中复制安装文件时请小心。
在提示符处,提供云的配置详情:
可选: 选择用于访问集群机器的 SSH 密钥。
注意对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定
ssh-agent进程使用的 SSH 密钥。- 选择 azure 作为目标平台。
如果计算机上没有 Microsoft Azure 配置集,请为您的订阅和服务主体指定以下 Azure 参数值:
-
azure subscription id:要用于集群的订阅 ID。指定帐户输出中的
id值。 -
azure tenant id:租户 ID。指定帐户输出中的
tenantId值。 -
azure service principal client id:服务主体的
appId参数值。 -
azure service principal client secret:服务主体的
password参数值。
-
azure subscription id:要用于集群的订阅 ID。指定帐户输出中的
- 选择要在其中部署集群的区域。
- 选择集群要部署到的基域。基域与您为集群创建的 Azure DNS 区对应。
为集群输入一个描述性名称。
重要所有通过公共端点提供的 Azure 资源均存在资源名称的限制,您无法创建使用某些名称的资源。如需 Azure 限制词语列表,请参阅 Azure 文档中的解决保留资源名称错误。
- 粘贴 Red Hat OpenShift Cluster Manager 中的 pull secret。
-
修改
install-config.yaml文件。您可以在"安装配置参数"部分找到有关可用参数的更多信息。 备份
install-config.yaml文件,以便您可以使用它安装多个集群。重要install-config.yaml文件会在安装过程中消耗掉。如果要重复使用该文件,您必须立即备份该文件。
6.6.1. 安装配置参数 复制链接链接已复制到粘贴板!
在部署 OpenShift Container Platform 集群前,您可以提供参数值来描述托管集群的云平台中的帐户,并选择性地自定义集群平台。在创建 install-config.yaml 安装配置文件时,您可以通过命令行为所需参数提供值。如果自定义集群,您可以修改 install-config.yaml 文件以提供有关平台的更多详情。
安装后,您无法在 install-config.yaml 文件中修改这些参数。
6.6.1.1. 所需的配置参数 复制链接链接已复制到粘贴板!
下表描述了所需的安装配置参数:
| 参数 | 描述 | 值 |
|---|---|---|
|
|
| 字符串 |
|
|
云供应商的基域。基域用于创建到 OpenShift Container Platform 集群组件的路由。集群的完整 DNS 名称是 |
完全限定域名或子域名,如 |
|
|
Kubernetes 资源 | 对象 |
|
|
集群的名称。集群的 DNS 记录是 |
小写字母、连字符( |
|
|
要执行安装的具体平台配置: | 对象 |
|
| 从 Red Hat OpenShift Cluster Manager 获取 pull secret,验证从 Quay.io 等服务中下载 OpenShift Container Platform 组件的容器镜像。 |
|
6.6.1.2. 网络配置参数 复制链接链接已复制到粘贴板!
您可以根据现有网络基础架构的要求自定义安装配置。例如,您可以扩展集群网络的 IP 地址块,或者提供不同于默认值的不同 IP 地址块。
仅支持 IPv4 地址。
Red Hat OpenShift Data Foundation 灾难恢复解决方案不支持 Globalnet。对于区域灾难恢复场景,请确保为每个集群中的集群和服务网络使用非重叠的专用 IP 地址。
| 参数 | 描述 | 值 |
|---|---|---|
|
| 集群网络的配置。 | 对象 注意
您无法在安装后修改 |
|
| 要安装的 Red Hat OpenShift Networking 网络插件。 |
|
|
| pod 的 IP 地址块。
默认值为 如果您指定了多个 IP 地址块,块不得重叠。 | 对象数组。例如: networking:
clusterNetwork:
- cidr: 10.128.0.0/14
hostPrefix: 23
|
|
|
使用 IPv4 网络。 |
无类别域间路由(CIDR)表示法中的 IP 地址块。IPv4 块的前缀长度介于 |
|
|
分配给每个节点的子网前缀长度。例如,如果 | 子网前缀。
默认值为 |
|
|
服务的 IP 地址块。默认值为 OpenShift SDN 和 OVN-Kubernetes 网络插件只支持服务网络的一个 IP 地址块。 | CIDR 格式具有 IP 地址块的数组。例如: networking: serviceNetwork: - 172.30.0.0/16
|
|
| 机器的 IP 地址块。 如果您指定了多个 IP 地址块,块不得重叠。 | 对象数组。例如: networking: machineNetwork: - cidr: 10.0.0.0/16
|
|
|
使用 | CIDR 表示法中的 IP 网络块。
例如: 注意
将 |
6.6.1.3. 可选的配置参数 复制链接链接已复制到粘贴板!
下表描述了可选的安装配置参数:
| 参数 | 描述 | 值 |
|---|---|---|
|
| 添加到节点可信证书存储中的 PEM 编码 X.509 证书捆绑包。配置了代理时,也可以使用此信任捆绑包。 | 字符串 |
|
| 控制可选核心组件的安装。您可以通过禁用可选组件来减少 OpenShift Container Platform 集群的空间。如需更多信息,请参阅安装中的"集群功能"页面。 | 字符串数组 |
|
|
选择要启用的一组初始可选功能。有效值为 | 字符串 |
|
|
将可选功能集合扩展到您在 | 字符串数组 |
|
| 组成计算节点的机器的配置。 |
|
|
|
决定池中机器的指令集合架构。目前,不支持具有不同架构的集群。所有池都必须指定相同的架构。有效值为 | 字符串 |
|
|
是否在计算机器上启用或禁用并发多 重要 如果您禁用并发多线程,请确保您的容量规划考虑机器性能显著降低的情况。 |
|
|
|
使用 |
|
|
|
使用 |
|
|
| 要置备的计算机器数量,也称为 worker 机器。 |
大于或等于 |
|
| 为功能集启用集群。功能集是 OpenShift Container Platform 功能的集合,默认情况下不启用。有关在安装过程中启用功能集的更多信息,请参阅"使用功能门启用功能"。 |
字符串.要启用的功能集的名称,如 |
|
| 组成 control plane 的机器的配置。 |
|
|
|
决定池中机器的指令集合架构。目前,不支持具有不同架构的集群。所有池都必须指定相同的架构。有效值为 | 字符串 |
|
|
是否在 control plane 机器上启用或禁用并发多 重要 如果您禁用并发多线程,请确保您的容量规划考虑机器性能显著降低的情况。 |
|
|
|
使用 |
|
|
|
使用 |
|
|
| 要置备的 control plane 机器数量。 |
唯一支持的值是 |
|
| Cloud Credential Operator(CCO)模式。如果没有指定模式,CCO 会动态尝试决定提供的凭证的功能,在支持多个模式的平台上首选 mint 模式。 注意 不是所有 CCO 模式都支持所有云供应商。如需有关 CCO 模式的更多信息,请参阅集群 Operator 参考内容中的 Cloud Credential Operator 条目。 注意
如果您的 AWS 帐户启用了服务控制策略 (SCP),您必须将 |
|
|
|
启用或禁用 FIPS 模式。默认值为 重要
要为集群启用 FIPS 模式,您必须从配置为以 FIPS 模式操作的 Red Hat Enterprise Linux (RHEL) 计算机运行安装程序。有关在 RHEL 中配置 FIPS 模式的更多信息,请参阅在 FIPS 模式中安装该系统。只有在 注意 如果使用 Azure File 存储,则无法启用 FIPS 模式。 |
|
|
| release-image 内容的源和存储库。 |
对象数组。包括一个 |
|
|
使用 | 字符串 |
|
| 指定可能还包含同一镜像的一个或多个仓库。 | 字符串数组 |
|
| 如何发布或公开集群的面向用户的端点,如 Kubernetes API、OpenShift 路由。 |
|
|
| 用于验证对集群机器的访问的 SSH 密钥。 注意
对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定 |
例如, |
6.6.1.4. 其他 Azure 配置参数 复制链接链接已复制到粘贴板!
下表描述了其他 Azure 配置参数。
默认情况下,如果您在 install-config.yaml 文件中指定可用区,安装程序会在一个区(region)内的这些可用区间分发 control plane 机器和计算机器。要确保集群的高可用性,请选择至少含有三个可用区的区域。如果您的区域包含的可用区少于三个,安装程序将在可用区中放置多台 control plane 机器。
| 参数 | 描述 | 值 |
|---|---|---|
|
| 为计算机器启用主机级别的加密。您可以启用这个加密,以及用户管理的服务器端加密。此功能加密虚拟机主机上的临时、临时、缓存和未管理的磁盘。这不是用户管理的服务器端加密的先决条件。 |
|
|
| 虚拟机的 Azure 磁盘大小。 |
以 GB 为单位表示磁盘大小的整数。默认值为 |
|
| 定义磁盘的类型。 |
|
|
| 启用 Azureultra 磁盘用于计算节点上的持久性存储。这需要您的 Azure 区域和区有可用的 ultra 磁盘。 |
|
|
| 包含安装先决条件集中磁盘加密的 Azure 资源组名称。此资源组应和安装集群的资源组不同,以避免在集群销毁时删除 Azure 加密密钥。只有在打算使用用户管理的磁盘加密安装集群时才需要这个值。 |
字符串,如 |
|
| 包含安装先决条件中加密密钥的磁盘加密集名称。 |
字符串,如 |
|
| 定义磁盘加密集所在的磁盘加密集的 Azure 订阅。此辅助磁盘加密集用于加密计算机器。 |
字符串,格式为 |
|
|
启用加速网络。加速网络可让单个根 I/O 虚拟化 (SR-IOV) 为虚拟机提高其网络性能。如果计算机器的实例类型支持 |
|
|
| 为计算机器定义 Azure 实例类型。 | 字符串 |
|
| 安装程序在其中创建计算机器的可用区。 | 字符串列表 |
|
| 为 control plane 机器定义 Azure 实例类型。 | 字符串 |
|
| 安装程序在其中创建 control plane 机器的可用区。 | 字符串列表 |
|
| 为计算机器启用主机级别的加密。您可以启用这个加密,以及用户管理的服务器端加密。此功能加密虚拟机主机上的临时、临时、缓存和未管理的磁盘。这个参数不是用户管理的服务器端加密的先决条件。 |
|
|
| 包含安装先决条件中加密密钥的磁盘加密集名称。 |
字符串,如 |
|
| 包含安装先决条件集中磁盘加密的 Azure 资源组名称。为了避免在集群销毁时删除 Azure 加密密钥,此资源组必须与安装集群的资源组不同。只有在打算使用用户管理的磁盘加密安装集群时才需要这个值。 |
字符串,如 |
|
| 定义磁盘加密集所在的磁盘加密集的 Azure 订阅。此辅助磁盘加密集用于加密计算机器。 |
字符串,格式为 |
|
| 虚拟机的 Azure 磁盘大小。 |
以 GB 为单位表示磁盘大小的整数。默认值为 |
|
| 定义磁盘的类型。 |
|
|
| control plane 和计算机器的 Azure 实例类型。 | Azure 实例类型。 |
|
| 安装程序在其中创建计算和 control plane 机器的可用区。 | 字符串列表。 |
|
| 为 control plane 机器启用主机级别的加密。您可以启用这个加密,以及用户管理的服务器端加密。此功能加密虚拟机主机上的临时、临时、缓存和未管理的磁盘。这不是用户管理的服务器端加密的先决条件。 |
|
|
| 包含安装先决条件集中磁盘加密的 Azure 资源组名称。此资源组应和安装集群的资源组不同,以避免在集群销毁时删除 Azure 加密密钥。只有在打算使用用户管理的磁盘加密安装集群时才需要这个值。 |
字符串,如 |
|
| 包含安装先决条件中加密密钥的磁盘加密集名称。 |
字符串,如 |
|
| 定义磁盘加密集所在的磁盘加密集的 Azure 订阅。这个辅助磁盘加密集用于加密 control plane 机器。 |
字符串,格式为 |
|
| 虚拟机的 Azure 磁盘大小。 |
以 GB 为单位表示磁盘大小的整数。默认值为 |
|
| 定义磁盘的类型。 |
|
|
| 为 control plane 机器上的持久性存储启用 Azureultra 磁盘使用。这需要您的 Azure 区域和区有可用的 ultra 磁盘。 |
|
|
|
启用加速网络。加速网络可让单个根 I/O 虚拟化 (SR-IOV) 为虚拟机提高其网络性能。如果 control plane 机器的实例类型支持 |
|
|
| 包含基域的 DNS 区的资源组的名称。 |
字符串,如 |
|
| 集群要安装到的已有资源组的名称。此资源组必须为空,并且仅用于此特定群集;群集组件假定资源组中所有资源的所有权。如果您将安装程序的服务主体范围限制到这个资源组,您必须确保您的环境中安装程序使用的所有其他资源都有必要的权限,如公共 DNS 区和虚拟网络。使用安装程序销毁集群会删除此资源组。 |
字符串,如 |
|
| 用于将集群连接到互联网的出站路由策略。如果您使用用户定义的路由,则必须在安装集群前配置出站路由。安装程序不负责配置用户定义的路由。 |
|
|
| 托管集群的 Azure 区域的名称。 |
任何有效的区域名称,如 |
|
| 要放入机器的可用区列表。如需高可用性,请至少指定两个区域。 |
区域列表,如 |
|
| 为 control plane 和计算机器上的持久性存储启用 Azureultra 磁盘使用。这需要您的 Azure 区域和区有可用的 ultra 磁盘。 |
|
|
|
包含您要将集群部署到的现有 VNet 的资源组的名称。这个名称不能与 platform. | 字符串. |
|
| 要将集群部署到的现有 VNet 的名称。 | 字符串. |
|
| 要将 control plane 机器部署到的 VNet 中现有子网的名称。 |
有效的 CIDR,如 |
|
| 要将计算机器部署到的 VNet 中现有子网的名称。 |
有效的 CIDR,如 |
|
|
用于使用适当的 Azure API 端点配置 Azure SDK 的 Azure 云环境名称。如果为空,则使用默认值 |
任何有效的云环境,如 |
|
| 启用加速网络。加速网络可让单个根 I/O 虚拟化 (SR-IOV) 为虚拟机提高其网络性能。 |
|
您无法自定义 Azure 可用区,也不能使用 标签来整理 Azure 集群的 Azure 资源。
6.6.2. 集群安装的最低资源要求 复制链接链接已复制到粘贴板!
每台集群机器都必须满足以下最低要求:
| 机器 | 操作系统 | vCPU [1] | 虚拟内存 | Storage | 每秒输入/输出 (IOPS) [2] |
|---|---|---|---|---|---|
| bootstrap | RHCOS | 4 | 16 GB | 100 GB | 300 |
| Control plane(控制平面) | RHCOS | 4 | 16 GB | 100 GB | 300 |
| Compute | RHCOS、RHEL 8.6 及更新版本 [3] | 2 | 8 GB | 100 GB | 300 |
- 当未启用并发多线程(SMT)或超线程时,一个 vCPU 相当于一个物理内核。启用后,使用以下公式来计算对应的比例:(每个内核数的线程)× sockets = vCPU。
- OpenShift Container Platform 和 Kubernetes 对磁盘性能非常敏感,建议使用更快的存储速度,特别是 control plane 节点上需要 10 ms p99 fsync 持续时间的 etcd。请注意,在许多云平台上,存储大小和 IOPS 可一起扩展,因此您可能需要过度分配存储卷来获取足够的性能。
- 与所有用户置备的安装一样,如果您选择在集群中使用 RHEL 计算机器,则负责所有操作系统生命周期管理和维护,包括执行系统更新、应用补丁和完成所有其他必要的任务。RHEL 7 计算机器的使用已弃用,并已在 OpenShift Container Platform 4.10 及更新的版本中删除。
您需要使用将 PremiumIO 参数设置为 true 的 Azure 虚拟机。
如果平台的实例类型满足集群机器的最低要求,则 OpenShift Container Platform 支持使用它。
6.6.3. 为 Azure 测试的实例类型 复制链接链接已复制到粘贴板!
以下 Microsoft Azure 实例类型已经 OpenShift Container Platform 测试。
例 6.1. 基于 64 位 x86 架构的机器类型
-
standardBasv2Family -
standardBSFamily -
standardBsv2Family -
standardDADSv5Family -
standardDASv4Family -
standardDASv5Family -
standardDCACCV5Family -
standardDCADCCV5Family -
standardDCADSv5Family -
standardDCASv5Family -
standardDCSv3Family -
standardDCSv2Family -
standardDDCSv3Family -
standardDDSv4Family -
standardDDSv5Family -
StandardDdsv6Family -
standardDLDSv5Family -
StandardDldsv6Family -
standardDLSv5Family -
StandardDlsv6Family -
standardDSFamily -
standardDSv2Family -
standardDSv2PromoFamily -
standardDSv3Family -
standardDSv4Family -
standardDSv5Family -
StandardDsv6Family -
standardEADSv5Family -
standardEASv4Family -
standardEASv5Family -
standardEBDSv5Family -
standardEBSv5Family -
standardECACCV5Family -
standardECADCCV5Family -
standardECADSv5Family -
standardECASv5Family -
standardEDSv4Family -
standardEDSv5Family -
standardEIADSv5Family -
standardEIASv4Family -
standardEIASv5Family -
standardEIBDSv5Family -
standardEIBSv5Family -
standardEIDSv5Family -
standardEISv3Family -
standardEISv5Family -
standardESv3Family -
standardESv4Family -
standardESv5Family -
standardFXMDVSFamily -
standardFSFamily -
standardFSv2Family -
standardGSFamily -
standardHBrsv2Family -
standardHBSFamily -
standardHBv4Family -
standardHCSFamily -
standardHXFamily -
standardLASv3Family -
standardLasv4Family -
standardLSFamily -
standardLSv2Family -
standardLSv3Family -
standardLsv4Family -
standardMDSHighMemoryv3Family -
standardMDSMediumMemoryv2Family -
standardMDSMediumMemoryv3Family -
standardMIDSHighMemoryv3Family -
standardMIDSMediumMemoryv2Family -
standardMISHighMemoryv3Family -
standardMISMediumMemoryv2Family -
standardMSFamily -
standardMSHighMemoryv3Family -
standardMSMediumMemoryv2Family -
standardMSMediumMemoryv3Family -
StandardNCADSA100v4Family -
Standard NCASv3_T4 Family -
standardNCSv3Family -
standardNDSv2Family -
StandardNGADSV620v1Family -
standardNPSFamily -
StandardNVADSA10v5Family -
StandardNVadsV710v5Family -
Standard NDASv4_A100 Family -
standardNVSv3Family -
standardXEISv4Family
6.6.4. 在 64 位 ARM 基础架构上为 Azure 测试的实例类型 复制链接链接已复制到粘贴板!
以下 Microsoft Azure ARM64 实例类型已使用 OpenShift Container Platform 测试。
例 6.2. 基于 64 位 ARM 架构的机器类型
-
standardBpsv2Family -
standardDPSv5Family -
standardDPDSv5Family -
standardDPLDSv5Family -
standardDPLSv5Family -
standardEPSv5Family -
standardEPDSv5Family -
StandardDpdsv6Family -
StandardDpldsv6Famil -
StandardDplsv6Family -
StandardDpsv6Family -
StandardEpdsv6Family -
StandardEpsv6Family
6.6.5. Azure 的自定义 install-config.yaml 文件示例 复制链接链接已复制到粘贴板!
您可以自定义 install-config.yaml 文件,以指定有关 OpenShift Container Platform 集群平台的更多详情,或修改所需参数的值。
此示例 YAML 文件仅供参考。您必须使用安装程序来获取 install-config.yaml 文件,并进行修改。
- 1 10 13 15
- 必需。安装程序会提示您输入这个值。
- 2 6
- 如果没有提供这些参数和值,安装程序会提供默认值。
- 3 7
controlPlane部分是一个单个映射,但compute部分是一系列映射。为满足不同数据结构的要求,compute部分的第一行必须以连字符-开头,controlPlane部分的第一行则不以连字符开头。仅使用一个 control plane 池。- 4
- 是否要启用或禁用并发多线程或
超线程。默认情况下,启用并发多线程以提高机器内核的性能。您可以通过将 参数值设置为Disabled来禁用它。如果在某些集群机器中禁用并发多线程,则必须在所有集群机器中禁用它。重要如果您禁用并发多线程,请确保您的容量规划考虑机器性能显著降低的情况。如果您禁用并发多线程,请为您的机器使用较大的虚拟机类型,如
Standard_D8s_v3。 - 5 8
- 您可以指定要使用的磁盘大小(以 GB 为单位)。control plane 节点的最低推荐值为 1024 GB。
- 9
- 指定要将机器部署到的区域列表。如需高可用性,请至少指定两个区域。
- 11
- 要安装的集群网络插件。支持的值有
OVNKubernetes和OpenShiftSDN。默认值为OVNKubernetes。 - 12
- 指定包含基域的 DNS 区的资源组的名称。
- 14
- 指定要安装集群的现有资源组的名称。如果未定义,则会为集群创建新的资源组。
- 16
- 是否启用或禁用 FIPS 模式。默认情况下不启用 FIPS 模式。如果启用了 FIPS 模式,运行 OpenShift Container Platform 的 Red Hat Enterprise Linux CoreOS(RHCOS)机器会绕过默认的 Kubernetes 加密套件,并使用由 RHCOS 提供的加密模块。重要
要为集群启用 FIPS 模式,您必须从配置为以 FIPS 模式操作的 Red Hat Enterprise Linux (RHEL) 计算机运行安装程序。有关在 RHEL 中配置 FIPS 模式的更多信息,请参阅在 FIPS 模式中安装该系统。只有在
x86_64、ppc64le和s390x架构的 OpenShift Container Platform 部署中才支持使用 FIPS 验证的或Modules In Process 加密库。 - 17
- 您可以选择提供您用来访问集群中机器的
sshKey值。注意对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定
ssh-agent进程使用的 SSH 密钥。
6.6.6. 在安装过程中配置集群范围的代理 复制链接链接已复制到粘贴板!
生产环境可能会拒绝直接访问互联网,而是提供 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命名空间中生成名为user-ca-bundle的配置映射,其包含代理 HTTPS 连接所需的一个或多个额外 CA 证书。然后,Cluster Network Operator 会创建trusted-ca-bundle配置映射,将这些内容与 Red Hat Enterprise Linux CoreOS(RHCOS)信任捆绑包合并,Proxy对象的trustedCA字段中也会引用此配置映射。additionalTrustBundle字段是必需的,除非代理的身份证书由来自 RHCOS 信任捆绑包的颁发机构签名。 - 5
- 可选:决定
Proxy对象的配置以引用trustedCA字段中user-ca-bundle配置映射的策略。允许的值是Proxyonly和Always。仅在配置了http/https代理时,使用Proxyonly引用user-ca-bundle配置映射。使用Always始终引用user-ca-bundle配置映射。默认值为Proxyonly。
注意安装程序不支持代理的
readinessEndpoints字段。注意如果安装程序超时,重启并使用安装程序的
wait-for命令完成部署。例如:./openshift-install wait-for install-complete --log-level debug
$ ./openshift-install wait-for install-complete --log-level debugCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存该文件并在安装 OpenShift Container Platform 时引用。
安装程序会创建一个名为 cluster 的集群范围代理,该代理 使用 提供的 install-config.yaml 文件中的代理设置。如果没有提供代理设置,仍然会创建一个 cluster Proxy 对象,但它会有一个空 spec。
只支持名为 cluster 的 Proxy 对象,且无法创建额外的代理。
6.7. 部署集群 复制链接链接已复制到粘贴板!
您可以在兼容云平台上安装 OpenShift Container Platform。
在初始安装过程中,您只能运行安装程序的 create cluster 命令一次。
先决条件
- 使用托管集群的云平台配置帐户。
- 获取 OpenShift Container Platform 安装程序和集群的 pull secret。
- 验证主机上的云供应商帐户是否有部署集群的正确权限。权限不正确的帐户会导致安装过程失败,并显示包括缺失权限的错误消息。
流程
进入包含安装程序的目录并初始化集群部署:
./openshift-install create cluster --dir <installation_directory> \ --log-level=info$ ./openshift-install create cluster --dir <installation_directory> \1 --log-level=info2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果您在主机上配置的云供应商帐户没有足够的权限来部署集群,安装过程将停止,并显示缺少的权限。
验证
当集群部署成功完成时:
-
终端会显示用于访问集群的说明,包括指向 Web 控制台和
kubeadmin用户的凭证的链接。 -
凭证信息还会输出到
<installation_directory>/.openshift_install.log.
不要删除安装程序或安装程序所创建的文件。需要这两者才能删除集群。
输出示例
-
安装程序生成的 Ignition 配置文件包含在 24 小时后过期的证书,然后在过期时进行续订。如果在更新证书前关闭集群,且集群在 24 小时后重启,集群会自动恢复过期的证书。一个例外是,您必须手动批准待处理的
node-bootstrapper证书签名请求(CSR)来恢复 kubelet 证书。如需更多信息,请参阅从过期的 control plane 证书 中恢复的文档。 - 建议您在 Ignition 配置文件生成后的 12 小时内使用它们,因为 24 小时的证书会在集群安装后的 16 小时到 22 小时间进行轮转。通过在 12 小时内使用 Ignition 配置文件,您可以避免在安装过程中因为执行了证书更新而导致安装失败的问题。
6.8. 安装后最终调整用户管理的加密 复制链接链接已复制到粘贴板!
如果使用用户管理的加密密钥安装 OpenShift Container Platform,您可以通过创建新存储类并授予 Azure 集群资源组写入权限来完成安装。
流程
获取安装程序使用的集群资源组的身份:
如果在
install-config.yaml中指定了现有资源组,请运行以下命令获取其 Azure 身份:az identity list --resource-group "<existing_resource_group>"
$ az identity list --resource-group "<existing_resource_group>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您没有在
install-config.yaml中指定现有资源组,请找到安装程序创建的资源组,然后运行以下命令来获取其 Azure 身份:az group list
$ az group listCopy to Clipboard Copied! Toggle word wrap Toggle overflow az identity list --resource-group "<installer_created_resource_group>"
$ az identity list --resource-group "<installer_created_resource_group>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
运行以下命令,为集群资源组授予角色分配,使其可以写入 Disk Encryption Set:
az role assignment create --role "<privileged_role>" \ --assignee "<resource_group_identity>"$ az role assignment create --role "<privileged_role>" \1 --assignee "<resource_group_identity>"2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,获取在安装前创建的磁盘加密集的
id:az disk-encryption-set show -n <disk_encryption_set_name> \ --resource-group <resource_group_name>$ az disk-encryption-set show -n <disk_encryption_set_name> \1 --resource-group <resource_group_name>2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,获取集群服务主体的身份:
az identity show -g <cluster_resource_group> \ -n <cluster_service_principal_name> \ --query principalId --out tsv$ az identity show -g <cluster_resource_group> \1 -n <cluster_service_principal_name> \2 --query principalId --out tsvCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,创建一个角色分配,为磁盘加密集授予集群服务主体必要的权限:
az role assignment create --assignee <cluster_service_principal_id> \ --role <privileged_role> \ --scope <disk_encryption_set_id> \$ az role assignment create --assignee <cluster_service_principal_id> \1 --role <privileged_role> \2 --scope <disk_encryption_set_id> \3 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建使用用户管理的磁盘加密集的存储类:
将以下存储类定义保存到文件中,如
storage-class-definition.yaml:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从您创建的文件创建存储类
managed-premium:oc create -f storage-class-definition.yaml
$ oc create -f storage-class-definition.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
在创建持久性卷以使用加密存储时,选择
managed-premium存储类。
6.9. 通过下载二进制文件安装 OpenShift CLI 复制链接链接已复制到粘贴板!
您可以安装 OpenShift CLI(oc)来使用命令行界面与 OpenShift Container Platform 进行交互。您可以在 Linux、Windows 或 macOS 上安装 oc。
如果安装了旧版本的 oc,则无法使用 OpenShift Container Platform 4.12 中的所有命令。下载并安装新版本的 oc。
在 Linux 上安装 OpenShift CLI
您可以按照以下流程在 Linux 上安装 OpenShift CLI(oc)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 产品变体 下拉列表中选择架构。
- 从 版本 下拉列表中选择适当的版本。
- 点 OpenShift v4.12 Linux Client 条目旁的 Download Now 来保存文件。
解包存档:
tar xvf <file>
$ tar xvf <file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
oc二进制文件放到PATH 中的目录中。要查看您的
PATH,请执行以下命令:echo $PATH
$ echo $PATHCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
安装 OpenShift CLI 后,可以使用
oc命令:oc <command>
$ oc <command>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在 Windows 上安装 OpenShift CLI
您可以按照以下流程在 Windows 上安装 OpenShift CLI(oc)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 版本 下拉列表中选择适当的版本。
- 点 OpenShift v4.12 Windows Client 条目旁的 Download Now 来保存文件。
- 使用 ZIP 程序解压存档。
将
oc二进制文件移到PATH 中的目录中。要查看您的
PATH,请打开命令提示并执行以下命令:path
C:\> pathCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
安装 OpenShift CLI 后,可以使用
oc命令:oc <command>
C:\> oc <command>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在 macOS 上安装 OpenShift CLI
您可以按照以下流程在 macOS 上安装 OpenShift CLI(oc)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 版本 下拉列表中选择适当的版本。
点 OpenShift v4.12 macOS Client 条目旁的 Download Now 来保存文件。
注意对于 macOS arm64,请选择 OpenShift v4.12 macOS arm64 Client 条目。
- 解包和解压存档。
将
oc二进制文件移到 PATH 的目录中。要查看您的
PATH,请打开终端并执行以下命令:echo $PATH
$ echo $PATHCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
安装 OpenShift CLI 后,可以使用
oc命令:oc <command>
$ oc <command>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.10. 使用 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.11. OpenShift Container Platform 的 Telemetry 访问 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 4.12 中,默认运行的 Telemetry 服务提供有关集群健康状况和成功更新的指标,需要访问互联网。如果您的集群连接到互联网,Telemetry 会自动运行,并且集群会注册到 OpenShift Cluster Manager Hybrid Cloud Console。
确认 OpenShift Cluster Manager Hybrid Cloud Console 清单正确后,可以由 Telemetry 自动维护,也可以使用 OpenShift Cluster Manager 手动维护,使用订阅监控来跟踪帐户或多集群级别的 OpenShift Container Platform 订阅。
6.12. 后续步骤 复制链接链接已复制到粘贴板!
第 7 章 使用网络自定义在 Azure 上安装集群 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 版本 4.12 中,您可以使用自定义的网络配置在安装程序在 Microsoft Azure 上置备的基础架构上安装集群。通过自定义网络配置,您的集群可以与环境中现有的 IP 地址分配共存,并与现有的 MTU 和 VXLAN 配置集成。
大部分网络配置参数必须在安装过程中设置,只有 kubeProxy 配置参数可以在运行的集群中修改。
7.1. 先决条件 复制链接链接已复制到粘贴板!
- 您可以参阅有关 OpenShift Container Platform 安装和更新 流程的详细信息。
- 您可以阅读选择集群安装方法并为用户准备它的文档。
- 您已将 Azure 帐户配置为托管集群,并决定要将集群部署到的已测试和验证的区域。
- 如果使用防火墙,将其配置为允许集群需要访问的站点。
-
如果环境中无法访问云身份和访问管理(IAM)API,或者不想将管理员级别的凭证 secret 存储在
kube-system命名空间中,您可以手动创建和维护 IAM 凭证。手动模式也可以用于云 IAM API 无法访问的环境中。 - 如果您使用客户管理的加密密钥,准备了用于加密的 Azure 环境。
7.2. OpenShift Container Platform 互联网访问 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 4.12 中,您需要访问互联网来安装集群。
您必须具有以下互联网访问权限:
- 访问 OpenShift Cluster Manager Hybrid Cloud Console 以下载安装程序并执行订阅管理。如果集群可以访问互联网,并且没有禁用 Telemetry,该服务会自动授权您的集群。
- 访问 Quay.io,以获取安装集群所需的软件包。
- 获取执行集群更新所需的软件包。
如果您的集群无法直接访问互联网,则可以在置备的某些类型的基础架构上执行受限网络安装。在此过程中,您可以下载所需的内容,并使用它为镜像 registry 填充安装软件包。对于某些安装类型,集群要安装到的环境不需要访问互联网。在更新集群前,您要更新镜像 registry 的内容。
7.3. 为集群节点 SSH 访问生成密钥对 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 安装过程中,您可以为安装程序提供 SSH 公钥。密钥通过它们的 Ignition 配置文件传递给 Red Hat Enterprise Linux CoreOS(RHCOS)节点,用于验证对节点的 SSH 访问。密钥添加到每个节点上 core 用户的 ~/.ssh/authorized_keys 列表中,这将启用免密码身份验证。
将密钥传递给节点后,您可以使用密钥对作为用户 核心 通过 SSH 连接到 RHCOS 节点。若要通过 SSH 访问节点,必须由 SSH 为您的本地用户管理私钥身份。
如果要通过 SSH 连接到集群节点来执行安装调试或灾难恢复,则必须在安装过程中提供 SSH 公钥。./openshift-install gather 命令还需要在集群节点上设置 SSH 公钥。
不要在生产环境中跳过这个过程,在生产环境中需要灾难恢复和调试。
您必须使用本地密钥,而不是使用特定平台方法配置 的密钥,如 AWS 密钥对。
流程
如果您在本地计算机上没有可用于在集群节点上进行身份验证的现有 SSH 密钥对,请创建一个。例如,在使用 Linux 操作系统的计算机上运行以下命令:
ssh-keygen -t ed25519 -N '' -f <path>/<file_name>
$ ssh-keygen -t ed25519 -N '' -f <path>/<file_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定新 SSH 密钥的路径和文件名,如
~/.ssh/id_ed25519。如果您已有密钥对,请确保您的公钥位于~/.ssh目录中。
注意如果您计划在
x86_64、ppc64le和s390x架构上安装使用 FIPS 验证或 Modules In Process 加密库的 OpenShift Container Platform 集群。请不要创建使用ed25519算法的密钥。相反,创建一个使用rsa或ecdsa算法的密钥。查看公共 SSH 密钥:
cat <path>/<file_name>.pub
$ cat <path>/<file_name>.pubCopy to Clipboard Copied! Toggle word wrap Toggle overflow 例如,运行以下命令来查看
~/.ssh/id_ed25519.pub公钥:cat ~/.ssh/id_ed25519.pub
$ cat ~/.ssh/id_ed25519.pubCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将 SSH 私钥身份添加到本地用户的 SSH 代理(如果尚未添加)。在集群节点上,或者要使用
./openshift-install gather命令,需要对该密钥进行 SSH 代理管理,才能在集群节点上进行免密码 SSH 身份验证。注意在某些发行版中,自动管理默认 SSH 私钥身份,如
~/.ssh/id_rsa和~/.ssh/id_dsa。如果
ssh-agent进程尚未为您的本地用户运行,请将其作为后台任务启动:eval "$(ssh-agent -s)"
$ eval "$(ssh-agent -s)"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Agent pid 31874
Agent pid 31874Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果集群处于 FIPS 模式,则只使用 FIPS 兼容算法来生成 SSH 密钥。密钥必须是 RSA 或 ECDSA。
将 SSH 私钥添加到
ssh-agent:ssh-add <path>/<file_name>
$ ssh-add <path>/<file_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定 SSH 私钥的路径和文件名,如
~/.ssh/id_ed25519.pub
输出示例
Identity added: /home/<you>/<path>/<file_name> (<computer_name>)
Identity added: /home/<you>/<path>/<file_name> (<computer_name>)Copy to Clipboard Copied! Toggle word wrap Toggle overflow
后续步骤
- 安装 OpenShift Container Platform 时,为安装程序提供 SSH 公钥。
7.4. 获取安装程序 复制链接链接已复制到粘贴板!
在安装 OpenShift Container Platform 前,将安装文件下载到您用于安装的主机上。
先决条件
- 您有一台运行 Linux 或 macOS 的计算机,本地磁盘空间为 500 MB。
流程
- 访问 OpenShift Cluster Manager 站点的 Infrastructure Provider 页面。如果您有红帽帐户,请使用您的凭证登录。如果没有,请创建一个帐户。
- 选择您的基础架构供应商。
进入到安装类型的页面,下载与您的主机操作系统和架构对应的安装程序,并将该文件放在您要存储安装配置文件的目录中。
重要安装程序会在用来安装集群的计算机上创建几个文件。在完成集群安装后,您必须保留安装程序和安装程序所创建的文件。这两个文件都需要删除集群。
重要删除安装程序创建的文件不会删除您的集群,即使集群在安装过程中失败也是如此。要删除集群,请为特定云供应商完成 OpenShift Container Platform 卸载流程。
提取安装程序。例如,在使用 Linux 操作系统的计算机上运行以下命令:
tar -xvf openshift-install-linux.tar.gz
$ tar -xvf openshift-install-linux.tar.gzCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 从 Red Hat OpenShift Cluster Manager 下载安装 pull secret。此 pull secret 允许您与所含授权机构提供的服务进行身份验证,这些服务包括为 OpenShift Container Platform 组件提供容器镜像的 Quay.io。
7.5. 创建安装配置文件 复制链接链接已复制到粘贴板!
您可以自定义在 Microsoft Azure 上安装的 OpenShift Container Platform 集群。
先决条件
- 获取 OpenShift Container Platform 安装程序和集群的 pull secret。
- 在订阅级别获取服务主体权限。
流程
创建
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>,请指定要存储安装程序创建的文件的目录名称。
在指定目录时:
-
验证该目录是否具有
执行权限。在安装目录中运行 Terraform 二进制文件需要这个权限。 - 使用空目录。有些安装资产,如 bootstrap X.509 证书的过期间隔较短,因此不得重复使用安装目录。如果要重复使用另一个集群安装中的单个文件,您可以将它们复制到您的目录中。但是,安装资产的文件名可能会在发行版本间有所变化。从以前的 OpenShift Container Platform 版本中复制安装文件时请小心。
在提示符处,提供云的配置详情:
可选: 选择用于访问集群机器的 SSH 密钥。
注意对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定
ssh-agent进程使用的 SSH 密钥。- 选择 azure 作为目标平台。
如果计算机上没有 Microsoft Azure 配置集,请为您的订阅和服务主体指定以下 Azure 参数值:
-
azure subscription id:要用于集群的订阅 ID。指定帐户输出中的
id值。 -
azure tenant id:租户 ID。指定帐户输出中的
tenantId值。 -
azure service principal client id:服务主体的
appId参数值。 -
azure service principal client secret:服务主体的
password参数值。
-
azure subscription id:要用于集群的订阅 ID。指定帐户输出中的
- 选择要在其中部署集群的区域。
- 选择集群要部署到的基域。基域与您为集群创建的 Azure DNS 区对应。
为集群输入一个描述性名称。
重要所有通过公共端点提供的 Azure 资源均存在资源名称的限制,您无法创建使用某些名称的资源。如需 Azure 限制词语列表,请参阅 Azure 文档中的解决保留资源名称错误。
- 粘贴 Red Hat OpenShift Cluster Manager 中的 pull secret。
-
修改
install-config.yaml文件。您可以在"安装配置参数"部分找到有关可用参数的更多信息。 备份
install-config.yaml文件,以便您可以使用它安装多个集群。重要install-config.yaml文件会在安装过程中消耗掉。如果要重复使用该文件,您必须立即备份该文件。
7.5.1. 安装配置参数 复制链接链接已复制到粘贴板!
在部署 OpenShift Container Platform 集群前,您可以提供参数值来描述托管集群的云平台中的帐户,并选择性地自定义集群平台。在创建 install-config.yaml 安装配置文件时,您可以通过命令行为所需参数提供值。如果自定义集群,您可以修改 install-config.yaml 文件以提供有关平台的更多详情。
安装后,您无法在 install-config.yaml 文件中修改这些参数。
7.5.1.1. 所需的配置参数 复制链接链接已复制到粘贴板!
下表描述了所需的安装配置参数:
| 参数 | 描述 | 值 |
|---|---|---|
|
|
| 字符串 |
|
|
云供应商的基域。基域用于创建到 OpenShift Container Platform 集群组件的路由。集群的完整 DNS 名称是 |
完全限定域名或子域名,如 |
|
|
Kubernetes 资源 | 对象 |
|
|
集群的名称。集群的 DNS 记录是 |
小写字母、连字符( |
|
|
要执行安装的具体平台配置: | 对象 |
|
| 从 Red Hat OpenShift Cluster Manager 获取 pull secret,验证从 Quay.io 等服务中下载 OpenShift Container Platform 组件的容器镜像。 |
|
7.5.1.2. 网络配置参数 复制链接链接已复制到粘贴板!
您可以根据现有网络基础架构的要求自定义安装配置。例如,您可以扩展集群网络的 IP 地址块,或者提供不同于默认值的不同 IP 地址块。
仅支持 IPv4 地址。
Red Hat OpenShift Data Foundation 灾难恢复解决方案不支持 Globalnet。对于区域灾难恢复场景,请确保为每个集群中的集群和服务网络使用非重叠的专用 IP 地址。
| 参数 | 描述 | 值 |
|---|---|---|
|
| 集群网络的配置。 | 对象 注意
您无法在安装后修改 |
|
| 要安装的 Red Hat OpenShift Networking 网络插件。 |
|
|
| pod 的 IP 地址块。
默认值为 如果您指定了多个 IP 地址块,块不得重叠。 | 对象数组。例如: networking:
clusterNetwork:
- cidr: 10.128.0.0/14
hostPrefix: 23
|
|
|
使用 IPv4 网络。 |
无类别域间路由(CIDR)表示法中的 IP 地址块。IPv4 块的前缀长度介于 |
|
|
分配给每个节点的子网前缀长度。例如,如果 | 子网前缀。
默认值为 |
|
|
服务的 IP 地址块。默认值为 OpenShift SDN 和 OVN-Kubernetes 网络插件只支持服务网络的一个 IP 地址块。 | CIDR 格式具有 IP 地址块的数组。例如: networking: serviceNetwork: - 172.30.0.0/16
|
|
| 机器的 IP 地址块。 如果您指定了多个 IP 地址块,块不得重叠。 | 对象数组。例如: networking: machineNetwork: - cidr: 10.0.0.0/16
|
|
|
使用 | CIDR 表示法中的 IP 网络块。
例如: 注意
将 |
7.5.1.3. 可选的配置参数 复制链接链接已复制到粘贴板!
下表描述了可选的安装配置参数:
| 参数 | 描述 | 值 |
|---|---|---|
|
| 添加到节点可信证书存储中的 PEM 编码 X.509 证书捆绑包。配置了代理时,也可以使用此信任捆绑包。 | 字符串 |
|
| 控制可选核心组件的安装。您可以通过禁用可选组件来减少 OpenShift Container Platform 集群的空间。如需更多信息,请参阅安装中的"集群功能"页面。 | 字符串数组 |
|
|
选择要启用的一组初始可选功能。有效值为 | 字符串 |
|
|
将可选功能集合扩展到您在 | 字符串数组 |
|
| 组成计算节点的机器的配置。 |
|
|
|
决定池中机器的指令集合架构。目前,不支持具有不同架构的集群。所有池都必须指定相同的架构。有效值为 | 字符串 |
|
|
是否在计算机器上启用或禁用并发多 重要 如果您禁用并发多线程,请确保您的容量规划考虑机器性能显著降低的情况。 |
|
|
|
使用 |
|
|
|
使用 |
|
|
| 要置备的计算机器数量,也称为 worker 机器。 |
大于或等于 |
|
| 为功能集启用集群。功能集是 OpenShift Container Platform 功能的集合,默认情况下不启用。有关在安装过程中启用功能集的更多信息,请参阅"使用功能门启用功能"。 |
字符串.要启用的功能集的名称,如 |
|
| 组成 control plane 的机器的配置。 |
|
|
|
决定池中机器的指令集合架构。目前,不支持具有不同架构的集群。所有池都必须指定相同的架构。有效值为 | 字符串 |
|
|
是否在 control plane 机器上启用或禁用并发多 重要 如果您禁用并发多线程,请确保您的容量规划考虑机器性能显著降低的情况。 |
|
|
|
使用 |
|
|
|
使用 |
|
|
| 要置备的 control plane 机器数量。 |
唯一支持的值是 |
|
| Cloud Credential Operator(CCO)模式。如果没有指定模式,CCO 会动态尝试决定提供的凭证的功能,在支持多个模式的平台上首选 mint 模式。 注意 不是所有 CCO 模式都支持所有云供应商。如需有关 CCO 模式的更多信息,请参阅集群 Operator 参考内容中的 Cloud Credential Operator 条目。 注意
如果您的 AWS 帐户启用了服务控制策略 (SCP),您必须将 |
|
|
|
启用或禁用 FIPS 模式。默认值为 重要
要为集群启用 FIPS 模式,您必须从配置为以 FIPS 模式操作的 Red Hat Enterprise Linux (RHEL) 计算机运行安装程序。有关在 RHEL 中配置 FIPS 模式的更多信息,请参阅在 FIPS 模式中安装该系统。只有在 注意 如果使用 Azure File 存储,则无法启用 FIPS 模式。 |
|
|
| release-image 内容的源和存储库。 |
对象数组。包括一个 |
|
|
使用 | 字符串 |
|
| 指定可能还包含同一镜像的一个或多个仓库。 | 字符串数组 |
|
| 如何发布或公开集群的面向用户的端点,如 Kubernetes API、OpenShift 路由。 |
|
|
| 用于验证对集群机器的访问的 SSH 密钥。 注意
对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定 |
例如, |
7.5.1.4. 其他 Azure 配置参数 复制链接链接已复制到粘贴板!
下表描述了其他 Azure 配置参数。
默认情况下,如果您在 install-config.yaml 文件中指定可用区,安装程序会在一个区(region)内的这些可用区间分发 control plane 机器和计算机器。要确保集群的高可用性,请选择至少含有三个可用区的区域。如果您的区域包含的可用区少于三个,安装程序将在可用区中放置多台 control plane 机器。
| 参数 | 描述 | 值 |
|---|---|---|
|
| 为计算机器启用主机级别的加密。您可以启用这个加密,以及用户管理的服务器端加密。此功能加密虚拟机主机上的临时、临时、缓存和未管理的磁盘。这不是用户管理的服务器端加密的先决条件。 |
|
|
| 虚拟机的 Azure 磁盘大小。 |
以 GB 为单位表示磁盘大小的整数。默认值为 |
|
| 定义磁盘的类型。 |
|
|
| 启用 Azureultra 磁盘用于计算节点上的持久性存储。这需要您的 Azure 区域和区有可用的 ultra 磁盘。 |
|
|
| 包含安装先决条件集中磁盘加密的 Azure 资源组名称。此资源组应和安装集群的资源组不同,以避免在集群销毁时删除 Azure 加密密钥。只有在打算使用用户管理的磁盘加密安装集群时才需要这个值。 |
字符串,如 |
|
| 包含安装先决条件中加密密钥的磁盘加密集名称。 |
字符串,如 |
|
| 定义磁盘加密集所在的磁盘加密集的 Azure 订阅。此辅助磁盘加密集用于加密计算机器。 |
字符串,格式为 |
|
|
启用加速网络。加速网络可让单个根 I/O 虚拟化 (SR-IOV) 为虚拟机提高其网络性能。如果计算机器的实例类型支持 |
|
|
| 为计算机器定义 Azure 实例类型。 | 字符串 |
|
| 安装程序在其中创建计算机器的可用区。 | 字符串列表 |
|
| 为 control plane 机器定义 Azure 实例类型。 | 字符串 |
|
| 安装程序在其中创建 control plane 机器的可用区。 | 字符串列表 |
|
| 为计算机器启用主机级别的加密。您可以启用这个加密,以及用户管理的服务器端加密。此功能加密虚拟机主机上的临时、临时、缓存和未管理的磁盘。这个参数不是用户管理的服务器端加密的先决条件。 |
|
|
| 包含安装先决条件中加密密钥的磁盘加密集名称。 |
字符串,如 |
|
| 包含安装先决条件集中磁盘加密的 Azure 资源组名称。为了避免在集群销毁时删除 Azure 加密密钥,此资源组必须与安装集群的资源组不同。只有在打算使用用户管理的磁盘加密安装集群时才需要这个值。 |
字符串,如 |
|
| 定义磁盘加密集所在的磁盘加密集的 Azure 订阅。此辅助磁盘加密集用于加密计算机器。 |
字符串,格式为 |
|
| 虚拟机的 Azure 磁盘大小。 |
以 GB 为单位表示磁盘大小的整数。默认值为 |
|
| 定义磁盘的类型。 |
|
|
| control plane 和计算机器的 Azure 实例类型。 | Azure 实例类型。 |
|
| 安装程序在其中创建计算和 control plane 机器的可用区。 | 字符串列表。 |
|
| 为 control plane 机器启用主机级别的加密。您可以启用这个加密,以及用户管理的服务器端加密。此功能加密虚拟机主机上的临时、临时、缓存和未管理的磁盘。这不是用户管理的服务器端加密的先决条件。 |
|
|
| 包含安装先决条件集中磁盘加密的 Azure 资源组名称。此资源组应和安装集群的资源组不同,以避免在集群销毁时删除 Azure 加密密钥。只有在打算使用用户管理的磁盘加密安装集群时才需要这个值。 |
字符串,如 |
|
| 包含安装先决条件中加密密钥的磁盘加密集名称。 |
字符串,如 |
|
| 定义磁盘加密集所在的磁盘加密集的 Azure 订阅。这个辅助磁盘加密集用于加密 control plane 机器。 |
字符串,格式为 |
|
| 虚拟机的 Azure 磁盘大小。 |
以 GB 为单位表示磁盘大小的整数。默认值为 |
|
| 定义磁盘的类型。 |
|
|
| 为 control plane 机器上的持久性存储启用 Azureultra 磁盘使用。这需要您的 Azure 区域和区有可用的 ultra 磁盘。 |
|
|
|
启用加速网络。加速网络可让单个根 I/O 虚拟化 (SR-IOV) 为虚拟机提高其网络性能。如果 control plane 机器的实例类型支持 |
|
|
| 包含基域的 DNS 区的资源组的名称。 |
字符串,如 |
|
| 集群要安装到的已有资源组的名称。此资源组必须为空,并且仅用于此特定群集;群集组件假定资源组中所有资源的所有权。如果您将安装程序的服务主体范围限制到这个资源组,您必须确保您的环境中安装程序使用的所有其他资源都有必要的权限,如公共 DNS 区和虚拟网络。使用安装程序销毁集群会删除此资源组。 |
字符串,如 |
|
| 用于将集群连接到互联网的出站路由策略。如果您使用用户定义的路由,则必须在安装集群前配置出站路由。安装程序不负责配置用户定义的路由。 |
|
|
| 托管集群的 Azure 区域的名称。 |
任何有效的区域名称,如 |
|
| 要放入机器的可用区列表。如需高可用性,请至少指定两个区域。 |
区域列表,如 |
|
| 为 control plane 和计算机器上的持久性存储启用 Azureultra 磁盘使用。这需要您的 Azure 区域和区有可用的 ultra 磁盘。 |
|
|
|
包含您要将集群部署到的现有 VNet 的资源组的名称。这个名称不能与 platform. | 字符串. |
|
| 要将集群部署到的现有 VNet 的名称。 | 字符串. |
|
| 要将 control plane 机器部署到的 VNet 中现有子网的名称。 |
有效的 CIDR,如 |
|
| 要将计算机器部署到的 VNet 中现有子网的名称。 |
有效的 CIDR,如 |
|
|
用于使用适当的 Azure API 端点配置 Azure SDK 的 Azure 云环境名称。如果为空,则使用默认值 |
任何有效的云环境,如 |
|
| 启用加速网络。加速网络可让单个根 I/O 虚拟化 (SR-IOV) 为虚拟机提高其网络性能。 |
|
您无法自定义 Azure 可用区,也不能使用 标签来整理 Azure 集群的 Azure 资源。
7.5.2. 集群安装的最低资源要求 复制链接链接已复制到粘贴板!
每台集群机器都必须满足以下最低要求:
| 机器 | 操作系统 | vCPU [1] | 虚拟内存 | Storage | 每秒输入/输出 (IOPS) [2] |
|---|---|---|---|---|---|
| bootstrap | RHCOS | 4 | 16 GB | 100 GB | 300 |
| Control plane(控制平面) | RHCOS | 4 | 16 GB | 100 GB | 300 |
| Compute | RHCOS、RHEL 8.6 及更新版本 [3] | 2 | 8 GB | 100 GB | 300 |
- 当未启用并发多线程(SMT)或超线程时,一个 vCPU 相当于一个物理内核。启用后,使用以下公式来计算对应的比例:(每个内核数的线程)× sockets = vCPU。
- OpenShift Container Platform 和 Kubernetes 对磁盘性能非常敏感,建议使用更快的存储速度,特别是 control plane 节点上需要 10 ms p99 fsync 持续时间的 etcd。请注意,在许多云平台上,存储大小和 IOPS 可一起扩展,因此您可能需要过度分配存储卷来获取足够的性能。
- 与所有用户置备的安装一样,如果您选择在集群中使用 RHEL 计算机器,则负责所有操作系统生命周期管理和维护,包括执行系统更新、应用补丁和完成所有其他必要的任务。RHEL 7 计算机器的使用已弃用,并已在 OpenShift Container Platform 4.10 及更新的版本中删除。
您需要使用将 PremiumIO 参数设置为 true 的 Azure 虚拟机。
如果平台的实例类型满足集群机器的最低要求,则 OpenShift Container Platform 支持使用它。
7.5.3. 为 Azure 测试的实例类型 复制链接链接已复制到粘贴板!
以下 Microsoft Azure 实例类型已经 OpenShift Container Platform 测试。
例 7.1. 基于 64 位 x86 架构的机器类型
-
standardBasv2Family -
standardBSFamily -
standardBsv2Family -
standardDADSv5Family -
standardDASv4Family -
standardDASv5Family -
standardDCACCV5Family -
standardDCADCCV5Family -
standardDCADSv5Family -
standardDCASv5Family -
standardDCSv3Family -
standardDCSv2Family -
standardDDCSv3Family -
standardDDSv4Family -
standardDDSv5Family -
StandardDdsv6Family -
standardDLDSv5Family -
StandardDldsv6Family -
standardDLSv5Family -
StandardDlsv6Family -
standardDSFamily -
standardDSv2Family -
standardDSv2PromoFamily -
standardDSv3Family -
standardDSv4Family -
standardDSv5Family -
StandardDsv6Family -
standardEADSv5Family -
standardEASv4Family -
standardEASv5Family -
standardEBDSv5Family -
standardEBSv5Family -
standardECACCV5Family -
standardECADCCV5Family -
standardECADSv5Family -
standardECASv5Family -
standardEDSv4Family -
standardEDSv5Family -
standardEIADSv5Family -
standardEIASv4Family -
standardEIASv5Family -
standardEIBDSv5Family -
standardEIBSv5Family -
standardEIDSv5Family -
standardEISv3Family -
standardEISv5Family -
standardESv3Family -
standardESv4Family -
standardESv5Family -
standardFXMDVSFamily -
standardFSFamily -
standardFSv2Family -
standardGSFamily -
standardHBrsv2Family -
standardHBSFamily -
standardHBv4Family -
standardHCSFamily -
standardHXFamily -
standardLASv3Family -
standardLasv4Family -
standardLSFamily -
standardLSv2Family -
standardLSv3Family -
standardLsv4Family -
standardMDSHighMemoryv3Family -
standardMDSMediumMemoryv2Family -
standardMDSMediumMemoryv3Family -
standardMIDSHighMemoryv3Family -
standardMIDSMediumMemoryv2Family -
standardMISHighMemoryv3Family -
standardMISMediumMemoryv2Family -
standardMSFamily -
standardMSHighMemoryv3Family -
standardMSMediumMemoryv2Family -
standardMSMediumMemoryv3Family -
StandardNCADSA100v4Family -
Standard NCASv3_T4 Family -
standardNCSv3Family -
standardNDSv2Family -
StandardNGADSV620v1Family -
standardNPSFamily -
StandardNVADSA10v5Family -
StandardNVadsV710v5Family -
Standard NDASv4_A100 Family -
standardNVSv3Family -
standardXEISv4Family
7.5.4. 在 64 位 ARM 基础架构上为 Azure 测试的实例类型 复制链接链接已复制到粘贴板!
以下 Microsoft Azure ARM64 实例类型已使用 OpenShift Container Platform 测试。
例 7.2. 基于 64 位 ARM 架构的机器类型
-
standardBpsv2Family -
standardDPSv5Family -
standardDPDSv5Family -
standardDPLDSv5Family -
standardDPLSv5Family -
standardEPSv5Family -
standardEPDSv5Family -
StandardDpdsv6Family -
StandardDpldsv6Famil -
StandardDplsv6Family -
StandardDpsv6Family -
StandardEpdsv6Family -
StandardEpsv6Family
7.5.5. Azure 的自定义 install-config.yaml 文件示例 复制链接链接已复制到粘贴板!
您可以自定义 install-config.yaml 文件,以指定有关 OpenShift Container Platform 集群平台的更多详情,或修改所需参数的值。
此示例 YAML 文件仅供参考。您必须使用安装程序来获取 install-config.yaml 文件,并进行修改。
- 1 10 14 16
- 必需。安装程序会提示您输入这个值。
- 2 6 11
- 如果没有提供这些参数和值,安装程序会提供默认值。
- 3 7
controlPlane部分是一个单个映射,但compute部分是一系列映射。为满足不同数据结构的要求,compute部分的第一行必须以连字符-开头,controlPlane部分的第一行则不以连字符开头。仅使用一个 control plane 池。- 4
- 是否要启用或禁用并发多线程或
超线程。默认情况下,启用并发多线程以提高机器内核的性能。您可以通过将 参数值设置为Disabled来禁用它。如果在某些集群机器中禁用并发多线程,则必须在所有集群机器中禁用它。重要如果您禁用并发多线程,请确保您的容量规划考虑机器性能显著降低的情况。如果您禁用并发多线程,请为您的机器使用较大的虚拟机类型,如
Standard_D8s_v3。 - 5 8
- 您可以指定要使用的磁盘大小(以 GB 为单位)。control plane 节点的最低推荐值为 1024 GB。
- 9
- 指定要将机器部署到的区域列表。如需高可用性,请至少指定两个区域。
- 12
- 要安装的集群网络插件。支持的值有
OVNKubernetes和OpenShiftSDN。默认值为OVNKubernetes。 - 13
- 指定包含基域的 DNS 区的资源组的名称。
- 15
- 指定要安装集群的现有资源组的名称。如果未定义,则会为集群创建新的资源组。
- 17
- 是否启用或禁用 FIPS 模式。默认情况下不启用 FIPS 模式。如果启用了 FIPS 模式,运行 OpenShift Container Platform 的 Red Hat Enterprise Linux CoreOS(RHCOS)机器会绕过默认的 Kubernetes 加密套件,并使用由 RHCOS 提供的加密模块。重要
要为集群启用 FIPS 模式,您必须从配置为以 FIPS 模式操作的 Red Hat Enterprise Linux (RHEL) 计算机运行安装程序。有关在 RHEL 中配置 FIPS 模式的更多信息,请参阅在 FIPS 模式中安装该系统。只有在
x86_64、ppc64le和s390x架构的 OpenShift Container Platform 部署中才支持使用 FIPS 验证的或Modules In Process 加密库。 - 18
- 您可以选择提供您用来访问集群中机器的
sshKey值。注意对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定
ssh-agent进程使用的 SSH 密钥。
7.5.6. 在安装过程中配置集群范围的代理 复制链接链接已复制到粘贴板!
生产环境可能会拒绝直接访问互联网,而是提供 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命名空间中生成名为user-ca-bundle的配置映射,其包含代理 HTTPS 连接所需的一个或多个额外 CA 证书。然后,Cluster Network Operator 会创建trusted-ca-bundle配置映射,将这些内容与 Red Hat Enterprise Linux CoreOS(RHCOS)信任捆绑包合并,Proxy对象的trustedCA字段中也会引用此配置映射。additionalTrustBundle字段是必需的,除非代理的身份证书由来自 RHCOS 信任捆绑包的颁发机构签名。 - 5
- 可选:决定
Proxy对象的配置以引用trustedCA字段中user-ca-bundle配置映射的策略。允许的值是Proxyonly和Always。仅在配置了http/https代理时,使用Proxyonly引用user-ca-bundle配置映射。使用Always始终引用user-ca-bundle配置映射。默认值为Proxyonly。
注意安装程序不支持代理的
readinessEndpoints字段。注意如果安装程序超时,重启并使用安装程序的
wait-for命令完成部署。例如:./openshift-install wait-for install-complete --log-level debug
$ ./openshift-install wait-for install-complete --log-level debugCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存该文件并在安装 OpenShift Container Platform 时引用。
安装程序会创建一个名为 cluster 的集群范围代理,该代理 使用 提供的 install-config.yaml 文件中的代理设置。如果没有提供代理设置,仍然会创建一个 cluster Proxy 对象,但它会有一个空 spec。
只支持名为 cluster 的 Proxy 对象,且无法创建额外的代理。
7.6. 网络配置阶段 复制链接链接已复制到粘贴板!
OpenShift Container Platform 安装前有两个阶段,您可以在其中自定义网络配置。
- 第 1 阶段
在创建清单文件前,您可以自定义
install-config.yaml文件中的以下与网络相关的字段:-
networking.networkType -
networking.clusterNetwork -
networking.serviceNetwork networking.machineNetwork有关这些字段的更多信息,请参阅 安装配置参数。
注意将
networking.machineNetwork设置为与首选 NIC 所在的 CIDR 匹配。重要CIDR 范围
172.17.0.0/16由 libVirt 保留。对于集群中的任何网络,您无法使用此范围或与这个范围重叠的范围。
-
- 第 2 阶段
-
运行
openshift-install create 清单创建清单文件后,您可以只使用您要修改的字段定义自定义 Cluster Network Operator 清单。您可以使用清单指定高级网络配置。
您不能覆盖在 stage 2 阶段 1 中在 install-config.yaml 文件中指定的值。但是,您可以在第 2 阶段进一步自定义网络插件。
7.7. 指定高级网络配置 复制链接链接已复制到粘贴板!
您可以使用网络插件的高级网络配置将集群集成到现有网络环境中。您只能在安装集群前指定高级网络配置。
不支持通过修改安装程序创建的 OpenShift Container Platform 清单文件来自定义网络配置。支持应用您创建的清单文件,如以下流程中所示。
先决条件
-
您已创建
install-config.yaml文件并完成对其所做的任何修改。
流程
进入包含安装程序的目录并创建清单:
./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文件的目录名称。
在
<installation_directory>/manifests/目录中为高级网络配置创建一个名为 cluster-network-03-config.yml的 stub 清单文件:apiVersion: operator.openshift.io/v1 kind: Network metadata: name: cluster spec:
apiVersion: operator.openshift.io/v1 kind: Network metadata: name: cluster spec:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
cluster-network-03-config.yml文件中指定集群的高级网络配置,如下例所示:为 OpenShift SDN 网络供应商指定不同的 VXLAN 端口
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为 OVN-Kubernetes 网络供应商启用 IPsec
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
可选:备份
manifests/cluster-network-03-config.yml文件。创建 Ignition 配置文件时,安装程序会使用manifests/目录。
7.8. Cluster Network Operator 配置 复制链接链接已复制到粘贴板!
集群网络的配置作为 Cluster Network Operator(CNO)配置的一部分指定,并存储在名为 cluster 的自定义资源(CR)对象中。CR 指定 operator.openshift.io API 组中的 Network API 的字段。
CNO 配置在集群安装过程中从 Network. config.openshift.io API 组中的 Network API 继承以下字段,且这些字段无法更改:
clusterNetwork- 从中分配 Pod IP 地址的 IP 地址池。
serviceNetwork- 服务的 IP 地址池.
defaultNetwork.type- 集群网络插件,如 OpenShift SDN 或 OVN-Kubernetes。
您可以通过在名为 cluster 的 CNO 对象中设置 defaultNetwork 对象的字段来为集群指定集群网络插件配置。
7.8.1. Cluster Network Operator 配置对象 复制链接链接已复制到粘贴板!
下表中描述了 Cluster Network Operator(CNO)的字段:
| 字段 | 类型 | 描述 |
|---|---|---|
|
|
|
CNO 对象的名称。这个名称始终是 |
|
|
| 用于指定从哪些 IP 地址块分配 Pod IP 地址以及集群中每个节点的子网前缀长度的列表。例如:
您只能在创建清单前在 |
|
|
| 服务的 IP 地址块。OpenShift SDN 和 OVN-Kubernetes 网络插件只支持服务网络的一个 IP 地址块。例如: spec: serviceNetwork: - 172.30.0.0/14
您只能在创建清单前在 |
|
|
| 为集群网络配置网络插件。 |
|
|
| 此对象的字段指定 kube-proxy 配置。如果使用 OVN-Kubernetes 集群网络供应商,则 kube-proxy 配置不会起作用。 |
对于需要在多个网络间部署对象的集群,请确保为 install-config.yaml 文件中定义的每种网络类型指定与 clusterNetwork.hostPrefix 参数相同的值。为每个 clusterNetwork.hostPrefix 参数设置不同的值可能会影响 OVN-Kubernetes 网络插件,其中插件无法有效地在不同节点间路由对象流量。
defaultNetwork 对象配置
下表列出了 defaultNetwork 对象的值:
| 字段 | 类型 | 描述 |
|---|---|---|
|
|
|
注意 OpenShift Container Platform 默认使用 OVN-Kubernetes 网络插件。 |
|
|
| 此对象仅对 OpenShift SDN 网络插件有效。 |
|
|
| 此对象仅对 OVN-Kubernetes 网络插件有效。 |
配置 OpenShift SDN 网络插件
下表描述了 OpenShift SDN 网络插件的配置字段:
| 字段 | 类型 | 描述 |
|---|---|---|
|
|
|
配置 OpenShift SDN 的网络隔离模式。默认值为
|
|
|
| VXLAN 覆盖网络的最大传输单元(MTU)。这根据主网络接口的 MTU 自动探测。您通常不需要覆盖检测到的 MTU。 如果自动探测的值不是您期望的值,请确认节点上主网络接口上的 MTU 是否正确。您不能使用这个选项更改节点上主网络接口的 MTU 值。
如果集群中不同节点需要不同的 MTU 值,则必须将此值设置为比集群中的最低 MTU 值小 您可以在集群安装过程中或安装后任务设置值。如需更多信息,请参阅 OpenShift Container Platform 网络文档中的"删除集群网络 MTU"。 |
|
|
|
用于所有 VXLAN 数据包的端口。默认值为 如果您在虚拟环境中运行,且现有节点是另一个 VXLAN 网络的一部分,则可能需要更改此设置。例如,在 VMware NSX-T 上运行 OpenShift SDN 覆盖时,您必须为 VXLAN 选择一个备用端口,因为两个 SDN 都使用相同的默认 VXLAN 端口号。
在 Amazon Web Services(AWS)上,您可以在端口 |
配置 OVN-Kubernetes 网络插件
下表描述了 OVN-Kubernetes 网络插件的配置字段:
| 字段 | 类型 | 描述 |
|---|---|---|
|
|
| Geneve(通用网络虚拟化封装)覆盖网络的最大传输单元(MTU)。这根据主网络接口的 MTU 自动探测。您通常不需要覆盖检测到的 MTU。 如果自动探测的值不是您期望的值,请确认节点上主网络接口上的 MTU 是否正确。您不能使用这个选项更改节点上主网络接口的 MTU 值。
如果集群中不同节点需要不同的 MTU 值,则必须将此值设置为 |
|
|
|
用于所有 Geneve 数据包的端口。默认值为 |
|
|
| 指定一个空对象来启用 IPsec 加密。 |
|
|
| 指定用于自定义网络策略审计日志的配置对象。如果未设置,则使用默认的审计日志设置。 |
|
|
| 可选:指定一个配置对象来自定义如何将出口流量发送到节点网关。 注意 在迁移出口流量时,工作负载和服务流量会受到一定影响,直到 Cluster Network Operator (CNO) 成功推出更改。 |
|
|
如果您的现有网络基础架构与 在安装后无法更改此字段。 |
默认值为 |
|
|
如果您的现有网络基础架构与 在安装后无法更改此字段。 |
默认值为 |
| 字段 | 类型 | 描述 |
|---|---|---|
|
| 整数 |
每个节点每秒生成一次的消息数量上限。默认值为每秒 |
|
| 整数 |
审计日志的最大大小,以字节为单位。默认值为 |
|
| 字符串 | 以下附加审计日志目标之一:
|
|
| 字符串 |
syslog 工具,如 as |
| 字段 | 类型 | 描述 |
|---|---|---|
|
|
|
将此字段设置为 注意
在 OpenShift Container Platform 4.12 中,出口 IP 仅分配给主接口。因此,将
对于依赖于在内核路由表中手动配置路由的高级别安装和应用程序,您可能需要将出口流量路由到主机网络堆栈。默认情况下,出口流量在 OVN 中进行处理以退出集群,不受内核路由表中的特殊路由的影响。默认值为
此字段与 Open vSwitch 硬件卸载功能有交互。如果将此字段设置为 |
启用 IPSec 的 OVN-Kubernetes 配置示例
kubeProxyConfig object configuration
kubeProxyConfig 对象的值在下表中定义:
| 字段 | 类型 | 描述 |
|---|---|---|
|
|
|
注意
由于 OpenShift Container Platform 4.3 及更高版本中引进了性能改进,不再需要调整 |
|
|
|
刷新 kubeProxyConfig:
proxyArguments:
iptables-min-sync-period:
- 0s
|
7.9. 使用 OVN-Kubernetes 配置混合网络 复制链接链接已复制到粘贴板!
您可以将集群配置为使用 OVN-Kubernetes 的混合网络。这允许支持不同节点网络配置的混合集群。例如:集群中运行 Linux 和 Windows 节点时需要这样做。
您必须在安装集群过程中使用 OVN-Kubernetes 配置混合网络。您不能在安装过程中切换到混合网络。
先决条件
-
您在
install-config.yaml文件中为networking.networkType参数定义了OVNKubernetes。如需更多信息,请参阅有关在所选云供应商上配置 OpenShift Container Platform 网络自定义的安装文档。
流程
进入包含安装程序的目录并创建清单:
./openshift-install create manifests --dir <installation_directory>
$ ./openshift-install create manifests --dir <installation_directory>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
<installation_directory>-
指定包含集群的
install-config.yaml文件的目录名称。
在
<installation_directory>/manifests/目录中为高级网络配置创建一个名为 cluster-network-03-config.yml的 stub 清单文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
<installation_directory>-
指定包含集群的
manifests/目录的目录名称。
在编辑器中打开
cluster-network-03-config.yml文件,并使用混合网络配置 OVN-Kubernetes,如下例所示:指定混合网络配置
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定用于额外覆盖网络上节点的 CIDR 配置。
hybridClusterNetworkCIDR 不能与clusterNetworkCIDR 重叠。 - 2
- 为额外覆盖网络指定自定义 VXLAN 端口。这是在 vSphere 上安装的集群中运行 Windows 节点所需要的,且不得为任何其他云供应商配置。自定义端口可以是除默认
4789端口外的任何打开的端口。有关此要求的更多信息,请参阅 Microsoft 文档中的 Pod 到主机间的 pod 连接性。
注意Windows Server Long-Term Servicing Channel(LTSC):Windows Server 2019 在带有自定义
hybridOverlayVXLANPort值的集群中不被支持,因为这个 Windows server 版本不支持选择使用自定义的 VXLAN 端口。-
保存
cluster-network-03-config.yml文件,再退出文本编辑器。 -
可选:备份
manifests/cluster-network-03-config.yml文件。创建集群时,安装程序会删除manifests/目录。
有关在同一集群中使用 Linux 和 Windows 节点的更多信息,请参阅了解 Windows 容器工作负载。
7.10. 部署集群 复制链接链接已复制到粘贴板!
您可以在兼容云平台上安装 OpenShift Container Platform。
在初始安装过程中,您只能运行安装程序的 create cluster 命令一次。
先决条件
- 使用托管集群的云平台配置帐户。
- 获取 OpenShift Container Platform 安装程序和集群的 pull secret。
- 验证主机上的云供应商帐户是否有部署集群的正确权限。权限不正确的帐户会导致安装过程失败,并显示包括缺失权限的错误消息。
流程
进入包含安装程序的目录并初始化集群部署:
./openshift-install create cluster --dir <installation_directory> \ --log-level=info$ ./openshift-install create cluster --dir <installation_directory> \1 --log-level=info2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果您在主机上配置的云供应商帐户没有足够的权限来部署集群,安装过程将停止,并显示缺少的权限。
验证
当集群部署成功完成时:
-
终端会显示用于访问集群的说明,包括指向 Web 控制台和
kubeadmin用户的凭证的链接。 -
凭证信息还会输出到
<installation_directory>/.openshift_install.log.
不要删除安装程序或安装程序所创建的文件。需要这两者才能删除集群。
输出示例
-
安装程序生成的 Ignition 配置文件包含在 24 小时后过期的证书,然后在过期时进行续订。如果在更新证书前关闭集群,且集群在 24 小时后重启,集群会自动恢复过期的证书。一个例外是,您必须手动批准待处理的
node-bootstrapper证书签名请求(CSR)来恢复 kubelet 证书。如需更多信息,请参阅从过期的 control plane 证书 中恢复的文档。 - 建议您在 Ignition 配置文件生成后的 12 小时内使用它们,因为 24 小时的证书会在集群安装后的 16 小时到 22 小时间进行轮转。通过在 12 小时内使用 Ignition 配置文件,您可以避免在安装过程中因为执行了证书更新而导致安装失败的问题。
7.11. 安装后最终调整用户管理的加密 复制链接链接已复制到粘贴板!
如果使用用户管理的加密密钥安装 OpenShift Container Platform,您可以通过创建新存储类并授予 Azure 集群资源组写入权限来完成安装。
流程
获取安装程序使用的集群资源组的身份:
如果在
install-config.yaml中指定了现有资源组,请运行以下命令获取其 Azure 身份:az identity list --resource-group "<existing_resource_group>"
$ az identity list --resource-group "<existing_resource_group>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您没有在
install-config.yaml中指定现有资源组,请找到安装程序创建的资源组,然后运行以下命令来获取其 Azure 身份:az group list
$ az group listCopy to Clipboard Copied! Toggle word wrap Toggle overflow az identity list --resource-group "<installer_created_resource_group>"
$ az identity list --resource-group "<installer_created_resource_group>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
运行以下命令,为集群资源组授予角色分配,使其可以写入 Disk Encryption Set:
az role assignment create --role "<privileged_role>" \ --assignee "<resource_group_identity>"$ az role assignment create --role "<privileged_role>" \1 --assignee "<resource_group_identity>"2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,获取在安装前创建的磁盘加密集的
id:az disk-encryption-set show -n <disk_encryption_set_name> \ --resource-group <resource_group_name>$ az disk-encryption-set show -n <disk_encryption_set_name> \1 --resource-group <resource_group_name>2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,获取集群服务主体的身份:
az identity show -g <cluster_resource_group> \ -n <cluster_service_principal_name> \ --query principalId --out tsv$ az identity show -g <cluster_resource_group> \1 -n <cluster_service_principal_name> \2 --query principalId --out tsvCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,创建一个角色分配,为磁盘加密集授予集群服务主体必要的权限:
az role assignment create --assignee <cluster_service_principal_id> \ --role <privileged_role> \ --scope <disk_encryption_set_id> \$ az role assignment create --assignee <cluster_service_principal_id> \1 --role <privileged_role> \2 --scope <disk_encryption_set_id> \3 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建使用用户管理的磁盘加密集的存储类:
将以下存储类定义保存到文件中,如
storage-class-definition.yaml:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从您创建的文件创建存储类
managed-premium:oc create -f storage-class-definition.yaml
$ oc create -f storage-class-definition.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
在创建持久性卷以使用加密存储时,选择
managed-premium存储类。
7.12. 通过下载二进制文件安装 OpenShift CLI 复制链接链接已复制到粘贴板!
您可以安装 OpenShift CLI(oc)来使用命令行界面与 OpenShift Container Platform 进行交互。您可以在 Linux、Windows 或 macOS 上安装 oc。
如果安装了旧版本的 oc,则无法使用 OpenShift Container Platform 4.12 中的所有命令。下载并安装新版本的 oc。
在 Linux 上安装 OpenShift CLI
您可以按照以下流程在 Linux 上安装 OpenShift CLI(oc)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 产品变体 下拉列表中选择架构。
- 从 版本 下拉列表中选择适当的版本。
- 点 OpenShift v4.12 Linux Client 条目旁的 Download Now 来保存文件。
解包存档:
tar xvf <file>
$ tar xvf <file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
oc二进制文件放到PATH 中的目录中。要查看您的
PATH,请执行以下命令:echo $PATH
$ echo $PATHCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
安装 OpenShift CLI 后,可以使用
oc命令:oc <command>
$ oc <command>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在 Windows 上安装 OpenShift CLI
您可以按照以下流程在 Windows 上安装 OpenShift CLI(oc)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 版本 下拉列表中选择适当的版本。
- 点 OpenShift v4.12 Windows Client 条目旁的 Download Now 来保存文件。
- 使用 ZIP 程序解压存档。
将
oc二进制文件移到PATH 中的目录中。要查看您的
PATH,请打开命令提示并执行以下命令:path
C:\> pathCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
安装 OpenShift CLI 后,可以使用
oc命令:oc <command>
C:\> oc <command>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在 macOS 上安装 OpenShift CLI
您可以按照以下流程在 macOS 上安装 OpenShift CLI(oc)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 版本 下拉列表中选择适当的版本。
点 OpenShift v4.12 macOS Client 条目旁的 Download Now 来保存文件。
注意对于 macOS arm64,请选择 OpenShift v4.12 macOS arm64 Client 条目。
- 解包和解压存档。
将
oc二进制文件移到 PATH 的目录中。要查看您的
PATH,请打开终端并执行以下命令:echo $PATH
$ echo $PATHCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
安装 OpenShift CLI 后,可以使用
oc命令:oc <command>
$ oc <command>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.13. 使用 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
7.14. OpenShift Container Platform 的 Telemetry 访问 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 4.12 中,默认运行的 Telemetry 服务提供有关集群健康状况和成功更新的指标,需要访问互联网。如果您的集群连接到互联网,Telemetry 会自动运行,并且集群会注册到 OpenShift Cluster Manager Hybrid Cloud Console。
确认 OpenShift Cluster Manager Hybrid Cloud Console 清单正确后,可以由 Telemetry 自动维护,也可以使用 OpenShift Cluster Manager 手动维护,使用订阅监控来跟踪帐户或多集群级别的 OpenShift Container Platform 订阅。
7.15. 后续步骤 复制链接链接已复制到粘贴板!
第 8 章 将 Azure 上的集群安装到现有的 VNet 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 版本 4.12 中,您可以在 Microsoft Azure 上将集群安装到现有 Azure Virtual Network(VNet)中。安装程序会置备所需基础架构的其余部分,您可以进一步自定义这些基础架构。要自定义安装,请在安装集群前修改 install-config.yaml 文件中的参数。
8.1. 先决条件 复制链接链接已复制到粘贴板!
- 您可以参阅有关 OpenShift Container Platform 安装和更新 流程的详细信息。
- 您可以阅读选择集群安装方法并为用户准备它的文档。
- 您已将 Azure 帐户配置为托管集群,并决定要将集群部署到的已测试和验证的区域。
- 如果使用防火墙,将其配置为允许集群需要访问的站点。
-
如果环境中无法访问云身份和访问管理(IAM)API,或者不想将管理员级别的凭证 secret 存储在
kube-system命名空间中,您可以 手动创建和维护 IAM 凭证。 - 如果您使用客户管理的加密密钥,准备了用于加密的 Azure 环境。
8.2. 关于为 OpenShift Container Platform 集群重复使用 VNet 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 4.12 中,您可以在 Microsoft Azure 中将集群部署到现有的 Azure Virtual Network(VNet)中。如果您这样做,还必须在 VNet 和路由规则中使用现有子网。
通过将 OpenShift Container Platform 部署到现有的 Azure VNet 中,您可以避免新帐户中的服务限制,或者更容易地利用公司所设置的操作限制。如果您无法获得创建 VNet 所需的基础架构创建权限,则可以使用这个选项。
8.2.1. 使用 VNet 的要求 复制链接链接已复制到粘贴板!
当使用现有 VNet 部署集群时,必须在安装集群前执行额外的网络配置。在安装程序置备的基础架构集群中,安装程序通常会创建以下组件,但在安装到现有 VNet 时不会创建它们:
- 子网
- 路由表
- VNets
- 网络安全组
安装程序要求您使用由云提供的 DNS 服务器。不支持使用自定义 DNS 服务器,并导致安装失败。
如果使用自定义 VNet,您必须正确配置它及其子网,供安装程序和集群使用。安装程序不能为集群分配要使用的网络范围,为子网设置路由表,或者设置类似 DHCP 的 VNet 选项,因此您必须在安装集群前这样做。
集群必须能够访问包含现有 VNet 和子网的资源组。虽然集群创建的所有资源都放在它创建的单独资源组中,但有些网络资源则从单独的组中使用。有些集群 Operator 必须能够访问这两个资源组中的资源。例如,Machine API 控制器会为它创建的虚拟机附加 NICS,以便从网络资源组中进行子网。
您的 VNet 必须满足以下特征:
-
VNet 的 CIDR 块必须包含
Networking.MachineCIDR范围,它是集群机器的 IP 地址池。 - VNet 及其子网必须属于同一资源组,子网必须配置为使用 Azure 分配的 DHCP IP 地址,而不是静态 IP 地址。
您必须在 VNet 中提供两个子网,一个用于 control plane 机器,一个用于计算机器。因为 Azure 在您指定的区域内的不同可用区中分发机器,所以集群将默认具有高可用性。
默认情况下,如果您在 install-config.yaml 文件中指定可用区,安装程序会在一个区(region)内的这些可用区间分发 control plane 机器和计算机器。要确保集群的高可用性,请选择至少含有三个可用区的区域。如果您的区域包含的可用区少于三个,安装程序将在可用区中放置多台 control plane 机器。
为确保您提供的子网适合,安装程序会确认以下数据:
- 所有指定的子网都存在。
- 有两个专用子网,一个用于 control plane 机器,一个用于计算机器。
- 子网 CIDR 属于您指定的机器 CIDR。机器不会在您不为其提供私有子网的可用区中置备。如果需要,安装程序会创建管理 control plane 和 worker 节点的公共负载均衡器,Azure 会为其分配一个公共 IP 地址。
如果您销毁了使用现有 VNet 的集群,则不会删除 VNet。
8.2.1.1. 网络安全组要求 复制链接链接已复制到粘贴板!
托管 compute 和 control plane 机器的子网的网络安全组需要特定的访问权限,以确保集群通信正确。您必须创建规则以允许访问所需的集群通信端口。
在安装集群前,必须先设置网络安全组规则。如果您试图在没有所需访问权限的情况下安装集群,安装程序无法访问 Azure API,安装会失败。
| port | 描述 | Control plane(控制平面) | Compute |
|---|---|---|---|
|
| 允许 HTTP 流量 | x | |
|
| 允许 HTTPS 流量 | x | |
|
| 允许与 control plane 机器通信 | x | |
|
| 允许内部与机器配置服务器通信以用于置备机器 | x |
目前,不支持阻止或限制机器配置服务器端点。机器配置服务器必须公开给网络,以便新置备的机器没有现有配置或状态,才能获取其配置。在这个模型中,信任的根是证书签名请求 (CSR) 端点,即 kubelet 发送其证书签名请求以批准加入集群。因此,机器配置不应用于分发敏感信息,如 secret 和证书。
为确保机器配置服务器端点,端口 22623 和 22624 在裸机场景中是安全的,客户必须配置正确的网络策略。
由于集群组件不会修改 Kubernetes 控制器更新的用户提供的网络安全组,因此为 Kubernetes 控制器在不影响其余环境的情况下创建一个伪网络安全组。
8.2.2. 权限划分 复制链接链接已复制到粘贴板!
从 OpenShift Container Platform 4.3 开始,您不需要安装程序置备的基础架构集群部署所需的所有权限。这与您所在机构可能拥有的权限划分类似:一些个人可以在您的云中创建不同的资源。例如,您可以创建特定于应用程序的对象,如实例、存储和负载均衡器,但不能创建与网络相关的组件,如 VNets、子网或入站规则。
您在创建集群时使用的 Azure 凭证不需要 VNets 和核心网络组件(如子网、路由表、互联网网关、NAT 和 VPN)所需的网络权限。您仍然需要获取集群中的机器需要的应用程序资源的权限,如负载均衡器、安全组、存储帐户和节点。
8.2.3. 集群间隔离 复制链接链接已复制到粘贴板!
因为集群无法修改现有子网中的网络安全组,所以无法在 VNet 中相互隔离集群。
8.3. OpenShift Container Platform 互联网访问 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 4.12 中,您需要访问互联网来安装集群。
您必须具有以下互联网访问权限:
- 访问 OpenShift Cluster Manager Hybrid Cloud Console 以下载安装程序并执行订阅管理。如果集群可以访问互联网,并且没有禁用 Telemetry,该服务会自动授权您的集群。
- 访问 Quay.io,以获取安装集群所需的软件包。
- 获取执行集群更新所需的软件包。
如果您的集群无法直接访问互联网,则可以在置备的某些类型的基础架构上执行受限网络安装。在此过程中,您可以下载所需的内容,并使用它为镜像 registry 填充安装软件包。对于某些安装类型,集群要安装到的环境不需要访问互联网。在更新集群前,您要更新镜像 registry 的内容。
8.4. 为集群节点 SSH 访问生成密钥对 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 安装过程中,您可以为安装程序提供 SSH 公钥。密钥通过它们的 Ignition 配置文件传递给 Red Hat Enterprise Linux CoreOS(RHCOS)节点,用于验证对节点的 SSH 访问。密钥添加到每个节点上 core 用户的 ~/.ssh/authorized_keys 列表中,这将启用免密码身份验证。
将密钥传递给节点后,您可以使用密钥对作为用户 核心 通过 SSH 连接到 RHCOS 节点。若要通过 SSH 访问节点,必须由 SSH 为您的本地用户管理私钥身份。
如果要通过 SSH 连接到集群节点来执行安装调试或灾难恢复,则必须在安装过程中提供 SSH 公钥。./openshift-install gather 命令还需要在集群节点上设置 SSH 公钥。
不要在生产环境中跳过这个过程,在生产环境中需要灾难恢复和调试。
您必须使用本地密钥,而不是使用特定平台方法配置 的密钥,如 AWS 密钥对。
流程
如果您在本地计算机上没有可用于在集群节点上进行身份验证的现有 SSH 密钥对,请创建一个。例如,在使用 Linux 操作系统的计算机上运行以下命令:
ssh-keygen -t ed25519 -N '' -f <path>/<file_name>
$ ssh-keygen -t ed25519 -N '' -f <path>/<file_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定新 SSH 密钥的路径和文件名,如
~/.ssh/id_ed25519。如果您已有密钥对,请确保您的公钥位于~/.ssh目录中。
注意如果您计划在
x86_64、ppc64le和s390x架构上安装使用 FIPS 验证或 Modules In Process 加密库的 OpenShift Container Platform 集群。请不要创建使用ed25519算法的密钥。相反,创建一个使用rsa或ecdsa算法的密钥。查看公共 SSH 密钥:
cat <path>/<file_name>.pub
$ cat <path>/<file_name>.pubCopy to Clipboard Copied! Toggle word wrap Toggle overflow 例如,运行以下命令来查看
~/.ssh/id_ed25519.pub公钥:cat ~/.ssh/id_ed25519.pub
$ cat ~/.ssh/id_ed25519.pubCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将 SSH 私钥身份添加到本地用户的 SSH 代理(如果尚未添加)。在集群节点上,或者要使用
./openshift-install gather命令,需要对该密钥进行 SSH 代理管理,才能在集群节点上进行免密码 SSH 身份验证。注意在某些发行版中,自动管理默认 SSH 私钥身份,如
~/.ssh/id_rsa和~/.ssh/id_dsa。如果
ssh-agent进程尚未为您的本地用户运行,请将其作为后台任务启动:eval "$(ssh-agent -s)"
$ eval "$(ssh-agent -s)"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Agent pid 31874
Agent pid 31874Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果集群处于 FIPS 模式,则只使用 FIPS 兼容算法来生成 SSH 密钥。密钥必须是 RSA 或 ECDSA。
将 SSH 私钥添加到
ssh-agent:ssh-add <path>/<file_name>
$ ssh-add <path>/<file_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定 SSH 私钥的路径和文件名,如
~/.ssh/id_ed25519.pub
输出示例
Identity added: /home/<you>/<path>/<file_name> (<computer_name>)
Identity added: /home/<you>/<path>/<file_name> (<computer_name>)Copy to Clipboard Copied! Toggle word wrap Toggle overflow
后续步骤
- 安装 OpenShift Container Platform 时,为安装程序提供 SSH 公钥。
8.5. 获取安装程序 复制链接链接已复制到粘贴板!
在安装 OpenShift Container Platform 前,将安装文件下载到您用于安装的主机上。
先决条件
- 您有一台运行 Linux 或 macOS 的计算机,本地磁盘空间为 500 MB。
流程
- 访问 OpenShift Cluster Manager 站点的 Infrastructure Provider 页面。如果您有红帽帐户,请使用您的凭证登录。如果没有,请创建一个帐户。
- 选择您的基础架构供应商。
进入到安装类型的页面,下载与您的主机操作系统和架构对应的安装程序,并将该文件放在您要存储安装配置文件的目录中。
重要安装程序会在用来安装集群的计算机上创建几个文件。在完成集群安装后,您必须保留安装程序和安装程序所创建的文件。这两个文件都需要删除集群。
重要删除安装程序创建的文件不会删除您的集群,即使集群在安装过程中失败也是如此。要删除集群,请为特定云供应商完成 OpenShift Container Platform 卸载流程。
提取安装程序。例如,在使用 Linux 操作系统的计算机上运行以下命令:
tar -xvf openshift-install-linux.tar.gz
$ tar -xvf openshift-install-linux.tar.gzCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 从 Red Hat OpenShift Cluster Manager 下载安装 pull secret。此 pull secret 允许您与所含授权机构提供的服务进行身份验证,这些服务包括为 OpenShift Container Platform 组件提供容器镜像的 Quay.io。
8.6. 创建安装配置文件 复制链接链接已复制到粘贴板!
您可以自定义在 Microsoft Azure 上安装的 OpenShift Container Platform 集群。
先决条件
- 获取 OpenShift Container Platform 安装程序和集群的 pull secret。
- 在订阅级别获取服务主体权限。
流程
创建
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>,请指定要存储安装程序创建的文件的目录名称。
在指定目录时:
-
验证该目录是否具有
执行权限。在安装目录中运行 Terraform 二进制文件需要这个权限。 - 使用空目录。有些安装资产,如 bootstrap X.509 证书的过期间隔较短,因此不得重复使用安装目录。如果要重复使用另一个集群安装中的单个文件,您可以将它们复制到您的目录中。但是,安装资产的文件名可能会在发行版本间有所变化。从以前的 OpenShift Container Platform 版本中复制安装文件时请小心。
在提示符处,提供云的配置详情:
可选: 选择用于访问集群机器的 SSH 密钥。
注意对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定
ssh-agent进程使用的 SSH 密钥。- 选择 azure 作为目标平台。
如果计算机上没有 Microsoft Azure 配置集,请为您的订阅和服务主体指定以下 Azure 参数值:
-
azure subscription id:要用于集群的订阅 ID。指定帐户输出中的
id值。 -
azure tenant id:租户 ID。指定帐户输出中的
tenantId值。 -
azure service principal client id:服务主体的
appId参数值。 -
azure service principal client secret:服务主体的
password参数值。
-
azure subscription id:要用于集群的订阅 ID。指定帐户输出中的
- 选择要在其中部署集群的区域。
- 选择集群要部署到的基域。基域与您为集群创建的 Azure DNS 区对应。
为集群输入一个描述性名称。
重要所有通过公共端点提供的 Azure 资源均存在资源名称的限制,您无法创建使用某些名称的资源。如需 Azure 限制词语列表,请参阅 Azure 文档中的解决保留资源名称错误。
- 粘贴 Red Hat OpenShift Cluster Manager 中的 pull secret。
-
修改
install-config.yaml文件。您可以在"安装配置参数"部分找到有关可用参数的更多信息。 备份
install-config.yaml文件,以便您可以使用它安装多个集群。重要install-config.yaml文件会在安装过程中消耗掉。如果要重复使用该文件,您必须立即备份该文件。
8.6.1. 安装配置参数 复制链接链接已复制到粘贴板!
在部署 OpenShift Container Platform 集群前,您可以提供参数值来描述托管集群的云平台中的帐户,并选择性地自定义集群平台。在创建 install-config.yaml 安装配置文件时,您可以通过命令行为所需参数提供值。如果自定义集群,您可以修改 install-config.yaml 文件以提供有关平台的更多详情。
安装后,您无法在 install-config.yaml 文件中修改这些参数。
8.6.1.1. 所需的配置参数 复制链接链接已复制到粘贴板!
下表描述了所需的安装配置参数:
| 参数 | 描述 | 值 |
|---|---|---|
|
|
| 字符串 |
|
|
云供应商的基域。基域用于创建到 OpenShift Container Platform 集群组件的路由。集群的完整 DNS 名称是 |
完全限定域名或子域名,如 |
|
|
Kubernetes 资源 | 对象 |
|
|
集群的名称。集群的 DNS 记录是 |
小写字母、连字符( |
|
|
要执行安装的具体平台配置: | 对象 |
|
| 从 Red Hat OpenShift Cluster Manager 获取 pull secret,验证从 Quay.io 等服务中下载 OpenShift Container Platform 组件的容器镜像。 |
|
8.6.1.2. 网络配置参数 复制链接链接已复制到粘贴板!
您可以根据现有网络基础架构的要求自定义安装配置。例如,您可以扩展集群网络的 IP 地址块,或者提供不同于默认值的不同 IP 地址块。
仅支持 IPv4 地址。
Red Hat OpenShift Data Foundation 灾难恢复解决方案不支持 Globalnet。对于区域灾难恢复场景,请确保为每个集群中的集群和服务网络使用非重叠的专用 IP 地址。
| 参数 | 描述 | 值 |
|---|---|---|
|
| 集群网络的配置。 | 对象 注意
您无法在安装后修改 |
|
| 要安装的 Red Hat OpenShift Networking 网络插件。 |
|
|
| pod 的 IP 地址块。
默认值为 如果您指定了多个 IP 地址块,块不得重叠。 | 对象数组。例如: networking:
clusterNetwork:
- cidr: 10.128.0.0/14
hostPrefix: 23
|
|
|
使用 IPv4 网络。 |
无类别域间路由(CIDR)表示法中的 IP 地址块。IPv4 块的前缀长度介于 |
|
|
分配给每个节点的子网前缀长度。例如,如果 | 子网前缀。
默认值为 |
|
|
服务的 IP 地址块。默认值为 OpenShift SDN 和 OVN-Kubernetes 网络插件只支持服务网络的一个 IP 地址块。 | CIDR 格式具有 IP 地址块的数组。例如: networking: serviceNetwork: - 172.30.0.0/16
|
|
| 机器的 IP 地址块。 如果您指定了多个 IP 地址块,块不得重叠。 | 对象数组。例如: networking: machineNetwork: - cidr: 10.0.0.0/16
|
|
|
使用 | CIDR 表示法中的 IP 网络块。
例如: 注意
将 |
8.6.1.3. 可选的配置参数 复制链接链接已复制到粘贴板!
下表描述了可选的安装配置参数:
| 参数 | 描述 | 值 |
|---|---|---|
|
| 添加到节点可信证书存储中的 PEM 编码 X.509 证书捆绑包。配置了代理时,也可以使用此信任捆绑包。 | 字符串 |
|
| 控制可选核心组件的安装。您可以通过禁用可选组件来减少 OpenShift Container Platform 集群的空间。如需更多信息,请参阅安装中的"集群功能"页面。 | 字符串数组 |
|
|
选择要启用的一组初始可选功能。有效值为 | 字符串 |
|
|
将可选功能集合扩展到您在 | 字符串数组 |
|
| 组成计算节点的机器的配置。 |
|
|
|
决定池中机器的指令集合架构。目前,不支持具有不同架构的集群。所有池都必须指定相同的架构。有效值为 | 字符串 |
|
|
是否在计算机器上启用或禁用并发多 重要 如果您禁用并发多线程,请确保您的容量规划考虑机器性能显著降低的情况。 |
|
|
|
使用 |
|
|
|
使用 |
|
|
| 要置备的计算机器数量,也称为 worker 机器。 |
大于或等于 |
|
| 为功能集启用集群。功能集是 OpenShift Container Platform 功能的集合,默认情况下不启用。有关在安装过程中启用功能集的更多信息,请参阅"使用功能门启用功能"。 |
字符串.要启用的功能集的名称,如 |
|
| 组成 control plane 的机器的配置。 |
|
|
|
决定池中机器的指令集合架构。目前,不支持具有不同架构的集群。所有池都必须指定相同的架构。有效值为 | 字符串 |
|
|
是否在 control plane 机器上启用或禁用并发多 重要 如果您禁用并发多线程,请确保您的容量规划考虑机器性能显著降低的情况。 |
|
|
|
使用 |
|
|
|
使用 |
|
|
| 要置备的 control plane 机器数量。 |
唯一支持的值是 |
|
| Cloud Credential Operator(CCO)模式。如果没有指定模式,CCO 会动态尝试决定提供的凭证的功能,在支持多个模式的平台上首选 mint 模式。 注意 不是所有 CCO 模式都支持所有云供应商。如需有关 CCO 模式的更多信息,请参阅集群 Operator 参考内容中的 Cloud Credential Operator 条目。 注意
如果您的 AWS 帐户启用了服务控制策略 (SCP),您必须将 |
|
|
|
启用或禁用 FIPS 模式。默认值为 重要
要为集群启用 FIPS 模式,您必须从配置为以 FIPS 模式操作的 Red Hat Enterprise Linux (RHEL) 计算机运行安装程序。有关在 RHEL 中配置 FIPS 模式的更多信息,请参阅在 FIPS 模式中安装该系统。只有在 注意 如果使用 Azure File 存储,则无法启用 FIPS 模式。 |
|
|
| release-image 内容的源和存储库。 |
对象数组。包括一个 |
|
|
使用 | 字符串 |
|
| 指定可能还包含同一镜像的一个或多个仓库。 | 字符串数组 |
|
| 如何发布或公开集群的面向用户的端点,如 Kubernetes API、OpenShift 路由。 |
|
|
| 用于验证对集群机器的访问的 SSH 密钥。 注意
对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定 |
例如, |
8.6.1.4. 其他 Azure 配置参数 复制链接链接已复制到粘贴板!
下表描述了其他 Azure 配置参数。
默认情况下,如果您在 install-config.yaml 文件中指定可用区,安装程序会在一个区(region)内的这些可用区间分发 control plane 机器和计算机器。要确保集群的高可用性,请选择至少含有三个可用区的区域。如果您的区域包含的可用区少于三个,安装程序将在可用区中放置多台 control plane 机器。
| 参数 | 描述 | 值 |
|---|---|---|
|
| 为计算机器启用主机级别的加密。您可以启用这个加密,以及用户管理的服务器端加密。此功能加密虚拟机主机上的临时、临时、缓存和未管理的磁盘。这不是用户管理的服务器端加密的先决条件。 |
|
|
| 虚拟机的 Azure 磁盘大小。 |
以 GB 为单位表示磁盘大小的整数。默认值为 |
|
| 定义磁盘的类型。 |
|
|
| 启用 Azureultra 磁盘用于计算节点上的持久性存储。这需要您的 Azure 区域和区有可用的 ultra 磁盘。 |
|
|
| 包含安装先决条件集中磁盘加密的 Azure 资源组名称。此资源组应和安装集群的资源组不同,以避免在集群销毁时删除 Azure 加密密钥。只有在打算使用用户管理的磁盘加密安装集群时才需要这个值。 |
字符串,如 |
|
| 包含安装先决条件中加密密钥的磁盘加密集名称。 |
字符串,如 |
|
| 定义磁盘加密集所在的磁盘加密集的 Azure 订阅。此辅助磁盘加密集用于加密计算机器。 |
字符串,格式为 |
|
|
启用加速网络。加速网络可让单个根 I/O 虚拟化 (SR-IOV) 为虚拟机提高其网络性能。如果计算机器的实例类型支持 |
|
|
| 为计算机器定义 Azure 实例类型。 | 字符串 |
|
| 安装程序在其中创建计算机器的可用区。 | 字符串列表 |
|
| 为 control plane 机器定义 Azure 实例类型。 | 字符串 |
|
| 安装程序在其中创建 control plane 机器的可用区。 | 字符串列表 |
|
| 为计算机器启用主机级别的加密。您可以启用这个加密,以及用户管理的服务器端加密。此功能加密虚拟机主机上的临时、临时、缓存和未管理的磁盘。这个参数不是用户管理的服务器端加密的先决条件。 |
|
|
| 包含安装先决条件中加密密钥的磁盘加密集名称。 |
字符串,如 |
|
| 包含安装先决条件集中磁盘加密的 Azure 资源组名称。为了避免在集群销毁时删除 Azure 加密密钥,此资源组必须与安装集群的资源组不同。只有在打算使用用户管理的磁盘加密安装集群时才需要这个值。 |
字符串,如 |
|
| 定义磁盘加密集所在的磁盘加密集的 Azure 订阅。此辅助磁盘加密集用于加密计算机器。 |
字符串,格式为 |
|
| 虚拟机的 Azure 磁盘大小。 |
以 GB 为单位表示磁盘大小的整数。默认值为 |
|
| 定义磁盘的类型。 |
|
|
| control plane 和计算机器的 Azure 实例类型。 | Azure 实例类型。 |
|
| 安装程序在其中创建计算和 control plane 机器的可用区。 | 字符串列表。 |
|
| 为 control plane 机器启用主机级别的加密。您可以启用这个加密,以及用户管理的服务器端加密。此功能加密虚拟机主机上的临时、临时、缓存和未管理的磁盘。这不是用户管理的服务器端加密的先决条件。 |
|
|
| 包含安装先决条件集中磁盘加密的 Azure 资源组名称。此资源组应和安装集群的资源组不同,以避免在集群销毁时删除 Azure 加密密钥。只有在打算使用用户管理的磁盘加密安装集群时才需要这个值。 |
字符串,如 |
|
| 包含安装先决条件中加密密钥的磁盘加密集名称。 |
字符串,如 |
|
| 定义磁盘加密集所在的磁盘加密集的 Azure 订阅。这个辅助磁盘加密集用于加密 control plane 机器。 |
字符串,格式为 |
|
| 虚拟机的 Azure 磁盘大小。 |
以 GB 为单位表示磁盘大小的整数。默认值为 |
|
| 定义磁盘的类型。 |
|
|
| 为 control plane 机器上的持久性存储启用 Azureultra 磁盘使用。这需要您的 Azure 区域和区有可用的 ultra 磁盘。 |
|
|
|
启用加速网络。加速网络可让单个根 I/O 虚拟化 (SR-IOV) 为虚拟机提高其网络性能。如果 control plane 机器的实例类型支持 |
|
|
| 包含基域的 DNS 区的资源组的名称。 |
字符串,如 |
|
| 集群要安装到的已有资源组的名称。此资源组必须为空,并且仅用于此特定群集;群集组件假定资源组中所有资源的所有权。如果您将安装程序的服务主体范围限制到这个资源组,您必须确保您的环境中安装程序使用的所有其他资源都有必要的权限,如公共 DNS 区和虚拟网络。使用安装程序销毁集群会删除此资源组。 |
字符串,如 |
|
| 用于将集群连接到互联网的出站路由策略。如果您使用用户定义的路由,则必须在安装集群前配置出站路由。安装程序不负责配置用户定义的路由。 |
|
|
| 托管集群的 Azure 区域的名称。 |
任何有效的区域名称,如 |
|
| 要放入机器的可用区列表。如需高可用性,请至少指定两个区域。 |
区域列表,如 |
|
| 为 control plane 和计算机器上的持久性存储启用 Azureultra 磁盘使用。这需要您的 Azure 区域和区有可用的 ultra 磁盘。 |
|
|
|
包含您要将集群部署到的现有 VNet 的资源组的名称。这个名称不能与 platform. | 字符串. |
|
| 要将集群部署到的现有 VNet 的名称。 | 字符串. |
|
| 要将 control plane 机器部署到的 VNet 中现有子网的名称。 |
有效的 CIDR,如 |
|
| 要将计算机器部署到的 VNet 中现有子网的名称。 |
有效的 CIDR,如 |
|
|
用于使用适当的 Azure API 端点配置 Azure SDK 的 Azure 云环境名称。如果为空,则使用默认值 |
任何有效的云环境,如 |
|
| 启用加速网络。加速网络可让单个根 I/O 虚拟化 (SR-IOV) 为虚拟机提高其网络性能。 |
|
您无法自定义 Azure 可用区,也不能使用 标签来整理 Azure 集群的 Azure 资源。
8.6.2. 集群安装的最低资源要求 复制链接链接已复制到粘贴板!
每台集群机器都必须满足以下最低要求:
| 机器 | 操作系统 | vCPU [1] | 虚拟内存 | Storage | 每秒输入/输出 (IOPS) [2] |
|---|---|---|---|---|---|
| bootstrap | RHCOS | 4 | 16 GB | 100 GB | 300 |
| Control plane(控制平面) | RHCOS | 4 | 16 GB | 100 GB | 300 |
| Compute | RHCOS、RHEL 8.6 及更新版本 [3] | 2 | 8 GB | 100 GB | 300 |
- 当未启用并发多线程(SMT)或超线程时,一个 vCPU 相当于一个物理内核。启用后,使用以下公式来计算对应的比例:(每个内核数的线程)× sockets = vCPU。
- OpenShift Container Platform 和 Kubernetes 对磁盘性能非常敏感,建议使用更快的存储速度,特别是 control plane 节点上需要 10 ms p99 fsync 持续时间的 etcd。请注意,在许多云平台上,存储大小和 IOPS 可一起扩展,因此您可能需要过度分配存储卷来获取足够的性能。
- 与所有用户置备的安装一样,如果您选择在集群中使用 RHEL 计算机器,则负责所有操作系统生命周期管理和维护,包括执行系统更新、应用补丁和完成所有其他必要的任务。RHEL 7 计算机器的使用已弃用,并已在 OpenShift Container Platform 4.10 及更新的版本中删除。
您需要使用将 PremiumIO 参数设置为 true 的 Azure 虚拟机。
如果平台的实例类型满足集群机器的最低要求,则 OpenShift Container Platform 支持使用它。
8.6.3. 为 Azure 测试的实例类型 复制链接链接已复制到粘贴板!
以下 Microsoft Azure 实例类型已经 OpenShift Container Platform 测试。
例 8.1. 基于 64 位 x86 架构的机器类型
-
standardBasv2Family -
standardBSFamily -
standardBsv2Family -
standardDADSv5Family -
standardDASv4Family -
standardDASv5Family -
standardDCACCV5Family -
standardDCADCCV5Family -
standardDCADSv5Family -
standardDCASv5Family -
standardDCSv3Family -
standardDCSv2Family -
standardDDCSv3Family -
standardDDSv4Family -
standardDDSv5Family -
StandardDdsv6Family -
standardDLDSv5Family -
StandardDldsv6Family -
standardDLSv5Family -
StandardDlsv6Family -
standardDSFamily -
standardDSv2Family -
standardDSv2PromoFamily -
standardDSv3Family -
standardDSv4Family -
standardDSv5Family -
StandardDsv6Family -
standardEADSv5Family -
standardEASv4Family -
standardEASv5Family -
standardEBDSv5Family -
standardEBSv5Family -
standardECACCV5Family -
standardECADCCV5Family -
standardECADSv5Family -
standardECASv5Family -
standardEDSv4Family -
standardEDSv5Family -
standardEIADSv5Family -
standardEIASv4Family -
standardEIASv5Family -
standardEIBDSv5Family -
standardEIBSv5Family -
standardEIDSv5Family -
standardEISv3Family -
standardEISv5Family -
standardESv3Family -
standardESv4Family -
standardESv5Family -
standardFXMDVSFamily -
standardFSFamily -
standardFSv2Family -
standardGSFamily -
standardHBrsv2Family -
standardHBSFamily -
standardHBv4Family -
standardHCSFamily -
standardHXFamily -
standardLASv3Family -
standardLasv4Family -
standardLSFamily -
standardLSv2Family -
standardLSv3Family -
standardLsv4Family -
standardMDSHighMemoryv3Family -
standardMDSMediumMemoryv2Family -
standardMDSMediumMemoryv3Family -
standardMIDSHighMemoryv3Family -
standardMIDSMediumMemoryv2Family -
standardMISHighMemoryv3Family -
standardMISMediumMemoryv2Family -
standardMSFamily -
standardMSHighMemoryv3Family -
standardMSMediumMemoryv2Family -
standardMSMediumMemoryv3Family -
StandardNCADSA100v4Family -
Standard NCASv3_T4 Family -
standardNCSv3Family -
standardNDSv2Family -
StandardNGADSV620v1Family -
standardNPSFamily -
StandardNVADSA10v5Family -
StandardNVadsV710v5Family -
Standard NDASv4_A100 Family -
standardNVSv3Family -
standardXEISv4Family
8.6.4. 在 64 位 ARM 基础架构上为 Azure 测试的实例类型 复制链接链接已复制到粘贴板!
以下 Microsoft Azure ARM64 实例类型已使用 OpenShift Container Platform 测试。
例 8.2. 基于 64 位 ARM 架构的机器类型
-
standardBpsv2Family -
standardDPSv5Family -
standardDPDSv5Family -
standardDPLDSv5Family -
standardDPLSv5Family -
standardEPSv5Family -
standardEPDSv5Family -
StandardDpdsv6Family -
StandardDpldsv6Famil -
StandardDplsv6Family -
StandardDpsv6Family -
StandardEpdsv6Family -
StandardEpsv6Family
8.6.5. Azure 的自定义 install-config.yaml 文件示例 复制链接链接已复制到粘贴板!
您可以自定义 install-config.yaml 文件,以指定有关 OpenShift Container Platform 集群平台的更多详情,或修改所需参数的值。
此示例 YAML 文件仅供参考。您必须使用安装程序来获取 install-config.yaml 文件,并进行修改。
- 1 10 13 19
- 必需。安装程序会提示您输入这个值。
- 2 6
- 如果没有提供这些参数和值,安装程序会提供默认值。
- 3 7
controlPlane部分是一个单个映射,但compute部分是一系列映射。为满足不同数据结构的要求,compute部分的第一行必须以连字符-开头,controlPlane部分的第一行则不以连字符开头。仅使用一个 control plane 池。- 4
- 是否要启用或禁用并发多线程或
超线程。默认情况下,启用并发多线程以提高机器内核的性能。您可以通过将 参数值设置为Disabled来禁用它。如果在某些集群机器中禁用并发多线程,则必须在所有集群机器中禁用它。重要如果您禁用并发多线程,请确保您的容量规划考虑机器性能显著降低的情况。如果您禁用并发多线程,请为您的机器使用较大的虚拟机类型,如
Standard_D8s_v3。 - 5 8
- 您可以指定要使用的磁盘大小(以 GB 为单位)。control plane 节点的最低推荐值为 1024 GB。
- 9
- 指定要将机器部署到的区域列表。如需高可用性,请至少指定两个区域。
- 11
- 要安装的集群网络插件。支持的值有
OVNKubernetes和OpenShiftSDN。默认值为OVNKubernetes。 - 12
- 指定包含基域的 DNS 区的资源组的名称。
- 14
- 指定要安装集群的现有资源组的名称。如果未定义,则会为集群创建新的资源组。
- 15
- 如果使用现有的 VNet,请指定包含它的资源组的名称。
- 16
- 如果使用现有的 VNet,请指定其名称。
- 17
- 如果使用现有的 VNet,请指定托管 control plane 机器的子网名称。
- 18
- 如果使用现有的 VNet,请指定托管计算机器的子网名称。
- 20
- 是否启用或禁用 FIPS 模式。默认情况下不启用 FIPS 模式。如果启用了 FIPS 模式,运行 OpenShift Container Platform 的 Red Hat Enterprise Linux CoreOS(RHCOS)机器会绕过默认的 Kubernetes 加密套件,并使用由 RHCOS 提供的加密模块。重要
要为集群启用 FIPS 模式,您必须从配置为以 FIPS 模式操作的 Red Hat Enterprise Linux (RHEL) 计算机运行安装程序。有关在 RHEL 中配置 FIPS 模式的更多信息,请参阅在 FIPS 模式中安装该系统。只有在
x86_64、ppc64le和s390x架构的 OpenShift Container Platform 部署中才支持使用 FIPS 验证的或Modules In Process 加密库。 - 21
- 您可以选择提供您用来访问集群中机器的
sshKey值。注意对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定
ssh-agent进程使用的 SSH 密钥。
8.6.6. 在安装过程中配置集群范围的代理 复制链接链接已复制到粘贴板!
生产环境可能会拒绝直接访问互联网,而是提供 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命名空间中生成名为user-ca-bundle的配置映射,其包含代理 HTTPS 连接所需的一个或多个额外 CA 证书。然后,Cluster Network Operator 会创建trusted-ca-bundle配置映射,将这些内容与 Red Hat Enterprise Linux CoreOS(RHCOS)信任捆绑包合并,Proxy对象的trustedCA字段中也会引用此配置映射。additionalTrustBundle字段是必需的,除非代理的身份证书由来自 RHCOS 信任捆绑包的颁发机构签名。 - 5
- 可选:决定
Proxy对象的配置以引用trustedCA字段中user-ca-bundle配置映射的策略。允许的值是Proxyonly和Always。仅在配置了http/https代理时,使用Proxyonly引用user-ca-bundle配置映射。使用Always始终引用user-ca-bundle配置映射。默认值为Proxyonly。
注意安装程序不支持代理的
readinessEndpoints字段。注意如果安装程序超时,重启并使用安装程序的
wait-for命令完成部署。例如:./openshift-install wait-for install-complete --log-level debug
$ ./openshift-install wait-for install-complete --log-level debugCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存该文件并在安装 OpenShift Container Platform 时引用。
安装程序会创建一个名为 cluster 的集群范围代理,该代理 使用 提供的 install-config.yaml 文件中的代理设置。如果没有提供代理设置,仍然会创建一个 cluster Proxy 对象,但它会有一个空 spec。
只支持名为 cluster 的 Proxy 对象,且无法创建额外的代理。
8.7. 部署集群 复制链接链接已复制到粘贴板!
您可以在兼容云平台上安装 OpenShift Container Platform。
在初始安装过程中,您只能运行安装程序的 create cluster 命令一次。
先决条件
- 使用托管集群的云平台配置帐户。
- 获取 OpenShift Container Platform 安装程序和集群的 pull secret。
- 验证主机上的云供应商帐户是否有部署集群的正确权限。权限不正确的帐户会导致安装过程失败,并显示包括缺失权限的错误消息。
流程
进入包含安装程序的目录并初始化集群部署:
./openshift-install create cluster --dir <installation_directory> \ --log-level=info$ ./openshift-install create cluster --dir <installation_directory> \1 --log-level=info2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果您在主机上配置的云供应商帐户没有足够的权限来部署集群,安装过程将停止,并显示缺少的权限。
验证
当集群部署成功完成时:
-
终端会显示用于访问集群的说明,包括指向 Web 控制台和
kubeadmin用户的凭证的链接。 -
凭证信息还会输出到
<installation_directory>/.openshift_install.log.
不要删除安装程序或安装程序所创建的文件。需要这两者才能删除集群。
输出示例
-
安装程序生成的 Ignition 配置文件包含在 24 小时后过期的证书,然后在过期时进行续订。如果在更新证书前关闭集群,且集群在 24 小时后重启,集群会自动恢复过期的证书。一个例外是,您必须手动批准待处理的
node-bootstrapper证书签名请求(CSR)来恢复 kubelet 证书。如需更多信息,请参阅从过期的 control plane 证书 中恢复的文档。 - 建议您在 Ignition 配置文件生成后的 12 小时内使用它们,因为 24 小时的证书会在集群安装后的 16 小时到 22 小时间进行轮转。通过在 12 小时内使用 Ignition 配置文件,您可以避免在安装过程中因为执行了证书更新而导致安装失败的问题。
8.8. 安装后最终调整用户管理的加密 复制链接链接已复制到粘贴板!
如果使用用户管理的加密密钥安装 OpenShift Container Platform,您可以通过创建新存储类并授予 Azure 集群资源组写入权限来完成安装。
流程
获取安装程序使用的集群资源组的身份:
如果在
install-config.yaml中指定了现有资源组,请运行以下命令获取其 Azure 身份:az identity list --resource-group "<existing_resource_group>"
$ az identity list --resource-group "<existing_resource_group>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您没有在
install-config.yaml中指定现有资源组,请找到安装程序创建的资源组,然后运行以下命令来获取其 Azure 身份:az group list
$ az group listCopy to Clipboard Copied! Toggle word wrap Toggle overflow az identity list --resource-group "<installer_created_resource_group>"
$ az identity list --resource-group "<installer_created_resource_group>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
运行以下命令,为集群资源组授予角色分配,使其可以写入 Disk Encryption Set:
az role assignment create --role "<privileged_role>" \ --assignee "<resource_group_identity>"$ az role assignment create --role "<privileged_role>" \1 --assignee "<resource_group_identity>"2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,获取在安装前创建的磁盘加密集的
id:az disk-encryption-set show -n <disk_encryption_set_name> \ --resource-group <resource_group_name>$ az disk-encryption-set show -n <disk_encryption_set_name> \1 --resource-group <resource_group_name>2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,获取集群服务主体的身份:
az identity show -g <cluster_resource_group> \ -n <cluster_service_principal_name> \ --query principalId --out tsv$ az identity show -g <cluster_resource_group> \1 -n <cluster_service_principal_name> \2 --query principalId --out tsvCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,创建一个角色分配,为磁盘加密集授予集群服务主体必要的权限:
az role assignment create --assignee <cluster_service_principal_id> \ --role <privileged_role> \ --scope <disk_encryption_set_id> \$ az role assignment create --assignee <cluster_service_principal_id> \1 --role <privileged_role> \2 --scope <disk_encryption_set_id> \3 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建使用用户管理的磁盘加密集的存储类:
将以下存储类定义保存到文件中,如
storage-class-definition.yaml:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从您创建的文件创建存储类
managed-premium:oc create -f storage-class-definition.yaml
$ oc create -f storage-class-definition.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
在创建持久性卷以使用加密存储时,选择
managed-premium存储类。
8.9. 通过下载二进制文件安装 OpenShift CLI 复制链接链接已复制到粘贴板!
您可以安装 OpenShift CLI(oc)来使用命令行界面与 OpenShift Container Platform 进行交互。您可以在 Linux、Windows 或 macOS 上安装 oc。
如果安装了旧版本的 oc,则无法使用 OpenShift Container Platform 4.12 中的所有命令。下载并安装新版本的 oc。
在 Linux 上安装 OpenShift CLI
您可以按照以下流程在 Linux 上安装 OpenShift CLI(oc)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 产品变体 下拉列表中选择架构。
- 从 版本 下拉列表中选择适当的版本。
- 点 OpenShift v4.12 Linux Client 条目旁的 Download Now 来保存文件。
解包存档:
tar xvf <file>
$ tar xvf <file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
oc二进制文件放到PATH 中的目录中。要查看您的
PATH,请执行以下命令:echo $PATH
$ echo $PATHCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
安装 OpenShift CLI 后,可以使用
oc命令:oc <command>
$ oc <command>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在 Windows 上安装 OpenShift CLI
您可以按照以下流程在 Windows 上安装 OpenShift CLI(oc)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 版本 下拉列表中选择适当的版本。
- 点 OpenShift v4.12 Windows Client 条目旁的 Download Now 来保存文件。
- 使用 ZIP 程序解压存档。
将
oc二进制文件移到PATH 中的目录中。要查看您的
PATH,请打开命令提示并执行以下命令:path
C:\> pathCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
安装 OpenShift CLI 后,可以使用
oc命令:oc <command>
C:\> oc <command>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在 macOS 上安装 OpenShift CLI
您可以按照以下流程在 macOS 上安装 OpenShift CLI(oc)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 版本 下拉列表中选择适当的版本。
点 OpenShift v4.12 macOS Client 条目旁的 Download Now 来保存文件。
注意对于 macOS arm64,请选择 OpenShift v4.12 macOS arm64 Client 条目。
- 解包和解压存档。
将
oc二进制文件移到 PATH 的目录中。要查看您的
PATH,请打开终端并执行以下命令:echo $PATH
$ echo $PATHCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
安装 OpenShift CLI 后,可以使用
oc命令:oc <command>
$ oc <command>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.10. 使用 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
8.11. OpenShift Container Platform 的 Telemetry 访问 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 4.12 中,默认运行的 Telemetry 服务提供有关集群健康状况和成功更新的指标,需要访问互联网。如果您的集群连接到互联网,Telemetry 会自动运行,并且集群会注册到 OpenShift Cluster Manager Hybrid Cloud Console。
确认 OpenShift Cluster Manager Hybrid Cloud Console 清单正确后,可以由 Telemetry 自动维护,也可以使用 OpenShift Cluster Manager 手动维护,使用订阅监控来跟踪帐户或多集群级别的 OpenShift Container Platform 订阅。
8.12. 后续步骤 复制链接链接已复制到粘贴板!
第 9 章 在 Azure 上安装私有集群 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 版本 4.12 中,您可以在 Microsoft Azure 上将私有集群安装到现有 Azure Virtual Network (VNet) 中。安装程序会置备所需基础架构的其余部分,您可以进一步自定义这些基础架构。要自定义安装,请在安装集群前修改 install-config.yaml 文件中的参数。
9.1. 先决条件 复制链接链接已复制到粘贴板!
- 您可以参阅有关 OpenShift Container Platform 安装和更新 流程的详细信息。
- 您可以阅读选择集群安装方法并为用户准备它的文档。
- 您已将 Azure 帐户配置为托管集群,并决定要将集群部署到的已测试和验证的区域。
- 如果使用防火墙,将其配置为允许集群需要访问的站点。
-
如果环境中无法访问云身份和访问管理(IAM)API,或者不想将管理员级别的凭证 secret 存储在
kube-system命名空间中,您可以 手动创建和维护 IAM 凭证。 - 如果您使用客户管理的加密密钥,准备了用于加密的 Azure 环境。
9.2. 私有集群 复制链接链接已复制到粘贴板!
您可以部署不公开外部端点的私有 OpenShift Container Platform 集群。私有集群只能从内部网络访问,且无法在互联网中看到。
默认情况下,OpenShift Container Platform 被置备为使用可公开访问的 DNS 和端点。在部署集群时,私有集群会将 DNS、Ingress Controller 和 API 服务器设置为私有。这意味着集群资源只能从您的内部网络访问,且不能在互联网中看到。
如果集群有任何公共子网,管理员创建的负载均衡器服务可能会公开访问。为确保集群安全性,请验证这些服务是否已明确标注为私有。
要部署私有集群,您必须:
- 使用满足您的要求的现有网络。集群资源可能会在网络上的其他集群间共享。
从有权访问的机器中部署:
- 您置备的云的 API 服务。
- 您调配的网络上的主机。
- 用于获取安装介质的互联网。
您可以使用符合这些访问要求的机器,并按照您的公司规定进行操作。例如,此机器可以是云网络上的堡垒主机,也可以是可通过 VPN 访问网络的机器。
9.2.1. Azure 中的私有集群 复制链接链接已复制到粘贴板!
要在 Microsoft Azure 上创建私有集群,您必须提供一个现有的私有 VNet 和子网来托管集群。安装程序还必须能够解析集群所需的 DNS 记录。安装程序只为内部流量配置 Ingress Operator 和 API 服务器。
根据您的网络如何连接到私有 VNET,您可能需要使用 DNS 转发器来解析集群的私有 DNS 记录。集群的机器在内部使用 168.63.129.16 进行 DNS 解析。如需更多信息,请参阅 Azure 文档中的 What is Azure Private DNS? 和 What is IP address 168.63.129.16??。
集群仍然需要访问互联网来访问 Azure API。
安装私有集群时不需要或创建以下项目:
-
BaseDomainResourceGroup,因为集群不会创建公共记录 - 公共 IP 地址
- 公共 DNS 记录
公共端点
The cluster is configured so that the Operators do not create public records for the cluster and all cluster machines are placed in the private subnets that you specify.
The cluster is configured so that the Operators do not create public records for the cluster and all cluster machines are placed in the private subnets that you specify.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.2.1.1. 限制 复制链接链接已复制到粘贴板!
Azure 上的私有集群只受到与使用现有 VNet 相关的限制。
9.2.2. 用户定义的出站路由 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 中,您可以选择自己的出站路由来连接到互联网。这可让您跳过创建公共 IP 地址和公共负载均衡器的步骤。
您可在安装集群前修改 install-config.yaml 文件中的参数来配置用户定义的路由。安装集群时,需要一个已存在的 VNet 来使用出站路由,安装程序不负责配置它。
当将集群配置为使用用户定义的路由时,安装程序不会创建以下资源:
- 用于访问互联网的出站规则。
- 公共负载均衡器的公共 IP。
- Kubernetes Service 对象,为出站请求将集群机器添加到公共负载均衡器中。
在设置用户定义的路由前,您必须确保以下项目可用:
- 出口到互联网可以拉取容器镜像,除非使用 OpenShift image registry 镜像。
- 集群可以访问 Azure API。
- 配置了各种允许列表端点。您可以在 配置防火墙 部分引用这些端点。
支持一些已存在的网络设置,使用用户定义的路由访问互联网。
带有网络地址转换的私有集群
您可以使用 Azure VNET 网络地址转换(NAT) 为集群中的子网提供出站互联网访问。请参阅 Azure 文档中的 使用 Azure CLI 创建 NAT 网关。
使用 Azure NAT 和用户定义的路由的 VNet 设置时,您可以创建没有公共端点的私有集群。
使用 Azure 防火墙的私有集群
您可以使用 Azure Firewall 为用来安装集群的 VNet 提供出站路由。请参阅 Azure 文档中的Azure Firewall 提供用户定义的路由 的更多信息。
使用 Azure Firewall 和用户定义的路由的 VNet 设置时,您可以创建没有公共端点的私有集群。
带有代理配置的私有集群
您可以使用带有用户定义的路由的代理来允许到互联网的出口。您必须确保集群 Operator 不使用代理访问 Azure API。Operator 必须有权访问代理外的 Azure API。
当使用子网的默认路由表时,Azure 会自动填充0.0.0.0/0,所有 Azure API 请求都会通过 Azure 的内部网络路由,即使 IP 地址是公共的。只要网络安全组规则允许出口到 Azure API 端点,配置了用户定义的路由的代理就可以在没有公共端点的情况下创建私有集群。
没有互联网访问的私有集群
您可以安装专用网络,以限制对互联网的访问,但 Azure API 除外。这可以通过在本地镜像 registry 来完成。您的集群必须有权访问以下内容:
- 允许拉取容器镜像的 OpenShift image registry 镜像
- 访问 Azure API
在满足这些要求时,您可以使用用户定义的路由来创建没有公共端点的私有集群。
9.3. 关于为 OpenShift Container Platform 集群重复使用 VNet 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 4.12 中,您可以在 Microsoft Azure 中将集群部署到现有的 Azure Virtual Network(VNet)中。如果您这样做,还必须在 VNet 和路由规则中使用现有子网。
通过将 OpenShift Container Platform 部署到现有的 Azure VNet 中,您可以避免新帐户中的服务限制,或者更容易地利用公司所设置的操作限制。如果您无法获得创建 VNet 所需的基础架构创建权限,则可以使用这个选项。
9.3.1. 使用 VNet 的要求 复制链接链接已复制到粘贴板!
当使用现有 VNet 部署集群时,必须在安装集群前执行额外的网络配置。在安装程序置备的基础架构集群中,安装程序通常会创建以下组件,但在安装到现有 VNet 时不会创建它们:
- 子网
- 路由表
- VNets
- 网络安全组
安装程序要求您使用由云提供的 DNS 服务器。不支持使用自定义 DNS 服务器,并导致安装失败。
如果使用自定义 VNet,您必须正确配置它及其子网,供安装程序和集群使用。安装程序不能为集群分配要使用的网络范围,为子网设置路由表,或者设置类似 DHCP 的 VNet 选项,因此您必须在安装集群前这样做。
集群必须能够访问包含现有 VNet 和子网的资源组。虽然集群创建的所有资源都放在它创建的单独资源组中,但有些网络资源则从单独的组中使用。有些集群 Operator 必须能够访问这两个资源组中的资源。例如,Machine API 控制器会为它创建的虚拟机附加 NICS,以便从网络资源组中进行子网。
您的 VNet 必须满足以下特征:
-
VNet 的 CIDR 块必须包含
Networking.MachineCIDR范围,它是集群机器的 IP 地址池。 - VNet 及其子网必须属于同一资源组,子网必须配置为使用 Azure 分配的 DHCP IP 地址,而不是静态 IP 地址。
您必须在 VNet 中提供两个子网,一个用于 control plane 机器,一个用于计算机器。因为 Azure 在您指定的区域内的不同可用区中分发机器,所以集群将默认具有高可用性。
默认情况下,如果您在 install-config.yaml 文件中指定可用区,安装程序会在一个区(region)内的这些可用区间分发 control plane 机器和计算机器。要确保集群的高可用性,请选择至少含有三个可用区的区域。如果您的区域包含的可用区少于三个,安装程序将在可用区中放置多台 control plane 机器。
为确保您提供的子网适合,安装程序会确认以下数据:
- 所有指定的子网都存在。
- 有两个专用子网,一个用于 control plane 机器,一个用于计算机器。
- 子网 CIDR 属于您指定的机器 CIDR。机器不会在没有为其提供私有子网的可用区中置备。
如果您销毁了使用现有 VNet 的集群,则不会删除 VNet。
9.3.1.1. 网络安全组要求 复制链接链接已复制到粘贴板!
托管 compute 和 control plane 机器的子网的网络安全组需要特定的访问权限,以确保集群通信正确。您必须创建规则以允许访问所需的集群通信端口。
在安装集群前,必须先设置网络安全组规则。如果您试图在没有所需访问权限的情况下安装集群,安装程序无法访问 Azure API,安装会失败。
| port | 描述 | Control plane(控制平面) | Compute |
|---|---|---|---|
|
| 允许 HTTP 流量 | x | |
|
| 允许 HTTPS 流量 | x | |
|
| 允许与 control plane 机器通信 | x | |
|
| 允许内部与机器配置服务器通信以用于置备机器 | x |
目前,不支持阻止或限制机器配置服务器端点。机器配置服务器必须公开给网络,以便新置备的机器没有现有配置或状态,才能获取其配置。在这个模型中,信任的根是证书签名请求 (CSR) 端点,即 kubelet 发送其证书签名请求以批准加入集群。因此,机器配置不应用于分发敏感信息,如 secret 和证书。
为确保机器配置服务器端点,端口 22623 和 22624 在裸机场景中是安全的,客户必须配置正确的网络策略。
由于集群组件不会修改 Kubernetes 控制器更新的用户提供的网络安全组,因此为 Kubernetes 控制器在不影响其余环境的情况下创建一个伪网络安全组。
9.3.2. 权限划分 复制链接链接已复制到粘贴板!
从 OpenShift Container Platform 4.3 开始,您不需要安装程序置备的基础架构集群部署所需的所有权限。这与您所在机构可能拥有的权限划分类似:一些个人可以在您的云中创建不同的资源。例如,您可以创建特定于应用程序的对象,如实例、存储和负载均衡器,但不能创建与网络相关的组件,如 VNets、子网或入站规则。
您在创建集群时使用的 Azure 凭证不需要 VNets 和核心网络组件(如子网、路由表、互联网网关、NAT 和 VPN)所需的网络权限。您仍然需要获取集群中的机器需要的应用程序资源的权限,如负载均衡器、安全组、存储帐户和节点。
9.3.3. 集群间隔离 复制链接链接已复制到粘贴板!
因为集群无法修改现有子网中的网络安全组,所以无法在 VNet 中相互隔离集群。
9.4. OpenShift Container Platform 互联网访问 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 4.12 中,您需要访问互联网来安装集群。
您必须具有以下互联网访问权限:
- 访问 OpenShift Cluster Manager Hybrid Cloud Console 以下载安装程序并执行订阅管理。如果集群可以访问互联网,并且没有禁用 Telemetry,该服务会自动授权您的集群。
- 访问 Quay.io,以获取安装集群所需的软件包。
- 获取执行集群更新所需的软件包。
如果您的集群无法直接访问互联网,则可以在置备的某些类型的基础架构上执行受限网络安装。在此过程中,您可以下载所需的内容,并使用它为镜像 registry 填充安装软件包。对于某些安装类型,集群要安装到的环境不需要访问互联网。在更新集群前,您要更新镜像 registry 的内容。
9.5. 为集群节点 SSH 访问生成密钥对 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 安装过程中,您可以为安装程序提供 SSH 公钥。密钥通过它们的 Ignition 配置文件传递给 Red Hat Enterprise Linux CoreOS(RHCOS)节点,用于验证对节点的 SSH 访问。密钥添加到每个节点上 core 用户的 ~/.ssh/authorized_keys 列表中,这将启用免密码身份验证。
将密钥传递给节点后,您可以使用密钥对作为用户 核心 通过 SSH 连接到 RHCOS 节点。若要通过 SSH 访问节点,必须由 SSH 为您的本地用户管理私钥身份。
如果要通过 SSH 连接到集群节点来执行安装调试或灾难恢复,则必须在安装过程中提供 SSH 公钥。./openshift-install gather 命令还需要在集群节点上设置 SSH 公钥。
不要在生产环境中跳过这个过程,在生产环境中需要灾难恢复和调试。
您必须使用本地密钥,而不是使用特定平台方法配置 的密钥,如 AWS 密钥对。
流程
如果您在本地计算机上没有可用于在集群节点上进行身份验证的现有 SSH 密钥对,请创建一个。例如,在使用 Linux 操作系统的计算机上运行以下命令:
ssh-keygen -t ed25519 -N '' -f <path>/<file_name>
$ ssh-keygen -t ed25519 -N '' -f <path>/<file_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定新 SSH 密钥的路径和文件名,如
~/.ssh/id_ed25519。如果您已有密钥对,请确保您的公钥位于~/.ssh目录中。
注意如果您计划在
x86_64、ppc64le和s390x架构上安装使用 FIPS 验证或 Modules In Process 加密库的 OpenShift Container Platform 集群。请不要创建使用ed25519算法的密钥。相反,创建一个使用rsa或ecdsa算法的密钥。查看公共 SSH 密钥:
cat <path>/<file_name>.pub
$ cat <path>/<file_name>.pubCopy to Clipboard Copied! Toggle word wrap Toggle overflow 例如,运行以下命令来查看
~/.ssh/id_ed25519.pub公钥:cat ~/.ssh/id_ed25519.pub
$ cat ~/.ssh/id_ed25519.pubCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将 SSH 私钥身份添加到本地用户的 SSH 代理(如果尚未添加)。在集群节点上,或者要使用
./openshift-install gather命令,需要对该密钥进行 SSH 代理管理,才能在集群节点上进行免密码 SSH 身份验证。注意在某些发行版中,自动管理默认 SSH 私钥身份,如
~/.ssh/id_rsa和~/.ssh/id_dsa。如果
ssh-agent进程尚未为您的本地用户运行,请将其作为后台任务启动:eval "$(ssh-agent -s)"
$ eval "$(ssh-agent -s)"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Agent pid 31874
Agent pid 31874Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果集群处于 FIPS 模式,则只使用 FIPS 兼容算法来生成 SSH 密钥。密钥必须是 RSA 或 ECDSA。
将 SSH 私钥添加到
ssh-agent:ssh-add <path>/<file_name>
$ ssh-add <path>/<file_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定 SSH 私钥的路径和文件名,如
~/.ssh/id_ed25519.pub
输出示例
Identity added: /home/<you>/<path>/<file_name> (<computer_name>)
Identity added: /home/<you>/<path>/<file_name> (<computer_name>)Copy to Clipboard Copied! Toggle word wrap Toggle overflow
后续步骤
- 安装 OpenShift Container Platform 时,为安装程序提供 SSH 公钥。
9.6. 获取安装程序 复制链接链接已复制到粘贴板!
在安装 OpenShift Container Platform 前,将安装文件下载到您用于安装的主机上。
先决条件
- 您有一台运行 Linux 或 macOS 的计算机,本地磁盘空间为 500 MB。
流程
- 访问 OpenShift Cluster Manager 站点的 Infrastructure Provider 页面。如果您有红帽帐户,请使用您的凭证登录。如果没有,请创建一个帐户。
- 选择您的基础架构供应商。
进入到安装类型的页面,下载与您的主机操作系统和架构对应的安装程序,并将该文件放在您要存储安装配置文件的目录中。
重要安装程序会在用来安装集群的计算机上创建几个文件。在完成集群安装后,您必须保留安装程序和安装程序所创建的文件。这两个文件都需要删除集群。
重要删除安装程序创建的文件不会删除您的集群,即使集群在安装过程中失败也是如此。要删除集群,请为特定云供应商完成 OpenShift Container Platform 卸载流程。
提取安装程序。例如,在使用 Linux 操作系统的计算机上运行以下命令:
tar -xvf openshift-install-linux.tar.gz
$ tar -xvf openshift-install-linux.tar.gzCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 从 Red Hat OpenShift Cluster Manager 下载安装 pull secret。此 pull secret 允许您与所含授权机构提供的服务进行身份验证,这些服务包括为 OpenShift Container Platform 组件提供容器镜像的 Quay.io。
9.7. 手动创建安装配置文件 复制链接链接已复制到粘贴板!
安装集群要求您手动创建安装配置文件。
先决条件
- 在本地机器上有一个 SSH 公钥用于安装程序。您可以使用密钥在集群节点上进行 SSH 身份验证,以进行调试和灾难恢复。
- 已获取 OpenShift Container Platform 安装程序和集群的 pull secret。
流程
创建一个安装目录来存储所需的安装资产:
mkdir <installation_directory>
$ mkdir <installation_directory>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要您必须创建一个目录。有些安装资产,如 bootstrap X.509 证书的过期间隔较短,因此不得重复使用安装目录。如果要重复使用另一个集群安装中的单个文件,您可以将它们复制到您的目录中。但是,安装资产的文件名可能会在发行版本间有所变化。从以前的 OpenShift Container Platform 版本中复制安装文件时请小心。
对提供的
install-config.yaml文件模板示例进行自定义,并将文件保存到<installation_directory>中。注意此配置文件必须命名为
install-config.yaml。备份
install-config.yaml文件,以便使用它来安装多个集群。重要现在备份
install-config.yaml文件,因为安装过程会在下一步中消耗该文件。
9.7.1. 安装配置参数 复制链接链接已复制到粘贴板!
在部署 OpenShift Container Platform 集群前,您可以提供参数值来描述托管集群的云平台中的帐户,并选择性地自定义集群平台。在创建 install-config.yaml 安装配置文件时,您可以通过命令行为所需参数提供值。如果自定义集群,您可以修改 install-config.yaml 文件以提供有关平台的更多详情。
安装后,您无法在 install-config.yaml 文件中修改这些参数。
9.7.1.1. 所需的配置参数 复制链接链接已复制到粘贴板!
下表描述了所需的安装配置参数:
| 参数 | 描述 | 值 |
|---|---|---|
|
|
| 字符串 |
|
|
云供应商的基域。基域用于创建到 OpenShift Container Platform 集群组件的路由。集群的完整 DNS 名称是 |
完全限定域名或子域名,如 |
|
|
Kubernetes 资源 | 对象 |
|
|
集群的名称。集群的 DNS 记录是 |
小写字母、连字符( |
|
|
要执行安装的具体平台配置: | 对象 |
|
| 从 Red Hat OpenShift Cluster Manager 获取 pull secret,验证从 Quay.io 等服务中下载 OpenShift Container Platform 组件的容器镜像。 |
|
9.7.1.2. 网络配置参数 复制链接链接已复制到粘贴板!
您可以根据现有网络基础架构的要求自定义安装配置。例如,您可以扩展集群网络的 IP 地址块,或者提供不同于默认值的不同 IP 地址块。
仅支持 IPv4 地址。
Red Hat OpenShift Data Foundation 灾难恢复解决方案不支持 Globalnet。对于区域灾难恢复场景,请确保为每个集群中的集群和服务网络使用非重叠的专用 IP 地址。
| 参数 | 描述 | 值 |
|---|---|---|
|
| 集群网络的配置。 | 对象 注意
您无法在安装后修改 |
|
| 要安装的 Red Hat OpenShift Networking 网络插件。 |
|
|
| pod 的 IP 地址块。
默认值为 如果您指定了多个 IP 地址块,块不得重叠。 | 对象数组。例如: networking:
clusterNetwork:
- cidr: 10.128.0.0/14
hostPrefix: 23
|
|
|
使用 IPv4 网络。 |
无类别域间路由(CIDR)表示法中的 IP 地址块。IPv4 块的前缀长度介于 |
|
|
分配给每个节点的子网前缀长度。例如,如果 | 子网前缀。
默认值为 |
|
|
服务的 IP 地址块。默认值为 OpenShift SDN 和 OVN-Kubernetes 网络插件只支持服务网络的一个 IP 地址块。 | CIDR 格式具有 IP 地址块的数组。例如: networking: serviceNetwork: - 172.30.0.0/16
|
|
| 机器的 IP 地址块。 如果您指定了多个 IP 地址块,块不得重叠。 | 对象数组。例如: networking: machineNetwork: - cidr: 10.0.0.0/16
|
|
|
使用 | CIDR 表示法中的 IP 网络块。
例如: 注意
将 |
9.7.1.3. 可选的配置参数 复制链接链接已复制到粘贴板!
下表描述了可选的安装配置参数:
| 参数 | 描述 | 值 |
|---|---|---|
|
| 添加到节点可信证书存储中的 PEM 编码 X.509 证书捆绑包。配置了代理时,也可以使用此信任捆绑包。 | 字符串 |
|
| 控制可选核心组件的安装。您可以通过禁用可选组件来减少 OpenShift Container Platform 集群的空间。如需更多信息,请参阅安装中的"集群功能"页面。 | 字符串数组 |
|
|
选择要启用的一组初始可选功能。有效值为 | 字符串 |
|
|
将可选功能集合扩展到您在 | 字符串数组 |
|
| 组成计算节点的机器的配置。 |
|
|
|
决定池中机器的指令集合架构。目前,不支持具有不同架构的集群。所有池都必须指定相同的架构。有效值为 | 字符串 |
|
|
是否在计算机器上启用或禁用并发多 重要 如果您禁用并发多线程,请确保您的容量规划考虑机器性能显著降低的情况。 |
|
|
|
使用 |
|
|
|
使用 |
|
|
| 要置备的计算机器数量,也称为 worker 机器。 |
大于或等于 |
|
| 为功能集启用集群。功能集是 OpenShift Container Platform 功能的集合,默认情况下不启用。有关在安装过程中启用功能集的更多信息,请参阅"使用功能门启用功能"。 |
字符串.要启用的功能集的名称,如 |
|
| 组成 control plane 的机器的配置。 |
|
|
|
决定池中机器的指令集合架构。目前,不支持具有不同架构的集群。所有池都必须指定相同的架构。有效值为 | 字符串 |
|
|
是否在 control plane 机器上启用或禁用并发多 重要 如果您禁用并发多线程,请确保您的容量规划考虑机器性能显著降低的情况。 |
|
|
|
使用 |
|
|
|
使用 |
|
|
| 要置备的 control plane 机器数量。 |
唯一支持的值是 |
|
| Cloud Credential Operator(CCO)模式。如果没有指定模式,CCO 会动态尝试决定提供的凭证的功能,在支持多个模式的平台上首选 mint 模式。 注意 不是所有 CCO 模式都支持所有云供应商。如需有关 CCO 模式的更多信息,请参阅集群 Operator 参考内容中的 Cloud Credential Operator 条目。 注意
如果您的 AWS 帐户启用了服务控制策略 (SCP),您必须将 |
|
|
|
启用或禁用 FIPS 模式。默认值为 重要
要为集群启用 FIPS 模式,您必须从配置为以 FIPS 模式操作的 Red Hat Enterprise Linux (RHEL) 计算机运行安装程序。有关在 RHEL 中配置 FIPS 模式的更多信息,请参阅在 FIPS 模式中安装该系统。只有在 注意 如果使用 Azure File 存储,则无法启用 FIPS 模式。 |
|
|
| release-image 内容的源和存储库。 |
对象数组。包括一个 |
|
|
使用 | 字符串 |
|
| 指定可能还包含同一镜像的一个或多个仓库。 | 字符串数组 |
|
| 如何发布或公开集群的面向用户的端点,如 Kubernetes API、OpenShift 路由。 |
|
|
| 用于验证对集群机器的访问的 SSH 密钥。 注意
对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定 |
例如, |
9.7.1.4. 其他 Azure 配置参数 复制链接链接已复制到粘贴板!
下表描述了其他 Azure 配置参数。
默认情况下,如果您在 install-config.yaml 文件中指定可用区,安装程序会在一个区(region)内的这些可用区间分发 control plane 机器和计算机器。要确保集群的高可用性,请选择至少含有三个可用区的区域。如果您的区域包含的可用区少于三个,安装程序将在可用区中放置多台 control plane 机器。
| 参数 | 描述 | 值 |
|---|---|---|
|
| 为计算机器启用主机级别的加密。您可以启用这个加密,以及用户管理的服务器端加密。此功能加密虚拟机主机上的临时、临时、缓存和未管理的磁盘。这不是用户管理的服务器端加密的先决条件。 |
|
|
| 虚拟机的 Azure 磁盘大小。 |
以 GB 为单位表示磁盘大小的整数。默认值为 |
|
| 定义磁盘的类型。 |
|
|
| 启用 Azureultra 磁盘用于计算节点上的持久性存储。这需要您的 Azure 区域和区有可用的 ultra 磁盘。 |
|
|
| 包含安装先决条件集中磁盘加密的 Azure 资源组名称。此资源组应和安装集群的资源组不同,以避免在集群销毁时删除 Azure 加密密钥。只有在打算使用用户管理的磁盘加密安装集群时才需要这个值。 |
字符串,如 |
|
| 包含安装先决条件中加密密钥的磁盘加密集名称。 |
字符串,如 |
|
| 定义磁盘加密集所在的磁盘加密集的 Azure 订阅。此辅助磁盘加密集用于加密计算机器。 |
字符串,格式为 |
|
|
启用加速网络。加速网络可让单个根 I/O 虚拟化 (SR-IOV) 为虚拟机提高其网络性能。如果计算机器的实例类型支持 |
|
|
| 为计算机器定义 Azure 实例类型。 | 字符串 |
|
| 安装程序在其中创建计算机器的可用区。 | 字符串列表 |
|
| 为 control plane 机器定义 Azure 实例类型。 | 字符串 |
|
| 安装程序在其中创建 control plane 机器的可用区。 | 字符串列表 |
|
| 为计算机器启用主机级别的加密。您可以启用这个加密,以及用户管理的服务器端加密。此功能加密虚拟机主机上的临时、临时、缓存和未管理的磁盘。这个参数不是用户管理的服务器端加密的先决条件。 |
|
|
| 包含安装先决条件中加密密钥的磁盘加密集名称。 |
字符串,如 |
|
| 包含安装先决条件集中磁盘加密的 Azure 资源组名称。为了避免在集群销毁时删除 Azure 加密密钥,此资源组必须与安装集群的资源组不同。只有在打算使用用户管理的磁盘加密安装集群时才需要这个值。 |
字符串,如 |
|
| 定义磁盘加密集所在的磁盘加密集的 Azure 订阅。此辅助磁盘加密集用于加密计算机器。 |
字符串,格式为 |
|
| 虚拟机的 Azure 磁盘大小。 |
以 GB 为单位表示磁盘大小的整数。默认值为 |
|
| 定义磁盘的类型。 |
|
|
| control plane 和计算机器的 Azure 实例类型。 | Azure 实例类型。 |
|
| 安装程序在其中创建计算和 control plane 机器的可用区。 | 字符串列表。 |
|
| 为 control plane 机器启用主机级别的加密。您可以启用这个加密,以及用户管理的服务器端加密。此功能加密虚拟机主机上的临时、临时、缓存和未管理的磁盘。这不是用户管理的服务器端加密的先决条件。 |
|
|
| 包含安装先决条件集中磁盘加密的 Azure 资源组名称。此资源组应和安装集群的资源组不同,以避免在集群销毁时删除 Azure 加密密钥。只有在打算使用用户管理的磁盘加密安装集群时才需要这个值。 |
字符串,如 |
|
| 包含安装先决条件中加密密钥的磁盘加密集名称。 |
字符串,如 |
|
| 定义磁盘加密集所在的磁盘加密集的 Azure 订阅。这个辅助磁盘加密集用于加密 control plane 机器。 |
字符串,格式为 |
|
| 虚拟机的 Azure 磁盘大小。 |
以 GB 为单位表示磁盘大小的整数。默认值为 |
|
| 定义磁盘的类型。 |
|
|
| 为 control plane 机器上的持久性存储启用 Azureultra 磁盘使用。这需要您的 Azure 区域和区有可用的 ultra 磁盘。 |
|
|
|
启用加速网络。加速网络可让单个根 I/O 虚拟化 (SR-IOV) 为虚拟机提高其网络性能。如果 control plane 机器的实例类型支持 |
|
|
| 包含基域的 DNS 区的资源组的名称。 |
字符串,如 |
|
| 集群要安装到的已有资源组的名称。此资源组必须为空,并且仅用于此特定群集;群集组件假定资源组中所有资源的所有权。如果您将安装程序的服务主体范围限制到这个资源组,您必须确保您的环境中安装程序使用的所有其他资源都有必要的权限,如公共 DNS 区和虚拟网络。使用安装程序销毁集群会删除此资源组。 |
字符串,如 |
|
| 用于将集群连接到互联网的出站路由策略。如果您使用用户定义的路由,则必须在安装集群前配置出站路由。安装程序不负责配置用户定义的路由。 |
|
|
| 托管集群的 Azure 区域的名称。 |
任何有效的区域名称,如 |
|
| 要放入机器的可用区列表。如需高可用性,请至少指定两个区域。 |
区域列表,如 |
|
| 为 control plane 和计算机器上的持久性存储启用 Azureultra 磁盘使用。这需要您的 Azure 区域和区有可用的 ultra 磁盘。 |
|
|
|
包含您要将集群部署到的现有 VNet 的资源组的名称。这个名称不能与 platform. | 字符串. |
|
| 要将集群部署到的现有 VNet 的名称。 | 字符串. |
|
| 要将 control plane 机器部署到的 VNet 中现有子网的名称。 |
有效的 CIDR,如 |
|
| 要将计算机器部署到的 VNet 中现有子网的名称。 |
有效的 CIDR,如 |
|
|
用于使用适当的 Azure API 端点配置 Azure SDK 的 Azure 云环境名称。如果为空,则使用默认值 |
任何有效的云环境,如 |
|
| 启用加速网络。加速网络可让单个根 I/O 虚拟化 (SR-IOV) 为虚拟机提高其网络性能。 |
|
您无法自定义 Azure 可用区,也不能使用 标签来整理 Azure 集群的 Azure 资源。
9.7.2. 集群安装的最低资源要求 复制链接链接已复制到粘贴板!
每台集群机器都必须满足以下最低要求:
| 机器 | 操作系统 | vCPU [1] | 虚拟内存 | Storage | 每秒输入/输出 (IOPS) [2] |
|---|---|---|---|---|---|
| bootstrap | RHCOS | 4 | 16 GB | 100 GB | 300 |
| Control plane(控制平面) | RHCOS | 4 | 16 GB | 100 GB | 300 |
| Compute | RHCOS、RHEL 8.6 及更新版本 [3] | 2 | 8 GB | 100 GB | 300 |
- 当未启用并发多线程(SMT)或超线程时,一个 vCPU 相当于一个物理内核。启用后,使用以下公式来计算对应的比例:(每个内核数的线程)× sockets = vCPU。
- OpenShift Container Platform 和 Kubernetes 对磁盘性能非常敏感,建议使用更快的存储速度,特别是 control plane 节点上需要 10 ms p99 fsync 持续时间的 etcd。请注意,在许多云平台上,存储大小和 IOPS 可一起扩展,因此您可能需要过度分配存储卷来获取足够的性能。
- 与所有用户置备的安装一样,如果您选择在集群中使用 RHEL 计算机器,则负责所有操作系统生命周期管理和维护,包括执行系统更新、应用补丁和完成所有其他必要的任务。RHEL 7 计算机器的使用已弃用,并已在 OpenShift Container Platform 4.10 及更新的版本中删除。
您需要使用将 PremiumIO 参数设置为 true 的 Azure 虚拟机。
如果平台的实例类型满足集群机器的最低要求,则 OpenShift Container Platform 支持使用它。
9.7.3. 为 Azure 测试的实例类型 复制链接链接已复制到粘贴板!
以下 Microsoft Azure 实例类型已经 OpenShift Container Platform 测试。
例 9.1. 基于 64 位 x86 架构的机器类型
-
standardBasv2Family -
standardBSFamily -
standardBsv2Family -
standardDADSv5Family -
standardDASv4Family -
standardDASv5Family -
standardDCACCV5Family -
standardDCADCCV5Family -
standardDCADSv5Family -
standardDCASv5Family -
standardDCSv3Family -
standardDCSv2Family -
standardDDCSv3Family -
standardDDSv4Family -
standardDDSv5Family -
StandardDdsv6Family -
standardDLDSv5Family -
StandardDldsv6Family -
standardDLSv5Family -
StandardDlsv6Family -
standardDSFamily -
standardDSv2Family -
standardDSv2PromoFamily -
standardDSv3Family -
standardDSv4Family -
standardDSv5Family -
StandardDsv6Family -
standardEADSv5Family -
standardEASv4Family -
standardEASv5Family -
standardEBDSv5Family -
standardEBSv5Family -
standardECACCV5Family -
standardECADCCV5Family -
standardECADSv5Family -
standardECASv5Family -
standardEDSv4Family -
standardEDSv5Family -
standardEIADSv5Family -
standardEIASv4Family -
standardEIASv5Family -
standardEIBDSv5Family -
standardEIBSv5Family -
standardEIDSv5Family -
standardEISv3Family -
standardEISv5Family -
standardESv3Family -
standardESv4Family -
standardESv5Family -
standardFXMDVSFamily -
standardFSFamily -
standardFSv2Family -
standardGSFamily -
standardHBrsv2Family -
standardHBSFamily -
standardHBv4Family -
standardHCSFamily -
standardHXFamily -
standardLASv3Family -
standardLasv4Family -
standardLSFamily -
standardLSv2Family -
standardLSv3Family -
standardLsv4Family -
standardMDSHighMemoryv3Family -
standardMDSMediumMemoryv2Family -
standardMDSMediumMemoryv3Family -
standardMIDSHighMemoryv3Family -
standardMIDSMediumMemoryv2Family -
standardMISHighMemoryv3Family -
standardMISMediumMemoryv2Family -
standardMSFamily -
standardMSHighMemoryv3Family -
standardMSMediumMemoryv2Family -
standardMSMediumMemoryv3Family -
StandardNCADSA100v4Family -
Standard NCASv3_T4 Family -
standardNCSv3Family -
standardNDSv2Family -
StandardNGADSV620v1Family -
standardNPSFamily -
StandardNVADSA10v5Family -
StandardNVadsV710v5Family -
Standard NDASv4_A100 Family -
standardNVSv3Family -
standardXEISv4Family
9.7.4. 在 64 位 ARM 基础架构上为 Azure 测试的实例类型 复制链接链接已复制到粘贴板!
以下 Microsoft Azure ARM64 实例类型已使用 OpenShift Container Platform 测试。
例 9.2. 基于 64 位 ARM 架构的机器类型
-
standardBpsv2Family -
standardDPSv5Family -
standardDPDSv5Family -
standardDPLDSv5Family -
standardDPLSv5Family -
standardEPSv5Family -
standardEPDSv5Family -
StandardDpdsv6Family -
StandardDpldsv6Famil -
StandardDplsv6Family -
StandardDpsv6Family -
StandardEpdsv6Family -
StandardEpsv6Family
9.7.5. Azure 的自定义 install-config.yaml 文件示例 复制链接链接已复制到粘贴板!
您可以自定义 install-config.yaml 文件,以指定有关 OpenShift Container Platform 集群平台的更多详情,或修改所需参数的值。
此示例 YAML 文件仅供参考。您必须使用安装程序来获取 install-config.yaml 文件,并进行修改。
- 1 10 13 20
- 必需。安装程序会提示您输入这个值。
- 2 6
- 如果没有提供这些参数和值,安装程序会提供默认值。
- 3 7
controlPlane部分是一个单个映射,但compute部分是一系列映射。为满足不同数据结构的要求,compute部分的第一行必须以连字符-开头,controlPlane部分的第一行则不以连字符开头。仅使用一个 control plane 池。- 4
- 是否要启用或禁用并发多线程或
超线程。默认情况下,启用并发多线程以提高机器内核的性能。您可以通过将 参数值设置为Disabled来禁用它。如果在某些集群机器中禁用并发多线程,则必须在所有集群机器中禁用它。重要如果您禁用并发多线程,请确保您的容量规划考虑机器性能显著降低的情况。如果您禁用并发多线程,请为您的机器使用较大的虚拟机类型,如
Standard_D8s_v3。 - 5 8
- 您可以指定要使用的磁盘大小(以 GB 为单位)。control plane 节点的最低推荐值为 1024 GB。
- 9
- 指定要将机器部署到的区域列表。如需高可用性,请至少指定两个区域。
- 11
- 要安装的集群网络插件。支持的值有
OVNKubernetes和OpenShiftSDN。默认值为OVNKubernetes。 - 12
- 指定包含基域的 DNS 区的资源组的名称。
- 14
- 指定要安装集群的现有资源组的名称。如果未定义,则会为集群创建新的资源组。
- 15
- 如果使用现有的 VNet,请指定包含它的资源组的名称。
- 16
- 如果使用现有的 VNet,请指定其名称。
- 17
- 如果使用现有的 VNet,请指定托管 control plane 机器的子网名称。
- 18
- 如果使用现有的 VNet,请指定托管计算机器的子网名称。
- 19
- 您可以自定义自己的出站路由。配置用户定义的路由可防止在集群中公开外部端点。出口的用户定义路由需要将集群部署到现有的 VNet。
- 21
- 是否启用或禁用 FIPS 模式。默认情况下不启用 FIPS 模式。如果启用了 FIPS 模式,运行 OpenShift Container Platform 的 Red Hat Enterprise Linux CoreOS(RHCOS)机器会绕过默认的 Kubernetes 加密套件,并使用由 RHCOS 提供的加密模块。重要
要为集群启用 FIPS 模式,您必须从配置为以 FIPS 模式操作的 Red Hat Enterprise Linux (RHEL) 计算机运行安装程序。有关在 RHEL 中配置 FIPS 模式的更多信息,请参阅在 FIPS 模式中安装该系统。只有在
x86_64、ppc64le和s390x架构的 OpenShift Container Platform 部署中才支持使用 FIPS 验证的或Modules In Process 加密库。 - 22
- 您可以选择提供您用来访问集群中机器的
sshKey值。注意对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定
ssh-agent进程使用的 SSH 密钥。 - 23
- 如何发布集群的面向用户的端点。将
publish设置为Internal以部署一个私有集群,它不能被互联网访问。默认值为External。
9.7.6. 在安装过程中配置集群范围的代理 复制链接链接已复制到粘贴板!
生产环境可能会拒绝直接访问互联网,而是提供 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命名空间中生成名为user-ca-bundle的配置映射,其包含代理 HTTPS 连接所需的一个或多个额外 CA 证书。然后,Cluster Network Operator 会创建trusted-ca-bundle配置映射,将这些内容与 Red Hat Enterprise Linux CoreOS(RHCOS)信任捆绑包合并,Proxy对象的trustedCA字段中也会引用此配置映射。additionalTrustBundle字段是必需的,除非代理的身份证书由来自 RHCOS 信任捆绑包的颁发机构签名。 - 5
- 可选:决定
Proxy对象的配置以引用trustedCA字段中user-ca-bundle配置映射的策略。允许的值是Proxyonly和Always。仅在配置了http/https代理时,使用Proxyonly引用user-ca-bundle配置映射。使用Always始终引用user-ca-bundle配置映射。默认值为Proxyonly。
注意安装程序不支持代理的
readinessEndpoints字段。注意如果安装程序超时,重启并使用安装程序的
wait-for命令完成部署。例如:./openshift-install wait-for install-complete --log-level debug
$ ./openshift-install wait-for install-complete --log-level debugCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存该文件并在安装 OpenShift Container Platform 时引用。
安装程序会创建一个名为 cluster 的集群范围代理,该代理 使用 提供的 install-config.yaml 文件中的代理设置。如果没有提供代理设置,仍然会创建一个 cluster Proxy 对象,但它会有一个空 spec。
只支持名为 cluster 的 Proxy 对象,且无法创建额外的代理。
9.8. 部署集群 复制链接链接已复制到粘贴板!
您可以在兼容云平台上安装 OpenShift Container Platform。
在初始安装过程中,您只能运行安装程序的 create cluster 命令一次。
先决条件
- 使用托管集群的云平台配置帐户。
- 获取 OpenShift Container Platform 安装程序和集群的 pull secret。
- 验证主机上的云供应商帐户是否有部署集群的正确权限。权限不正确的帐户会导致安装过程失败,并显示包括缺失权限的错误消息。
流程
进入包含安装程序的目录并初始化集群部署:
./openshift-install create cluster --dir <installation_directory> \ --log-level=info$ ./openshift-install create cluster --dir <installation_directory> \1 --log-level=info2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果您在主机上配置的云供应商帐户没有足够的权限来部署集群,安装过程将停止,并显示缺少的权限。
验证
当集群部署成功完成时:
-
终端会显示用于访问集群的说明,包括指向 Web 控制台和
kubeadmin用户的凭证的链接。 -
凭证信息还会输出到
<installation_directory>/.openshift_install.log.
不要删除安装程序或安装程序所创建的文件。需要这两者才能删除集群。
输出示例
-
安装程序生成的 Ignition 配置文件包含在 24 小时后过期的证书,然后在过期时进行续订。如果在更新证书前关闭集群,且集群在 24 小时后重启,集群会自动恢复过期的证书。一个例外是,您必须手动批准待处理的
node-bootstrapper证书签名请求(CSR)来恢复 kubelet 证书。如需更多信息,请参阅从过期的 control plane 证书 中恢复的文档。 - 建议您在 Ignition 配置文件生成后的 12 小时内使用它们,因为 24 小时的证书会在集群安装后的 16 小时到 22 小时间进行轮转。通过在 12 小时内使用 Ignition 配置文件,您可以避免在安装过程中因为执行了证书更新而导致安装失败的问题。
9.9. 安装后最终调整用户管理的加密 复制链接链接已复制到粘贴板!
如果使用用户管理的加密密钥安装 OpenShift Container Platform,您可以通过创建新存储类并授予 Azure 集群资源组写入权限来完成安装。
流程
获取安装程序使用的集群资源组的身份:
如果在
install-config.yaml中指定了现有资源组,请运行以下命令获取其 Azure 身份:az identity list --resource-group "<existing_resource_group>"
$ az identity list --resource-group "<existing_resource_group>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您没有在
install-config.yaml中指定现有资源组,请找到安装程序创建的资源组,然后运行以下命令来获取其 Azure 身份:az group list
$ az group listCopy to Clipboard Copied! Toggle word wrap Toggle overflow az identity list --resource-group "<installer_created_resource_group>"
$ az identity list --resource-group "<installer_created_resource_group>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
运行以下命令,为集群资源组授予角色分配,使其可以写入 Disk Encryption Set:
az role assignment create --role "<privileged_role>" \ --assignee "<resource_group_identity>"$ az role assignment create --role "<privileged_role>" \1 --assignee "<resource_group_identity>"2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,获取在安装前创建的磁盘加密集的
id:az disk-encryption-set show -n <disk_encryption_set_name> \ --resource-group <resource_group_name>$ az disk-encryption-set show -n <disk_encryption_set_name> \1 --resource-group <resource_group_name>2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,获取集群服务主体的身份:
az identity show -g <cluster_resource_group> \ -n <cluster_service_principal_name> \ --query principalId --out tsv$ az identity show -g <cluster_resource_group> \1 -n <cluster_service_principal_name> \2 --query principalId --out tsvCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,创建一个角色分配,为磁盘加密集授予集群服务主体必要的权限:
az role assignment create --assignee <cluster_service_principal_id> \ --role <privileged_role> \ --scope <disk_encryption_set_id> \$ az role assignment create --assignee <cluster_service_principal_id> \1 --role <privileged_role> \2 --scope <disk_encryption_set_id> \3 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建使用用户管理的磁盘加密集的存储类:
将以下存储类定义保存到文件中,如
storage-class-definition.yaml:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从您创建的文件创建存储类
managed-premium:oc create -f storage-class-definition.yaml
$ oc create -f storage-class-definition.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
在创建持久性卷以使用加密存储时,选择
managed-premium存储类。
9.10. 通过下载二进制文件安装 OpenShift CLI 复制链接链接已复制到粘贴板!
您可以安装 OpenShift CLI(oc)来使用命令行界面与 OpenShift Container Platform 进行交互。您可以在 Linux、Windows 或 macOS 上安装 oc。
如果安装了旧版本的 oc,则无法使用 OpenShift Container Platform 4.12 中的所有命令。下载并安装新版本的 oc。
在 Linux 上安装 OpenShift CLI
您可以按照以下流程在 Linux 上安装 OpenShift CLI(oc)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 产品变体 下拉列表中选择架构。
- 从 版本 下拉列表中选择适当的版本。
- 点 OpenShift v4.12 Linux Client 条目旁的 Download Now 来保存文件。
解包存档:
tar xvf <file>
$ tar xvf <file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
oc二进制文件放到PATH 中的目录中。要查看您的
PATH,请执行以下命令:echo $PATH
$ echo $PATHCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
安装 OpenShift CLI 后,可以使用
oc命令:oc <command>
$ oc <command>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在 Windows 上安装 OpenShift CLI
您可以按照以下流程在 Windows 上安装 OpenShift CLI(oc)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 版本 下拉列表中选择适当的版本。
- 点 OpenShift v4.12 Windows Client 条目旁的 Download Now 来保存文件。
- 使用 ZIP 程序解压存档。
将
oc二进制文件移到PATH 中的目录中。要查看您的
PATH,请打开命令提示并执行以下命令:path
C:\> pathCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
安装 OpenShift CLI 后,可以使用
oc命令:oc <command>
C:\> oc <command>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在 macOS 上安装 OpenShift CLI
您可以按照以下流程在 macOS 上安装 OpenShift CLI(oc)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 版本 下拉列表中选择适当的版本。
点 OpenShift v4.12 macOS Client 条目旁的 Download Now 来保存文件。
注意对于 macOS arm64,请选择 OpenShift v4.12 macOS arm64 Client 条目。
- 解包和解压存档。
将
oc二进制文件移到 PATH 的目录中。要查看您的
PATH,请打开终端并执行以下命令:echo $PATH
$ echo $PATHCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
安装 OpenShift CLI 后,可以使用
oc命令:oc <command>
$ oc <command>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.11. 使用 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
9.12. OpenShift Container Platform 的 Telemetry 访问 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 4.12 中,默认运行的 Telemetry 服务提供有关集群健康状况和成功更新的指标,需要访问互联网。如果您的集群连接到互联网,Telemetry 会自动运行,并且集群会注册到 OpenShift Cluster Manager Hybrid Cloud Console。
确认 OpenShift Cluster Manager Hybrid Cloud Console 清单正确后,可以由 Telemetry 自动维护,也可以使用 OpenShift Cluster Manager 手动维护,使用订阅监控来跟踪帐户或多集群级别的 OpenShift Container Platform 订阅。
9.13. 后续步骤 复制链接链接已复制到粘贴板!
第 10 章 在 Azure 上将集群安装到一个政府区域 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 版本 4.12 中,您可以在 Microsoft Azure 上将集群安装到一个政府区域。要配置政府区域,请在安装集群前修改 install-config.yaml 文件中的参数。
10.1. 先决条件 复制链接链接已复制到粘贴板!
- 您可以参阅有关 OpenShift Container Platform 安装和更新 流程的详细信息。
- 您可以阅读有关 选择集群安装方法的文档,并为用户准备它。
- 您已 将 Azure 帐户配置为 托管集群,并确定要将集群部署到的经过测试和验证的政府区域。
- 如果使用防火墙,则会 将其配置为允许集群需要访问的站点。
-
如果环境中无法访问云身份和访问管理(IAM)API,或者不想将管理员级别的凭证 secret 存储在
kube-system命名空间中,您可以 手动创建和维护 IAM 凭证。 - 如果您使用客户管理的加密密钥,准备了用于加密的 Azure 环境。
10.2. Azure 政府区域 复制链接链接已复制到粘贴板!
OpenShift Container Platform 支持将集群部署到 Microsoft Azure Government(MAG) 区域。MAG 是专门为需要运行敏感负载的美国政府机构、企业、企业和其他美国客户特别设计的。MAG 由仅政府数据中心区域组成,它们都赋予了 影响级别 5 授权。
安装到 MAG 区域需要在 install-config.yaml 文件中手动配置 Azure Government 专用云实例和区域。您还必须更新服务主体以引用适当的政府环境。
Azure 政府区域不能使用安装程序的引导终端提示来选择。您必须在 install-config.yaml 文件中手动定义区域。记得还要根据指定的区域设置专用云实例,如 AzureUSrianCloud。
10.3. 私有集群 复制链接链接已复制到粘贴板!
您可以部署不公开外部端点的私有 OpenShift Container Platform 集群。私有集群只能从内部网络访问,且无法在互联网中看到。
默认情况下,OpenShift Container Platform 被置备为使用可公开访问的 DNS 和端点。在部署集群时,私有集群会将 DNS、Ingress Controller 和 API 服务器设置为私有。这意味着集群资源只能从您的内部网络访问,且不能在互联网中看到。
如果集群有任何公共子网,管理员创建的负载均衡器服务可能会公开访问。为确保集群安全性,请验证这些服务是否已明确标注为私有。
要部署私有集群,您必须:
- 使用满足您的要求的现有网络。集群资源可能会在网络上的其他集群间共享。
从有权访问的机器中部署:
- 您置备的云的 API 服务。
- 您调配的网络上的主机。
- 用于获取安装介质的互联网。
您可以使用符合这些访问要求的机器,并按照您的公司规定进行操作。例如,此机器可以是云网络上的堡垒主机,也可以是可通过 VPN 访问网络的机器。
10.3.1. Azure 中的私有集群 复制链接链接已复制到粘贴板!
要在 Microsoft Azure 上创建私有集群,您必须提供一个现有的私有 VNet 和子网来托管集群。安装程序还必须能够解析集群所需的 DNS 记录。安装程序只为内部流量配置 Ingress Operator 和 API 服务器。
根据您的网络如何连接到私有 VNET,您可能需要使用 DNS 转发器来解析集群的私有 DNS 记录。集群的机器在内部使用 168.63.129.16 进行 DNS 解析。如需更多信息,请参阅 Azure 文档中的 What is Azure Private DNS? 和 What is IP address 168.63.129.16??。
集群仍然需要访问互联网来访问 Azure API。
安装私有集群时不需要或创建以下项目:
-
BaseDomainResourceGroup,因为集群不会创建公共记录 - 公共 IP 地址
- 公共 DNS 记录
公共端点
The cluster is configured so that the Operators do not create public records for the cluster and all cluster machines are placed in the private subnets that you specify.
The cluster is configured so that the Operators do not create public records for the cluster and all cluster machines are placed in the private subnets that you specify.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.3.1.1. 限制 复制链接链接已复制到粘贴板!
Azure 上的私有集群只受到与使用现有 VNet 相关的限制。
10.3.2. 用户定义的出站路由 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 中,您可以选择自己的出站路由来连接到互联网。这可让您跳过创建公共 IP 地址和公共负载均衡器的步骤。
您可在安装集群前修改 install-config.yaml 文件中的参数来配置用户定义的路由。安装集群时,需要一个已存在的 VNet 来使用出站路由,安装程序不负责配置它。
当将集群配置为使用用户定义的路由时,安装程序不会创建以下资源:
- 用于访问互联网的出站规则。
- 公共负载均衡器的公共 IP。
- Kubernetes Service 对象,为出站请求将集群机器添加到公共负载均衡器中。
在设置用户定义的路由前,您必须确保以下项目可用:
- 出口到互联网可以拉取容器镜像,除非使用 OpenShift image registry 镜像。
- 集群可以访问 Azure API。
- 配置了各种允许列表端点。您可以在 配置防火墙 部分引用这些端点。
支持一些已存在的网络设置,使用用户定义的路由访问互联网。
带有网络地址转换的私有集群
您可以使用 Azure VNET 网络地址转换(NAT) 为集群中的子网提供出站互联网访问。请参阅 Azure 文档中的 使用 Azure CLI 创建 NAT 网关。
使用 Azure NAT 和用户定义的路由的 VNet 设置时,您可以创建没有公共端点的私有集群。
使用 Azure 防火墙的私有集群
您可以使用 Azure Firewall 为用来安装集群的 VNet 提供出站路由。请参阅 Azure 文档中的Azure Firewall 提供用户定义的路由 的更多信息。
使用 Azure Firewall 和用户定义的路由的 VNet 设置时,您可以创建没有公共端点的私有集群。
带有代理配置的私有集群
您可以使用带有用户定义的路由的代理来允许到互联网的出口。您必须确保集群 Operator 不使用代理访问 Azure API。Operator 必须有权访问代理外的 Azure API。
当使用子网的默认路由表时,Azure 会自动填充0.0.0.0/0,所有 Azure API 请求都会通过 Azure 的内部网络路由,即使 IP 地址是公共的。只要网络安全组规则允许出口到 Azure API 端点,配置了用户定义的路由的代理就可以在没有公共端点的情况下创建私有集群。
没有互联网访问的私有集群
您可以安装专用网络,以限制对互联网的访问,但 Azure API 除外。这可以通过在本地镜像 registry 来完成。您的集群必须有权访问以下内容:
- 允许拉取容器镜像的 OpenShift image registry 镜像
- 访问 Azure API
在满足这些要求时,您可以使用用户定义的路由来创建没有公共端点的私有集群。
10.4. 关于为 OpenShift Container Platform 集群重复使用 VNet 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 4.12 中,您可以在 Microsoft Azure 中将集群部署到现有的 Azure Virtual Network(VNet)中。如果您这样做,还必须在 VNet 和路由规则中使用现有子网。
通过将 OpenShift Container Platform 部署到现有的 Azure VNet 中,您可以避免新帐户中的服务限制,或者更容易地利用公司所设置的操作限制。如果您无法获得创建 VNet 所需的基础架构创建权限,则可以使用这个选项。
10.4.1. 使用 VNet 的要求 复制链接链接已复制到粘贴板!
当使用现有 VNet 部署集群时,必须在安装集群前执行额外的网络配置。在安装程序置备的基础架构集群中,安装程序通常会创建以下组件,但在安装到现有 VNet 时不会创建它们:
- 子网
- 路由表
- VNets
- 网络安全组
安装程序要求您使用由云提供的 DNS 服务器。不支持使用自定义 DNS 服务器,并导致安装失败。
如果使用自定义 VNet,您必须正确配置它及其子网,供安装程序和集群使用。安装程序不能为集群分配要使用的网络范围,为子网设置路由表,或者设置类似 DHCP 的 VNet 选项,因此您必须在安装集群前这样做。
集群必须能够访问包含现有 VNet 和子网的资源组。虽然集群创建的所有资源都放在它创建的单独资源组中,但有些网络资源则从单独的组中使用。有些集群 Operator 必须能够访问这两个资源组中的资源。例如,Machine API 控制器会为它创建的虚拟机附加 NICS,以便从网络资源组中进行子网。
您的 VNet 必须满足以下特征:
-
VNet 的 CIDR 块必须包含
Networking.MachineCIDR范围,它是集群机器的 IP 地址池。 - VNet 及其子网必须属于同一资源组,子网必须配置为使用 Azure 分配的 DHCP IP 地址,而不是静态 IP 地址。
您必须在 VNet 中提供两个子网,一个用于 control plane 机器,一个用于计算机器。因为 Azure 在您指定的区域内的不同可用区中分发机器,所以集群将默认具有高可用性。
默认情况下,如果您在 install-config.yaml 文件中指定可用区,安装程序会在一个区(region)内的这些可用区间分发 control plane 机器和计算机器。要确保集群的高可用性,请选择至少含有三个可用区的区域。如果您的区域包含的可用区少于三个,安装程序将在可用区中放置多台 control plane 机器。
为确保您提供的子网适合,安装程序会确认以下数据:
- 所有指定的子网都存在。
- 有两个专用子网,一个用于 control plane 机器,一个用于计算机器。
- 子网 CIDR 属于您指定的机器 CIDR。机器不会在您不为其提供私有子网的可用区中置备。如果需要,安装程序会创建管理 control plane 和 worker 节点的公共负载均衡器,Azure 会为其分配一个公共 IP 地址。
如果您销毁了使用现有 VNet 的集群,则不会删除 VNet。
10.4.1.1. 网络安全组要求 复制链接链接已复制到粘贴板!
托管 compute 和 control plane 机器的子网的网络安全组需要特定的访问权限,以确保集群通信正确。您必须创建规则以允许访问所需的集群通信端口。
在安装集群前,必须先设置网络安全组规则。如果您试图在没有所需访问权限的情况下安装集群,安装程序无法访问 Azure API,安装会失败。
| port | 描述 | Control plane(控制平面) | Compute |
|---|---|---|---|
|
| 允许 HTTP 流量 | x | |
|
| 允许 HTTPS 流量 | x | |
|
| 允许与 control plane 机器通信 | x | |
|
| 允许内部与机器配置服务器通信以用于置备机器 | x |
目前,不支持阻止或限制机器配置服务器端点。机器配置服务器必须公开给网络,以便新置备的机器没有现有配置或状态,才能获取其配置。在这个模型中,信任的根是证书签名请求 (CSR) 端点,即 kubelet 发送其证书签名请求以批准加入集群。因此,机器配置不应用于分发敏感信息,如 secret 和证书。
为确保机器配置服务器端点,端口 22623 和 22624 在裸机场景中是安全的,客户必须配置正确的网络策略。
由于集群组件不会修改 Kubernetes 控制器更新的用户提供的网络安全组,因此为 Kubernetes 控制器在不影响其余环境的情况下创建一个伪网络安全组。
10.4.2. 权限划分 复制链接链接已复制到粘贴板!
从 OpenShift Container Platform 4.3 开始,您不需要安装程序置备的基础架构集群部署所需的所有权限。这与您所在机构可能拥有的权限划分类似:一些个人可以在您的云中创建不同的资源。例如,您可以创建特定于应用程序的对象,如实例、存储和负载均衡器,但不能创建与网络相关的组件,如 VNets、子网或入站规则。
您在创建集群时使用的 Azure 凭证不需要 VNets 和核心网络组件(如子网、路由表、互联网网关、NAT 和 VPN)所需的网络权限。您仍然需要获取集群中的机器需要的应用程序资源的权限,如负载均衡器、安全组、存储帐户和节点。
10.4.3. 集群间隔离 复制链接链接已复制到粘贴板!
因为集群无法修改现有子网中的网络安全组,所以无法在 VNet 中相互隔离集群。
10.5. OpenShift Container Platform 互联网访问 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 4.12 中,您需要访问互联网来安装集群。
您必须具有以下互联网访问权限:
- 访问 OpenShift Cluster Manager Hybrid Cloud Console 以下载安装程序并执行订阅管理。如果集群可以访问互联网,并且没有禁用 Telemetry,该服务会自动授权您的集群。
- 访问 Quay.io,以获取安装集群所需的软件包。
- 获取执行集群更新所需的软件包。
如果您的集群无法直接访问互联网,则可以在置备的某些类型的基础架构上执行受限网络安装。在此过程中,您可以下载所需的内容,并使用它为镜像 registry 填充安装软件包。对于某些安装类型,集群要安装到的环境不需要访问互联网。在更新集群前,您要更新镜像 registry 的内容。
10.6. 为集群节点 SSH 访问生成密钥对 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 安装过程中,您可以为安装程序提供 SSH 公钥。密钥通过它们的 Ignition 配置文件传递给 Red Hat Enterprise Linux CoreOS(RHCOS)节点,用于验证对节点的 SSH 访问。密钥添加到每个节点上 core 用户的 ~/.ssh/authorized_keys 列表中,这将启用免密码身份验证。
将密钥传递给节点后,您可以使用密钥对作为用户 核心 通过 SSH 连接到 RHCOS 节点。若要通过 SSH 访问节点,必须由 SSH 为您的本地用户管理私钥身份。
如果要通过 SSH 连接到集群节点来执行安装调试或灾难恢复,则必须在安装过程中提供 SSH 公钥。./openshift-install gather 命令还需要在集群节点上设置 SSH 公钥。
不要在生产环境中跳过这个过程,在生产环境中需要灾难恢复和调试。
您必须使用本地密钥,而不是使用特定平台方法配置 的密钥,如 AWS 密钥对。
流程
如果您在本地计算机上没有可用于在集群节点上进行身份验证的现有 SSH 密钥对,请创建一个。例如,在使用 Linux 操作系统的计算机上运行以下命令:
ssh-keygen -t ed25519 -N '' -f <path>/<file_name>
$ ssh-keygen -t ed25519 -N '' -f <path>/<file_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定新 SSH 密钥的路径和文件名,如
~/.ssh/id_ed25519。如果您已有密钥对,请确保您的公钥位于~/.ssh目录中。
注意如果您计划在
x86_64、ppc64le和s390x架构上安装使用 FIPS 验证或 Modules In Process 加密库的 OpenShift Container Platform 集群。请不要创建使用ed25519算法的密钥。相反,创建一个使用rsa或ecdsa算法的密钥。查看公共 SSH 密钥:
cat <path>/<file_name>.pub
$ cat <path>/<file_name>.pubCopy to Clipboard Copied! Toggle word wrap Toggle overflow 例如,运行以下命令来查看
~/.ssh/id_ed25519.pub公钥:cat ~/.ssh/id_ed25519.pub
$ cat ~/.ssh/id_ed25519.pubCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将 SSH 私钥身份添加到本地用户的 SSH 代理(如果尚未添加)。在集群节点上,或者要使用
./openshift-install gather命令,需要对该密钥进行 SSH 代理管理,才能在集群节点上进行免密码 SSH 身份验证。注意在某些发行版中,自动管理默认 SSH 私钥身份,如
~/.ssh/id_rsa和~/.ssh/id_dsa。如果
ssh-agent进程尚未为您的本地用户运行,请将其作为后台任务启动:eval "$(ssh-agent -s)"
$ eval "$(ssh-agent -s)"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Agent pid 31874
Agent pid 31874Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果集群处于 FIPS 模式,则只使用 FIPS 兼容算法来生成 SSH 密钥。密钥必须是 RSA 或 ECDSA。
将 SSH 私钥添加到
ssh-agent:ssh-add <path>/<file_name>
$ ssh-add <path>/<file_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定 SSH 私钥的路径和文件名,如
~/.ssh/id_ed25519.pub
输出示例
Identity added: /home/<you>/<path>/<file_name> (<computer_name>)
Identity added: /home/<you>/<path>/<file_name> (<computer_name>)Copy to Clipboard Copied! Toggle word wrap Toggle overflow
后续步骤
- 安装 OpenShift Container Platform 时,为安装程序提供 SSH 公钥。
10.7. 获取安装程序 复制链接链接已复制到粘贴板!
在安装 OpenShift Container Platform 前,将安装文件下载到您用于安装的主机上。
先决条件
- 您有一台运行 Linux 或 macOS 的计算机,本地磁盘空间为 500 MB。
流程
- 访问 OpenShift Cluster Manager 站点的 Infrastructure Provider 页面。如果您有红帽帐户,请使用您的凭证登录。如果没有,请创建一个帐户。
- 选择您的基础架构供应商。
进入到安装类型的页面,下载与您的主机操作系统和架构对应的安装程序,并将该文件放在您要存储安装配置文件的目录中。
重要安装程序会在用来安装集群的计算机上创建几个文件。在完成集群安装后,您必须保留安装程序和安装程序所创建的文件。这两个文件都需要删除集群。
重要删除安装程序创建的文件不会删除您的集群,即使集群在安装过程中失败也是如此。要删除集群,请为特定云供应商完成 OpenShift Container Platform 卸载流程。
提取安装程序。例如,在使用 Linux 操作系统的计算机上运行以下命令:
tar -xvf openshift-install-linux.tar.gz
$ tar -xvf openshift-install-linux.tar.gzCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 从 Red Hat OpenShift Cluster Manager 下载安装 pull secret。此 pull secret 允许您与所含授权机构提供的服务进行身份验证,这些服务包括为 OpenShift Container Platform 组件提供容器镜像的 Quay.io。
10.8. 手动创建安装配置文件 复制链接链接已复制到粘贴板!
安装集群要求您手动创建安装配置文件。
先决条件
- 在本地机器上有一个 SSH 公钥用于安装程序。您可以使用密钥在集群节点上进行 SSH 身份验证,以进行调试和灾难恢复。
- 已获取 OpenShift Container Platform 安装程序和集群的 pull secret。
流程
创建一个安装目录来存储所需的安装资产:
mkdir <installation_directory>
$ mkdir <installation_directory>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要您必须创建一个目录。有些安装资产,如 bootstrap X.509 证书的过期间隔较短,因此不得重复使用安装目录。如果要重复使用另一个集群安装中的单个文件,您可以将它们复制到您的目录中。但是,安装资产的文件名可能会在发行版本间有所变化。从以前的 OpenShift Container Platform 版本中复制安装文件时请小心。
对提供的
install-config.yaml文件模板示例进行自定义,并将文件保存到<installation_directory>中。注意此配置文件必须命名为
install-config.yaml。备份
install-config.yaml文件,以便使用它来安装多个集群。重要现在备份
install-config.yaml文件,因为安装过程会在下一步中消耗该文件。
10.8.1. 安装配置参数 复制链接链接已复制到粘贴板!
在部署 OpenShift Container Platform 集群前,您可以提供参数值来描述托管集群的云平台中的帐户,并选择性地自定义集群平台。在创建 install-config.yaml 安装配置文件时,您可以通过命令行为所需参数提供值。如果自定义集群,您可以修改 install-config.yaml 文件以提供有关平台的更多详情。
安装后,您无法在 install-config.yaml 文件中修改这些参数。
10.8.1.1. 所需的配置参数 复制链接链接已复制到粘贴板!
下表描述了所需的安装配置参数:
| 参数 | 描述 | 值 |
|---|---|---|
|
|
| 字符串 |
|
|
云供应商的基域。基域用于创建到 OpenShift Container Platform 集群组件的路由。集群的完整 DNS 名称是 |
完全限定域名或子域名,如 |
|
|
Kubernetes 资源 | 对象 |
|
|
集群的名称。集群的 DNS 记录是 |
小写字母、连字符( |
|
|
要执行安装的具体平台配置: | 对象 |
|
| 从 Red Hat OpenShift Cluster Manager 获取 pull secret,验证从 Quay.io 等服务中下载 OpenShift Container Platform 组件的容器镜像。 |
|
10.8.1.2. 网络配置参数 复制链接链接已复制到粘贴板!
您可以根据现有网络基础架构的要求自定义安装配置。例如,您可以扩展集群网络的 IP 地址块,或者提供不同于默认值的不同 IP 地址块。
仅支持 IPv4 地址。
Red Hat OpenShift Data Foundation 灾难恢复解决方案不支持 Globalnet。对于区域灾难恢复场景,请确保为每个集群中的集群和服务网络使用非重叠的专用 IP 地址。
| 参数 | 描述 | 值 |
|---|---|---|
|
| 集群网络的配置。 | 对象 注意
您无法在安装后修改 |
|
| 要安装的 Red Hat OpenShift Networking 网络插件。 |
|
|
| pod 的 IP 地址块。
默认值为 如果您指定了多个 IP 地址块,块不得重叠。 | 对象数组。例如: networking:
clusterNetwork:
- cidr: 10.128.0.0/14
hostPrefix: 23
|
|
|
使用 IPv4 网络。 |
无类别域间路由(CIDR)表示法中的 IP 地址块。IPv4 块的前缀长度介于 |
|
|
分配给每个节点的子网前缀长度。例如,如果 | 子网前缀。
默认值为 |
|
|
服务的 IP 地址块。默认值为 OpenShift SDN 和 OVN-Kubernetes 网络插件只支持服务网络的一个 IP 地址块。 | CIDR 格式具有 IP 地址块的数组。例如: networking: serviceNetwork: - 172.30.0.0/16
|
|
| 机器的 IP 地址块。 如果您指定了多个 IP 地址块,块不得重叠。 | 对象数组。例如: networking: machineNetwork: - cidr: 10.0.0.0/16
|
|
|
使用 | CIDR 表示法中的 IP 网络块。
例如: 注意
将 |
10.8.1.3. 可选的配置参数 复制链接链接已复制到粘贴板!
下表描述了可选的安装配置参数:
| 参数 | 描述 | 值 |
|---|---|---|
|
| 添加到节点可信证书存储中的 PEM 编码 X.509 证书捆绑包。配置了代理时,也可以使用此信任捆绑包。 | 字符串 |
|
| 控制可选核心组件的安装。您可以通过禁用可选组件来减少 OpenShift Container Platform 集群的空间。如需更多信息,请参阅安装中的"集群功能"页面。 | 字符串数组 |
|
|
选择要启用的一组初始可选功能。有效值为 | 字符串 |
|
|
将可选功能集合扩展到您在 | 字符串数组 |
|
| 组成计算节点的机器的配置。 |
|
|
|
决定池中机器的指令集合架构。目前,不支持具有不同架构的集群。所有池都必须指定相同的架构。有效值为 | 字符串 |
|
|
是否在计算机器上启用或禁用并发多 重要 如果您禁用并发多线程,请确保您的容量规划考虑机器性能显著降低的情况。 |
|
|
|
使用 |
|
|
|
使用 |
|
|
| 要置备的计算机器数量,也称为 worker 机器。 |
大于或等于 |
|
| 为功能集启用集群。功能集是 OpenShift Container Platform 功能的集合,默认情况下不启用。有关在安装过程中启用功能集的更多信息,请参阅"使用功能门启用功能"。 |
字符串.要启用的功能集的名称,如 |
|
| 组成 control plane 的机器的配置。 |
|
|
|
决定池中机器的指令集合架构。目前,不支持具有不同架构的集群。所有池都必须指定相同的架构。有效值为 | 字符串 |
|
|
是否在 control plane 机器上启用或禁用并发多 重要 如果您禁用并发多线程,请确保您的容量规划考虑机器性能显著降低的情况。 |
|
|
|
使用 |
|
|
|
使用 |
|
|
| 要置备的 control plane 机器数量。 |
唯一支持的值是 |
|
| Cloud Credential Operator(CCO)模式。如果没有指定模式,CCO 会动态尝试决定提供的凭证的功能,在支持多个模式的平台上首选 mint 模式。 注意 不是所有 CCO 模式都支持所有云供应商。如需有关 CCO 模式的更多信息,请参阅集群 Operator 参考内容中的 Cloud Credential Operator 条目。 注意
如果您的 AWS 帐户启用了服务控制策略 (SCP),您必须将 |
|
|
|
启用或禁用 FIPS 模式。默认值为 重要
要为集群启用 FIPS 模式,您必须从配置为以 FIPS 模式操作的 Red Hat Enterprise Linux (RHEL) 计算机运行安装程序。有关在 RHEL 中配置 FIPS 模式的更多信息,请参阅在 FIPS 模式中安装该系统。只有在 注意 如果使用 Azure File 存储,则无法启用 FIPS 模式。 |
|
|
| release-image 内容的源和存储库。 |
对象数组。包括一个 |
|
|
使用 | 字符串 |
|
| 指定可能还包含同一镜像的一个或多个仓库。 | 字符串数组 |
|
| 如何发布或公开集群的面向用户的端点,如 Kubernetes API、OpenShift 路由。 |
|
|
| 用于验证对集群机器的访问的 SSH 密钥。 注意
对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定 |
例如, |
10.8.1.4. 其他 Azure 配置参数 复制链接链接已复制到粘贴板!
下表描述了其他 Azure 配置参数。
默认情况下,如果您在 install-config.yaml 文件中指定可用区,安装程序会在一个区(region)内的这些可用区间分发 control plane 机器和计算机器。要确保集群的高可用性,请选择至少含有三个可用区的区域。如果您的区域包含的可用区少于三个,安装程序将在可用区中放置多台 control plane 机器。
| 参数 | 描述 | 值 |
|---|---|---|
|
| 为计算机器启用主机级别的加密。您可以启用这个加密,以及用户管理的服务器端加密。此功能加密虚拟机主机上的临时、临时、缓存和未管理的磁盘。这不是用户管理的服务器端加密的先决条件。 |
|
|
| 虚拟机的 Azure 磁盘大小。 |
以 GB 为单位表示磁盘大小的整数。默认值为 |
|
| 定义磁盘的类型。 |
|
|
| 启用 Azureultra 磁盘用于计算节点上的持久性存储。这需要您的 Azure 区域和区有可用的 ultra 磁盘。 |
|
|
| 包含安装先决条件集中磁盘加密的 Azure 资源组名称。此资源组应和安装集群的资源组不同,以避免在集群销毁时删除 Azure 加密密钥。只有在打算使用用户管理的磁盘加密安装集群时才需要这个值。 |
字符串,如 |
|
| 包含安装先决条件中加密密钥的磁盘加密集名称。 |
字符串,如 |
|
| 定义磁盘加密集所在的磁盘加密集的 Azure 订阅。此辅助磁盘加密集用于加密计算机器。 |
字符串,格式为 |
|
|
启用加速网络。加速网络可让单个根 I/O 虚拟化 (SR-IOV) 为虚拟机提高其网络性能。如果计算机器的实例类型支持 |
|
|
| 为计算机器定义 Azure 实例类型。 | 字符串 |
|
| 安装程序在其中创建计算机器的可用区。 | 字符串列表 |
|
| 为 control plane 机器定义 Azure 实例类型。 | 字符串 |
|
| 安装程序在其中创建 control plane 机器的可用区。 | 字符串列表 |
|
| 为计算机器启用主机级别的加密。您可以启用这个加密,以及用户管理的服务器端加密。此功能加密虚拟机主机上的临时、临时、缓存和未管理的磁盘。这个参数不是用户管理的服务器端加密的先决条件。 |
|
|
| 包含安装先决条件中加密密钥的磁盘加密集名称。 |
字符串,如 |
|
| 包含安装先决条件集中磁盘加密的 Azure 资源组名称。为了避免在集群销毁时删除 Azure 加密密钥,此资源组必须与安装集群的资源组不同。只有在打算使用用户管理的磁盘加密安装集群时才需要这个值。 |
字符串,如 |
|
| 定义磁盘加密集所在的磁盘加密集的 Azure 订阅。此辅助磁盘加密集用于加密计算机器。 |
字符串,格式为 |
|
| 虚拟机的 Azure 磁盘大小。 |
以 GB 为单位表示磁盘大小的整数。默认值为 |
|
| 定义磁盘的类型。 |
|
|
| control plane 和计算机器的 Azure 实例类型。 | Azure 实例类型。 |
|
| 安装程序在其中创建计算和 control plane 机器的可用区。 | 字符串列表。 |
|
| 为 control plane 机器启用主机级别的加密。您可以启用这个加密,以及用户管理的服务器端加密。此功能加密虚拟机主机上的临时、临时、缓存和未管理的磁盘。这不是用户管理的服务器端加密的先决条件。 |
|
|
| 包含安装先决条件集中磁盘加密的 Azure 资源组名称。此资源组应和安装集群的资源组不同,以避免在集群销毁时删除 Azure 加密密钥。只有在打算使用用户管理的磁盘加密安装集群时才需要这个值。 |
字符串,如 |
|
| 包含安装先决条件中加密密钥的磁盘加密集名称。 |
字符串,如 |
|
| 定义磁盘加密集所在的磁盘加密集的 Azure 订阅。这个辅助磁盘加密集用于加密 control plane 机器。 |
字符串,格式为 |
|
| 虚拟机的 Azure 磁盘大小。 |
以 GB 为单位表示磁盘大小的整数。默认值为 |
|
| 定义磁盘的类型。 |
|
|
| 为 control plane 机器上的持久性存储启用 Azureultra 磁盘使用。这需要您的 Azure 区域和区有可用的 ultra 磁盘。 |
|
|
|
启用加速网络。加速网络可让单个根 I/O 虚拟化 (SR-IOV) 为虚拟机提高其网络性能。如果 control plane 机器的实例类型支持 |
|
|
| 包含基域的 DNS 区的资源组的名称。 |
字符串,如 |
|
| 集群要安装到的已有资源组的名称。此资源组必须为空,并且仅用于此特定群集;群集组件假定资源组中所有资源的所有权。如果您将安装程序的服务主体范围限制到这个资源组,您必须确保您的环境中安装程序使用的所有其他资源都有必要的权限,如公共 DNS 区和虚拟网络。使用安装程序销毁集群会删除此资源组。 |
字符串,如 |
|
| 用于将集群连接到互联网的出站路由策略。如果您使用用户定义的路由,则必须在安装集群前配置出站路由。安装程序不负责配置用户定义的路由。 |
|
|
| 托管集群的 Azure 区域的名称。 |
任何有效的区域名称,如 |
|
| 要放入机器的可用区列表。如需高可用性,请至少指定两个区域。 |
区域列表,如 |
|
| 为 control plane 和计算机器上的持久性存储启用 Azureultra 磁盘使用。这需要您的 Azure 区域和区有可用的 ultra 磁盘。 |
|
|
|
包含您要将集群部署到的现有 VNet 的资源组的名称。这个名称不能与 platform. | 字符串. |
|
| 要将集群部署到的现有 VNet 的名称。 | 字符串. |
|
| 要将 control plane 机器部署到的 VNet 中现有子网的名称。 |
有效的 CIDR,如 |
|
| 要将计算机器部署到的 VNet 中现有子网的名称。 |
有效的 CIDR,如 |
|
|
用于使用适当的 Azure API 端点配置 Azure SDK 的 Azure 云环境名称。如果为空,则使用默认值 |
任何有效的云环境,如 |
|
| 启用加速网络。加速网络可让单个根 I/O 虚拟化 (SR-IOV) 为虚拟机提高其网络性能。 |
|
您无法自定义 Azure 可用区,也不能使用 标签来整理 Azure 集群的 Azure 资源。
10.8.2. 集群安装的最低资源要求 复制链接链接已复制到粘贴板!
每台集群机器都必须满足以下最低要求:
| 机器 | 操作系统 | vCPU [1] | 虚拟内存 | Storage | 每秒输入/输出 (IOPS) [2] |
|---|---|---|---|---|---|
| bootstrap | RHCOS | 4 | 16 GB | 100 GB | 300 |
| Control plane(控制平面) | RHCOS | 4 | 16 GB | 100 GB | 300 |
| Compute | RHCOS、RHEL 8.6 及更新版本 [3] | 2 | 8 GB | 100 GB | 300 |
- 当未启用并发多线程(SMT)或超线程时,一个 vCPU 相当于一个物理内核。启用后,使用以下公式来计算对应的比例:(每个内核数的线程)× sockets = vCPU。
- OpenShift Container Platform 和 Kubernetes 对磁盘性能非常敏感,建议使用更快的存储速度,特别是 control plane 节点上需要 10 ms p99 fsync 持续时间的 etcd。请注意,在许多云平台上,存储大小和 IOPS 可一起扩展,因此您可能需要过度分配存储卷来获取足够的性能。
- 与所有用户置备的安装一样,如果您选择在集群中使用 RHEL 计算机器,则负责所有操作系统生命周期管理和维护,包括执行系统更新、应用补丁和完成所有其他必要的任务。RHEL 7 计算机器的使用已弃用,并已在 OpenShift Container Platform 4.10 及更新的版本中删除。
您需要使用将 PremiumIO 参数设置为 true 的 Azure 虚拟机。
如果平台的实例类型满足集群机器的最低要求,则 OpenShift Container Platform 支持使用它。
10.8.3. 为 Azure 测试的实例类型 复制链接链接已复制到粘贴板!
以下 Microsoft Azure 实例类型已经 OpenShift Container Platform 测试。
例 10.1. 基于 64 位 x86 架构的机器类型
-
standardBasv2Family -
standardBSFamily -
standardBsv2Family -
standardDADSv5Family -
standardDASv4Family -
standardDASv5Family -
standardDCACCV5Family -
standardDCADCCV5Family -
standardDCADSv5Family -
standardDCASv5Family -
standardDCSv3Family -
standardDCSv2Family -
standardDDCSv3Family -
standardDDSv4Family -
standardDDSv5Family -
StandardDdsv6Family -
standardDLDSv5Family -
StandardDldsv6Family -
standardDLSv5Family -
StandardDlsv6Family -
standardDSFamily -
standardDSv2Family -
standardDSv2PromoFamily -
standardDSv3Family -
standardDSv4Family -
standardDSv5Family -
StandardDsv6Family -
standardEADSv5Family -
standardEASv4Family -
standardEASv5Family -
standardEBDSv5Family -
standardEBSv5Family -
standardECACCV5Family -
standardECADCCV5Family -
standardECADSv5Family -
standardECASv5Family -
standardEDSv4Family -
standardEDSv5Family -
standardEIADSv5Family -
standardEIASv4Family -
standardEIASv5Family -
standardEIBDSv5Family -
standardEIBSv5Family -
standardEIDSv5Family -
standardEISv3Family -
standardEISv5Family -
standardESv3Family -
standardESv4Family -
standardESv5Family -
standardFXMDVSFamily -
standardFSFamily -
standardFSv2Family -
standardGSFamily -
standardHBrsv2Family -
standardHBSFamily -
standardHBv4Family -
standardHCSFamily -
standardHXFamily -
standardLASv3Family -
standardLasv4Family -
standardLSFamily -
standardLSv2Family -
standardLSv3Family -
standardLsv4Family -
standardMDSHighMemoryv3Family -
standardMDSMediumMemoryv2Family -
standardMDSMediumMemoryv3Family -
standardMIDSHighMemoryv3Family -
standardMIDSMediumMemoryv2Family -
standardMISHighMemoryv3Family -
standardMISMediumMemoryv2Family -
standardMSFamily -
standardMSHighMemoryv3Family -
standardMSMediumMemoryv2Family -
standardMSMediumMemoryv3Family -
StandardNCADSA100v4Family -
Standard NCASv3_T4 Family -
standardNCSv3Family -
standardNDSv2Family -
StandardNGADSV620v1Family -
standardNPSFamily -
StandardNVADSA10v5Family -
StandardNVadsV710v5Family -
Standard NDASv4_A100 Family -
standardNVSv3Family -
standardXEISv4Family
10.8.4. Azure 的自定义 install-config.yaml 文件示例 复制链接链接已复制到粘贴板!
您可以自定义 install-config.yaml 文件,以指定有关 OpenShift Container Platform 集群平台的更多详情,或修改所需参数的值。
此示例 YAML 文件仅供参考。您必须使用安装程序来获取 install-config.yaml 文件,并进行修改。
- 1 10 20
- 必需。
- 2 6
- 如果没有提供这些参数和值,安装程序会提供默认值。
- 3 7
controlPlane部分是一个单个映射,但compute部分是一系列映射。为满足不同数据结构的要求,compute部分的第一行必须以连字符-开头,controlPlane部分的第一行则不以连字符开头。仅使用一个 control plane 池。- 4
- 是否要启用或禁用并发多线程或
超线程。默认情况下,启用并发多线程以提高机器内核的性能。您可以通过将 参数值设置为Disabled来禁用它。如果在某些集群机器中禁用并发多线程,则必须在所有集群机器中禁用它。重要如果您禁用并发多线程,请确保您的容量规划考虑机器性能显著降低的情况。如果您禁用并发多线程,请为您的机器使用较大的虚拟机类型,如
Standard_D8s_v3。 - 5 8
- 您可以指定要使用的磁盘大小(以 GB 为单位)。control plane 节点的最低推荐值为 1024 GB。
- 9
- 指定要将机器部署到的区域列表。如需高可用性,请至少指定两个区域。
- 11
- 要安装的集群网络插件。支持的值有
OVNKubernetes和OpenShiftSDN。默认值为OVNKubernetes。 - 12
- 指定包含基域的 DNS 区的资源组的名称。
- 13
- 指定要安装集群的现有资源组的名称。如果未定义,则会为集群创建新的资源组。
- 14
- 如果使用现有的 VNet,请指定包含它的资源组的名称。
- 15
- 如果使用现有的 VNet,请指定其名称。
- 16
- 如果使用现有的 VNet,请指定托管 control plane 机器的子网名称。
- 17
- 如果使用现有的 VNet,请指定托管计算机器的子网名称。
- 18
- 您可以自定义自己的出站路由。配置用户定义的路由可防止在集群中公开外部端点。出口的用户定义路由需要将集群部署到现有的 VNet。
- 19
- 指定要将集群部署到的 Azure 云环境的名称。将
AzureUS GovernmentCloud设置为部署到 Microsoft Azure Government(MAG)区域。默认值为AzurePublicCloud。 - 21
- 是否启用或禁用 FIPS 模式。默认情况下不启用 FIPS 模式。如果启用了 FIPS 模式,运行 OpenShift Container Platform 的 Red Hat Enterprise Linux CoreOS(RHCOS)机器会绕过默认的 Kubernetes 加密套件,并使用由 RHCOS 提供的加密模块。重要
要为集群启用 FIPS 模式,您必须从配置为以 FIPS 模式操作的 Red Hat Enterprise Linux (RHEL) 计算机运行安装程序。有关在 RHEL 中配置 FIPS 模式的更多信息,请参阅在 FIPS 模式中安装该系统。只有在
x86_64、ppc64le和s390x架构的 OpenShift Container Platform 部署中才支持使用 FIPS 验证的或Modules In Process 加密库。 - 22
- 您可以选择提供您用来访问集群中机器的
sshKey值。注意对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定
ssh-agent进程使用的 SSH 密钥。 - 23
- 如何发布集群的面向用户的端点。将
publish设置为Internal以部署一个私有集群,它不能被互联网访问。默认值为External。
10.8.5. 在安装过程中配置集群范围的代理 复制链接链接已复制到粘贴板!
生产环境可能会拒绝直接访问互联网,而是提供 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命名空间中生成名为user-ca-bundle的配置映射,其包含代理 HTTPS 连接所需的一个或多个额外 CA 证书。然后,Cluster Network Operator 会创建trusted-ca-bundle配置映射,将这些内容与 Red Hat Enterprise Linux CoreOS(RHCOS)信任捆绑包合并,Proxy对象的trustedCA字段中也会引用此配置映射。additionalTrustBundle字段是必需的,除非代理的身份证书由来自 RHCOS 信任捆绑包的颁发机构签名。 - 5
- 可选:决定
Proxy对象的配置以引用trustedCA字段中user-ca-bundle配置映射的策略。允许的值是Proxyonly和Always。仅在配置了http/https代理时,使用Proxyonly引用user-ca-bundle配置映射。使用Always始终引用user-ca-bundle配置映射。默认值为Proxyonly。
注意安装程序不支持代理的
readinessEndpoints字段。注意如果安装程序超时,重启并使用安装程序的
wait-for命令完成部署。例如:./openshift-install wait-for install-complete --log-level debug
$ ./openshift-install wait-for install-complete --log-level debugCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存该文件并在安装 OpenShift Container Platform 时引用。
安装程序会创建一个名为 cluster 的集群范围代理,该代理 使用 提供的 install-config.yaml 文件中的代理设置。如果没有提供代理设置,仍然会创建一个 cluster Proxy 对象,但它会有一个空 spec。
只支持名为 cluster 的 Proxy 对象,且无法创建额外的代理。
10.9. 部署集群 复制链接链接已复制到粘贴板!
您可以在兼容云平台上安装 OpenShift Container Platform。
在初始安装过程中,您只能运行安装程序的 create cluster 命令一次。
先决条件
- 使用托管集群的云平台配置帐户。
- 获取 OpenShift Container Platform 安装程序和集群的 pull secret。
- 验证主机上的云供应商帐户是否有部署集群的正确权限。权限不正确的帐户会导致安装过程失败,并显示包括缺失权限的错误消息。
流程
进入包含安装程序的目录并初始化集群部署:
./openshift-install create cluster --dir <installation_directory> \ --log-level=info$ ./openshift-install create cluster --dir <installation_directory> \1 --log-level=info2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果您在主机上配置的云供应商帐户没有足够的权限来部署集群,安装过程将停止,并显示缺少的权限。
验证
当集群部署成功完成时:
-
终端会显示用于访问集群的说明,包括指向 Web 控制台和
kubeadmin用户的凭证的链接。 -
凭证信息还会输出到
<installation_directory>/.openshift_install.log.
不要删除安装程序或安装程序所创建的文件。需要这两者才能删除集群。
输出示例
-
安装程序生成的 Ignition 配置文件包含在 24 小时后过期的证书,然后在过期时进行续订。如果在更新证书前关闭集群,且集群在 24 小时后重启,集群会自动恢复过期的证书。一个例外是,您必须手动批准待处理的
node-bootstrapper证书签名请求(CSR)来恢复 kubelet 证书。如需更多信息,请参阅从过期的 control plane 证书 中恢复的文档。 - 建议您在 Ignition 配置文件生成后的 12 小时内使用它们,因为 24 小时的证书会在集群安装后的 16 小时到 22 小时间进行轮转。通过在 12 小时内使用 Ignition 配置文件,您可以避免在安装过程中因为执行了证书更新而导致安装失败的问题。
10.10. 安装后最终调整用户管理的加密 复制链接链接已复制到粘贴板!
如果使用用户管理的加密密钥安装 OpenShift Container Platform,您可以通过创建新存储类并授予 Azure 集群资源组写入权限来完成安装。
流程
获取安装程序使用的集群资源组的身份:
如果在
install-config.yaml中指定了现有资源组,请运行以下命令获取其 Azure 身份:az identity list --resource-group "<existing_resource_group>"
$ az identity list --resource-group "<existing_resource_group>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您没有在
install-config.yaml中指定现有资源组,请找到安装程序创建的资源组,然后运行以下命令来获取其 Azure 身份:az group list
$ az group listCopy to Clipboard Copied! Toggle word wrap Toggle overflow az identity list --resource-group "<installer_created_resource_group>"
$ az identity list --resource-group "<installer_created_resource_group>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
运行以下命令,为集群资源组授予角色分配,使其可以写入 Disk Encryption Set:
az role assignment create --role "<privileged_role>" \ --assignee "<resource_group_identity>"$ az role assignment create --role "<privileged_role>" \1 --assignee "<resource_group_identity>"2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,获取在安装前创建的磁盘加密集的
id:az disk-encryption-set show -n <disk_encryption_set_name> \ --resource-group <resource_group_name>$ az disk-encryption-set show -n <disk_encryption_set_name> \1 --resource-group <resource_group_name>2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,获取集群服务主体的身份:
az identity show -g <cluster_resource_group> \ -n <cluster_service_principal_name> \ --query principalId --out tsv$ az identity show -g <cluster_resource_group> \1 -n <cluster_service_principal_name> \2 --query principalId --out tsvCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,创建一个角色分配,为磁盘加密集授予集群服务主体
Contributor的权限:az role assignment create --assignee <cluster_service_principal_id> \ --role 'Contributor' \//$ az role assignment create --assignee <cluster_service_principal_id> \1 --role 'Contributor' \// --scope <disk_encryption_set_id> \2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建使用用户管理的磁盘加密集的存储类:
将以下存储类定义保存到文件中,如
storage-class-definition.yaml:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从您创建的文件创建存储类
managed-premium:oc create -f storage-class-definition.yaml
$ oc create -f storage-class-definition.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
在创建持久性卷以使用加密存储时,选择
managed-premium存储类。
10.11. 通过下载二进制文件安装 OpenShift CLI 复制链接链接已复制到粘贴板!
您可以安装 OpenShift CLI(oc)来使用命令行界面与 OpenShift Container Platform 进行交互。您可以在 Linux、Windows 或 macOS 上安装 oc。
如果安装了旧版本的 oc,则无法使用 OpenShift Container Platform 4.12 中的所有命令。下载并安装新版本的 oc。
在 Linux 上安装 OpenShift CLI
您可以按照以下流程在 Linux 上安装 OpenShift CLI(oc)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 产品变体 下拉列表中选择架构。
- 从 版本 下拉列表中选择适当的版本。
- 点 OpenShift v4.12 Linux Client 条目旁的 Download Now 来保存文件。
解包存档:
tar xvf <file>
$ tar xvf <file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
oc二进制文件放到PATH 中的目录中。要查看您的
PATH,请执行以下命令:echo $PATH
$ echo $PATHCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
安装 OpenShift CLI 后,可以使用
oc命令:oc <command>
$ oc <command>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在 Windows 上安装 OpenShift CLI
您可以按照以下流程在 Windows 上安装 OpenShift CLI(oc)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 版本 下拉列表中选择适当的版本。
- 点 OpenShift v4.12 Windows Client 条目旁的 Download Now 来保存文件。
- 使用 ZIP 程序解压存档。
将
oc二进制文件移到PATH 中的目录中。要查看您的
PATH,请打开命令提示并执行以下命令:path
C:\> pathCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
安装 OpenShift CLI 后,可以使用
oc命令:oc <command>
C:\> oc <command>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在 macOS 上安装 OpenShift CLI
您可以按照以下流程在 macOS 上安装 OpenShift CLI(oc)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 版本 下拉列表中选择适当的版本。
点 OpenShift v4.12 macOS Client 条目旁的 Download Now 来保存文件。
注意对于 macOS arm64,请选择 OpenShift v4.12 macOS arm64 Client 条目。
- 解包和解压存档。
将
oc二进制文件移到 PATH 的目录中。要查看您的
PATH,请打开终端并执行以下命令:echo $PATH
$ echo $PATHCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
安装 OpenShift CLI 后,可以使用
oc命令:oc <command>
$ oc <command>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.12. 使用 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
10.13. OpenShift Container Platform 的 Telemetry 访问 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 4.12 中,默认运行的 Telemetry 服务提供有关集群健康状况和成功更新的指标,需要访问互联网。如果您的集群连接到互联网,Telemetry 会自动运行,并且集群会注册到 OpenShift Cluster Manager Hybrid Cloud Console。
确认 OpenShift Cluster Manager Hybrid Cloud Console 清单正确后,可以由 Telemetry 自动维护,也可以使用 OpenShift Cluster Manager 手动维护,使用订阅监控来跟踪帐户或多集群级别的 OpenShift Container Platform 订阅。
10.14. 后续步骤 复制链接链接已复制到粘贴板!
第 11 章 使用 ARM 模板在 Azure 上安装集群 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 版本 4.12 中,您可以使用您提供的基础架构在 Microsoft Azure 上安装集群。
提供的几个 Azure Resource Manager(ARM) 模板可协助完成这些步骤,也可帮助您自行建模。
进行用户置备的基础架构安装的步骤仅作为示例。使用您提供的基础架构安装集群需要了解云供应商和 OpenShift Container Platform 安装过程。提供的几个 ARM 模板可帮助完成这些步骤,或帮助您自行建模。您也可以自由选择通过其他方法创建所需的资源;模板仅作示例之用。
11.1. 先决条件 复制链接链接已复制到粘贴板!
- 您可以参阅有关 OpenShift Container Platform 安装和更新 流程的详细信息。
- 您可以阅读有关 选择集群安装方法的文档,并为用户准备它。
- 已将 Azure 帐户配置为 托管集群。
-
您下载了 Azure CLI 并安装到您的计算机上。请参阅 Azure 文档中的安装 Azure CLI。以下文档最近使用 Azure CLI 的版本
2.38.0测试。Azure CLI 命令可能会根据您使用的版本的不同而不同。 - 如果您使用防火墙并计划使用 Telemetry 服务,则将防火墙配置为允许集群需要访问的站点。
如果环境中无法访问云身份和访问管理(IAM)API,或者不想将管理员级别的凭证 secret 存储在
kube-system命名空间中,您可以 手动创建和维护 IAM 凭证。注意如果要配置代理,请务必查看此站点列表。
11.2. OpenShift Container Platform 互联网访问 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 4.12 中,您需要访问互联网来安装集群。
您必须具有以下互联网访问权限:
- 访问 OpenShift Cluster Manager Hybrid Cloud Console 以下载安装程序并执行订阅管理。如果集群可以访问互联网,并且没有禁用 Telemetry,该服务会自动授权您的集群。
- 访问 Quay.io,以获取安装集群所需的软件包。
- 获取执行集群更新所需的软件包。
如果您的集群无法直接访问互联网,则可以在置备的某些类型的基础架构上执行受限网络安装。在此过程中,您可以下载所需的内容,并使用它为镜像 registry 填充安装软件包。对于某些安装类型,集群要安装到的环境不需要访问互联网。在更新集群之前,要更新 registry 镜像系统中的内容。
11.3. 配置 Azure 项目 复制链接链接已复制到粘贴板!
在安装 OpenShift Container Platform 之前,您必须配置 Azure 项目来托管它。
所有通过公共端点提供的 Azure 资源均存在资源名称的限制,您无法创建使用某些名称的资源。如需 Azure 限制词语列表,请参阅 Azure 文档中的解决保留资源名称错误。
11.3.1. Azure 帐户限值 复制链接链接已复制到粘贴板!
OpenShift Container Platform 集群使用诸多 Microsoft Azure 组件,默认的 Azure 订阅和服务限值、配额和约束会影响您安装 OpenShift Container Platform 集群的能力。
默认的限制因服务类别的不同(如 Free Trial 或 Pay-As-You-Go)以及系列的不同(如 Dv2 、F 或 G)而有所不同。例如,对于 Enterprise Agreement 订阅的默认限制是 350 个内核。
在 Azure 上安装默认集群前,请检查您的订阅类型的限制,如有必要,请提高帐户的配额限制。
下表总结了 Azure 组件,它们的限值会影响您安装和运行 OpenShift Container Platform 集群的能力。
| 组件 | 默认所需的组件数 | 默认 Azure 限值 | 描述 | ||||||
|---|---|---|---|---|---|---|---|---|---|
| vCPU | 40 | 每个区域 20 个 | 默认集群需要 40 个 vCPU,因此您必须提高帐户限值。 默认情况下,每个集群创建以下实例:
由于 Bootstrap 机器使用 若要部署更多 worker 节点、启用自动扩展、部署大型工作负载或使用不同的实例类型,您必须进一步提高帐户的 vCPU 限值,以确保集群可以部署您需要的机器。 | ||||||
| OS Disk | 7 | 每个集群机器必须至少有 100 GB 存储和 300 IOPS。虽然这些值是最低支持的值,但对于具有密集型工作负载的生产环境集群和集群,建议使用更快的存储。有关优化性能存储的更多信息,请参阅"扩展和性能"部分中的页面标题为"优化存储"。 | |||||||
| VNet | 1 | 每个区域 1000 个 | 每个默认集群都需要一个虚拟网络 (VNet),此网络包括两个子网。 | ||||||
| 网络接口 | 7 | 每个区域 65,536 个 | 每个默认集群都需要 7 个网络接口。如果您要创建更多机器或者您部署的工作负载要创建负载均衡器,则集群会使用更多的网络接口。 | ||||||
| 网络安全组 | 2 | 5000 | 每个集群为 VNet 中的每个子网创建网络安全组。默认集群为 control plane 和计算节点子网创建网络安全组:
| ||||||
| 网络负载均衡器 | 3 | 每个区域 1000 个 | 每个集群都会创建以下负载均衡器:
如果您的应用程序创建了更多的 Kubernetes | ||||||
| 公共 IP 地址 | 3 | 两个公共负载均衡器各自使用一个公共 IP 地址。bootstrap 机器也使用一个公共 IP 地址,以便您可以在安装期间通过 SSH 连接到该机器来进行故障排除。bootstrap 节点的 IP 地址仅在安装过程中使用。 | |||||||
| 专用 IP 地址 | 7 | 内部负载均衡器、三台 control plane 机器中的每一台以及三台 worker 机器中的每一台各自使用一个专用 IP 地址。 | |||||||
| Spot VM vCPU(可选) | 0 如果配置 spot 虚拟机,您的集群必须为每个计算节点有两个 spot VM vCPU。 | 每个区域 20 个 | 这是可选组件。要使用 spot 虚拟机,您必须将 Azure 默认限值增加到集群中至少有两倍的计算节点数量。 注意 不建议将 spot 虚拟机用于 control plane 节点。 |
11.3.2. 在 Azure 中配置公共 DNS 区 复制链接链接已复制到粘贴板!
要安装 OpenShift Container Platform,您使用的 Microsoft Azure 帐户必须在帐户中具有一个专用的公共托管 DNS 区。此区域必须对域具有权威。此服务为集群外部连接提供集群 DNS 解析和名称查询。
流程
标识您的域或子域,以及注册商(registrar)。您可以转移现有的域和注册商,或通过 Azure 或其他来源获取新的域和注册商。
注意如需通过 Azure 购买域的更多信息,请参阅 Azure 文档中的购买 Azure 应用服务的自定义域名。
- 如果您使用现有的域和注册商,请将其 DNS 迁移到 Azure。请参阅 Azure 文档中的将活动 DNS 名称迁移到 Azure 应用服务。
为您的域配置 DNS。按照 Azure 文档中教程:在 Azure DNS 中托管域部分里的步骤,为您的域或子域创建一个公共托管区,提取新的权威名称服务器,并更新您的域使用的名称服务器的注册商记录。
使用合适的根域(如
openshiftcorp.com)或子域(如clusters.openshiftcorp.com)。- 如果您使用子域,请按照您公司的流程将其委派记录添加到父域。
您可以通过访问此 示例来创建 DNS 区域来查看 Azure 的 DNS 解决方案。
11.3.3. 提高 Azure 帐户限值 复制链接链接已复制到粘贴板!
要提高帐户限值,请在 Azure 门户上提交支持请求。
每一支持请求只能提高一种类型的配额。
流程
- 从 Azure 门户,点击左下角的 Help + suport。
点击 New support request,然后选择所需的值:
- 从 Issue type 列表中,选择 Service and subscription limits (quotas)。
- 从 Subscription 列表中,选择要修改的订阅。
- 从 Quota type 列表中,选择要提高的配额。例如,选择 Compute-VM (cores-vCPUs) subscription limit increases 以增加 vCPU 的数量,这是安装集群所必须的。
- 点击 Next: Solutions。
在 Problem Details 页面中,提供您要提高配额所需的信息:
- 点击 Provide details,然后在 Quota details 窗口中提供所需的详情。
- 在 SUPPORT METHOD 和 CONTACT INFO 部分中,提供问题严重性和您的联系详情。
- 点击 Next: Review + create,然后点击 Create。
11.3.4. 证书签名请求管理 复制链接链接已复制到粘贴板!
在使用您置备的基础架构时,集群只能有限地访问自动机器管理,因此您必须提供一种在安装后批准集群证书签名请求 (CSR) 的机制。kube-controller-manager 只能批准 kubelet 客户端 CSR。machine-approver 无法保证使用 kubelet 凭证请求的提供证书的有效性,因为它不能确认是正确的机器发出了该请求。您必须决定并实施一种方法,以验证 kubelet 提供证书请求的有效性并进行批准。
11.3.5. 所需的 Azure 角色 复制链接链接已复制到粘贴板!
OpenShift Container Platform 需要一个服务主体,以便可以管理 Microsoft Azure 资源。在创建服务主体前,请查看以下信息:
您的 Azure 帐户订阅必须具有以下角色:
-
User Access Administrator -
贡献者
您的 Azure Active Directory (AD)必须具有以下权限:
-
"microsoft.directory/servicePrincipals/createAsOwner"
要在 Azure 门户上设置角色,请参阅 Azure 文档中的使用 RBAC 和 Azure 门户管理对 Azure 资源的访问。
11.3.6. 用户置备的基础架构所需的 Azure 权限 复制链接链接已复制到粘贴板!
当您为服务主体分配 Contributor 和 User Access Administrator 角色时,会自动授予所有所需的权限。
如果机构的安全策略需要更严格的权限集,您可以创建具有所需权限的自定义角色。在 Microsoft Azure 上创建 OpenShift Container Platform 集群需要以下权限。
例 11.1. 创建授权资源所需的权限
-
Microsoft.Authorization/policies/audit/action -
Microsoft.Authorization/policies/auditIfNotExists/action -
Microsoft.Authorization/roleAssignments/read -
Microsoft.Authorization/roleAssignments/write
例 11.2. 创建计算资源所需的权限
-
Microsoft.Compute/images/read -
Microsoft.Compute/images/write -
Microsoft.Compute/images/delete -
Microsoft.Compute/availabilitySets/read -
Microsoft.Compute/disks/beginGetAccess/action -
Microsoft.Compute/disks/delete -
Microsoft.Compute/disks/read -
Microsoft.Compute/disks/write -
Microsoft.Compute/galleries/images/read -
Microsoft.Compute/galleries/images/versions/read -
Microsoft.Compute/galleries/images/versions/write -
Microsoft.Compute/galleries/images/write -
Microsoft.Compute/galleries/read -
Microsoft.Compute/galleries/write -
Microsoft.Compute/snapshots/read -
Microsoft.Compute/snapshots/write -
Microsoft.Compute/snapshots/delete -
Microsoft.Compute/virtualMachines/delete -
Microsoft.Compute/virtualMachines/powerOff/action -
Microsoft.Compute/virtualMachines/read -
Microsoft.Compute/virtualMachines/write -
Microsoft.Compute/virtualMachines/deallocate/action
例 11.3. 创建身份管理资源所需的权限
-
Microsoft.ManagedIdentity/userAssignedIdentities/assign/action -
Microsoft.ManagedIdentity/userAssignedIdentities/read -
Microsoft.ManagedIdentity/userAssignedIdentities/write
例 11.4. 创建网络资源所需的权限
-
Microsoft.Network/dnsZones/A/write -
Microsoft.Network/dnsZones/CNAME/write -
Microsoft.Network/dnszones/CNAME/read -
Microsoft.Network/dnszones/read -
Microsoft.Network/loadBalancers/backendAddressPools/join/action -
Microsoft.Network/loadBalancers/backendAddressPools/read -
Microsoft.Network/loadBalancers/backendAddressPools/write -
Microsoft.Network/loadBalancers/read -
Microsoft.Network/loadBalancers/write -
Microsoft.Network/networkInterfaces/delete -
Microsoft.Network/networkInterfaces/join/action -
Microsoft.Network/networkInterfaces/read -
Microsoft.Network/networkInterfaces/write -
Microsoft.Network/networkSecurityGroups/join/action -
Microsoft.Network/networkSecurityGroups/read -
Microsoft.Network/networkSecurityGroups/securityRules/delete -
Microsoft.Network/networkSecurityGroups/securityRules/read -
Microsoft.Network/networkSecurityGroups/securityRules/write -
Microsoft.Network/networkSecurityGroups/write -
Microsoft.Network/privateDnsZones/A/read -
Microsoft.Network/privateDnsZones/A/write -
Microsoft.Network/privateDnsZones/A/delete -
Microsoft.Network/privateDnsZones/SOA/read -
Microsoft.Network/privateDnsZones/read -
Microsoft.Network/privateDnsZones/virtualNetworkLinks/read -
Microsoft.Network/privateDnsZones/virtualNetworkLinks/write -
Microsoft.Network/privateDnsZones/write -
Microsoft.Network/publicIPAddresses/delete -
Microsoft.Network/publicIPAddresses/join/action -
Microsoft.Network/publicIPAddresses/read -
Microsoft.Network/publicIPAddresses/write -
Microsoft.Network/virtualNetworks/join/action -
Microsoft.Network/virtualNetworks/read -
Microsoft.Network/virtualNetworks/subnets/join/action -
Microsoft.Network/virtualNetworks/subnets/read -
Microsoft.Network/virtualNetworks/subnets/write -
Microsoft.Network/virtualNetworks/write
例 11.5. 检查资源健康状况所需的权限
-
Microsoft.Resourcehealth/healthevent/Activated/action -
Microsoft.Resourcehealth/healthevent/InProgress/action -
Microsoft.Resourcehealth/healthevent/Pending/action -
Microsoft.Resourcehealth/healthevent/Resolved/action -
Microsoft.Resourcehealth/healthevent/Updated/action
例 11.6. 创建资源组所需的权限
-
Microsoft.Resources/subscriptions/resourceGroups/read -
Microsoft.Resources/subscriptions/resourcegroups/write
例 11.7. 创建资源标签所需的权限
-
Microsoft.Resources/tags/write
例 11.8. 创建存储资源所需的权限
-
Microsoft.Storage/storageAccounts/blobServices/read -
Microsoft.Storage/storageAccounts/blobServices/containers/write -
Microsoft.Storage/storageAccounts/fileServices/read -
Microsoft.Storage/storageAccounts/fileServices/shares/read -
Microsoft.Storage/storageAccounts/fileServices/shares/write -
Microsoft.Storage/storageAccounts/fileServices/shares/delete -
Microsoft.Storage/storageAccounts/listKeys/action -
Microsoft.Storage/storageAccounts/read -
Microsoft.Storage/storageAccounts/write
例 11.9. 创建部署所需的权限
-
Microsoft.Resources/deployments/read -
Microsoft.Resources/deployments/write -
Microsoft.Resources/deployments/validate/action -
Microsoft.Resources/deployments/operationstatuses/read
例 11.10. 创建计算资源的可选权限
-
Microsoft.Compute/availabilitySets/delete -
Microsoft.Compute/availabilitySets/write
例 11.11. 创建 marketplace 虚拟机资源的可选权限
-
Microsoft.MarketplaceOrdering/offertypes/publishers/offers/plans/agreements/read -
Microsoft.MarketplaceOrdering/offertypes/publishers/offers/plans/agreements/write
例 11.12. 启用用户管理加密的可选权限
-
Microsoft.Compute/diskEncryptionSets/read -
Microsoft.Compute/diskEncryptionSets/write -
Microsoft.Compute/diskEncryptionSets/delete -
Microsoft.KeyVault/vaults/read -
Microsoft.KeyVault/vaults/write -
Microsoft.KeyVault/vaults/delete -
Microsoft.KeyVault/vaults/deploy/action -
Microsoft.KeyVault/vaults/keys/read -
Microsoft.KeyVault/vaults/keys/write -
Microsoft.Features/providers/features/register/action
删除 Microsoft Azure 上的 OpenShift Container Platform 集群需要以下权限。
例 11.13. 删除授权资源所需的权限
-
Microsoft.Authorization/roleAssignments/delete
例 11.14. 删除计算资源所需的权限
-
Microsoft.Compute/disks/delete -
Microsoft.Compute/galleries/delete -
Microsoft.Compute/galleries/images/delete -
Microsoft.Compute/galleries/images/versions/delete -
Microsoft.Compute/virtualMachines/delete -
Microsoft.Compute/images/delete
例 11.15. 删除身份管理资源所需的权限
-
Microsoft.ManagedIdentity/userAssignedIdentities/delete
例 11.16. 删除网络资源所需的权限
-
Microsoft.Network/dnszones/read -
Microsoft.Network/dnsZones/A/read -
Microsoft.Network/dnsZones/A/delete -
Microsoft.Network/dnsZones/CNAME/read -
Microsoft.Network/dnsZones/CNAME/delete -
Microsoft.Network/loadBalancers/delete -
Microsoft.Network/networkInterfaces/delete -
Microsoft.Network/networkSecurityGroups/delete -
Microsoft.Network/privateDnsZones/read -
Microsoft.Network/privateDnsZones/A/read -
Microsoft.Network/privateDnsZones/delete -
Microsoft.Network/privateDnsZones/virtualNetworkLinks/delete -
Microsoft.Network/publicIPAddresses/delete -
Microsoft.Network/virtualNetworks/delete
例 11.17. 检查资源健康状况所需的权限
-
Microsoft.Resourcehealth/healthevent/Activated/action -
Microsoft.Resourcehealth/healthevent/Resolved/action -
Microsoft.Resourcehealth/healthevent/Updated/action
例 11.18. 删除资源组所需的权限
-
Microsoft.Resources/subscriptions/resourcegroups/delete
例 11.19. 删除存储资源所需的权限
-
Microsoft.Storage/storageAccounts/delete -
Microsoft.Storage/storageAccounts/listKeys/action
要在 Azure 上安装 OpenShift Container Platform,您必须将资源组创建的权限范围到您的订阅。创建资源组后,您可以将剩余权限的范围限定到所创建的资源组。如果其他资源组中存在公共 DNS 区域,则必须始终将网络 DNS 区域相关权限应用到您的订阅。
在删除 OpenShift Container Platform 集群时,您可以将订阅的所有权限限定到您的订阅。
11.3.7. 创建服务主体 复制链接链接已复制到粘贴板!
由于 OpenShift Container Platform 及其安装程序使用 Azure Resource Manager 创建 Microsoft Azure 资源,因此您必须创建一个服务主体来代表它。
先决条件
流程
登录 Azure CLI:
az login
$ az loginCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您的 Azure 帐户使用订阅,请确定您使用正确的订阅:
查看可用帐户列表并记录您要用于集群的订阅的
tenantId值:az account list --refresh
$ az account list --refreshCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 查看您的活跃帐户详情,确认
tenantId值与您要使用的订阅匹配:az account show
$ az account showCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 确保
tenantId参数的值是正确的订阅 ID。
如果您使用的订阅不正确,请更改活跃的订阅:
az account set -s <subscription_id>
$ az account set -s <subscription_id>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定订阅 ID。
验证订阅 ID 更新:
az account show
$ az account showCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
记录输出中的
tenantId和id参数值。OpenShift Container Platform 安装过程中需要这些值。 为您的帐户创建服务主体:
az ad sp create-for-rbac --role <role_name> \ --name <service_principal> \ --scopes /subscriptions/<subscription_id>$ az ad sp create-for-rbac --role <role_name> \1 --name <service_principal> \2 --scopes /subscriptions/<subscription_id>3 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
记录前面输出中
appId和password参数的值。OpenShift Container Platform 安装过程中需要这些值。 如果您将
Contributor角色应用到服务主体,请运行以下命令来分配User Administrator Access角色:az role assignment create --role "User Access Administrator" \ --assignee-object-id $(az ad sp show --id <appId> --query id -o tsv)
$ az role assignment create --role "User Access Administrator" \ --assignee-object-id $(az ad sp show --id <appId> --query id -o tsv)1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 为您的服务主体指定
appId参数值。
11.3.8. 支持的 Azure 区域 复制链接链接已复制到粘贴板!
安装程序会根据您的订阅动态地生成可用的 Microsoft Azure 区域列表。
支持的 Azure 公共区域
-
australiacentral(Australia Central) -
australiaeast(Australia East) -
australiasoutheast(Australia South East) -
brazilsouth(Brazil South) -
canadacentral(Canada Central) -
canadaeast(Canada East) -
centralindia(Central India) -
centralus(Central US) -
eastasia(East Asia) -
eastus(East US) -
eastus2(East US 2) -
francecentral(France Central) -
germanywestcentral(Germany West Central) -
israelcentral(Israel Central) -
italynorth(Italy North) -
japaneast(Japan East) -
japanwest(Japan West) -
koreacentral(Korea Central) -
koreasouth(Korea South) -
mexicocentral(Mexico Central) -
northcentralus(North Central US) -
northeurope(North Europe) -
norwayeast(Norway East) -
polandcentral(Poland Central) -
qatarcentral(Qatar Central) -
southafricanorth(South Africa North) -
southcentralus(South Central US) -
southeastasia(Southeast Asia) -
southindia(South India) -
swedencentral(Sweden Central) -
switzerlandnorth(Switzerland North) -
uaenorth(UAE North) -
uksouth(UK South) -
ukwest(UK West) -
westcentralus(West Central US) -
westeurope(West Europe) -
westindia(West India) -
westus(West US) -
westus2(West US 2) -
westus3(West US 3)
支持的 Azure 政府区域
OpenShift Container Platform 4.6 添加了对以下 Microsoft Azure Government(MAG)区域的支持:
-
usgovtexas(US Gov Texas) -
usgovvirginia(US Gov Virginia)
您可以参阅 Azure 文档来了解与所有可用 MAG 区域的信息。其他 MAG 区域应该可以与 OpenShift Container Platform 一起工作,但并没有经过测试。
11.4. 具有用户置备基础架构的集群的要求 复制链接链接已复制到粘贴板!
对于包含用户置备的基础架构的集群,您必须部署所有所需的机器。
本节论述了在用户置备的基础架构上部署 OpenShift Container Platform 的要求。
11.4.1. 集群安装所需的机器 复制链接链接已复制到粘贴板!
最小的 OpenShift Container Platform 集群需要以下主机:
| 主机 | 描述 |
|---|---|
| 一个临时 bootstrap 机器 | 集群需要 bootstrap 机器在三台 control plane 机器上部署 OpenShift Container Platform 集群。您可在安装集群后删除 bootstrap 机器。 |
| 三台 control plane 机器 | control plane 机器运行组成 control plane 的 Kubernetes 和 OpenShift Container Platform 服务。 |
| 至少两台计算机器,也称为 worker 机器。 | OpenShift Container Platform 用户请求的工作负载在计算机器上运行。 |
要保持集群的高可用性,请将独立的物理主机用于这些集群机器。
bootstrap 和 control plane 机器必须使用 Red Hat Enterprise Linux CoreOS(RHCOS)作为操作系统。但是,计算机器可以在 Red Hat Enterprise Linux CoreOS(RHCOS)、Red Hat Enterprise Linux(RHEL) 8.6 和更高的版本。
请注意,RHCOS 基于 Red Hat Enterprise Linux(RHEL)8,并继承其所有硬件认证和要求。查看 红帽企业 Linux 技术功能和限制。
11.4.2. 集群安装的最低资源要求 复制链接链接已复制到粘贴板!
每台集群机器都必须满足以下最低要求:
| 机器 | 操作系统 | vCPU [1] | 虚拟内存 | Storage | 每秒输入/输出 (IOPS) [2] |
|---|---|---|---|---|---|
| bootstrap | RHCOS | 4 | 16 GB | 100 GB | 300 |
| Control plane(控制平面) | RHCOS | 4 | 16 GB | 100 GB | 300 |
| Compute | RHCOS、RHEL 8.6 及更新版本 [3] | 2 | 8 GB | 100 GB | 300 |
- 当未启用并发多线程(SMT)或超线程时,一个 vCPU 相当于一个物理内核。启用后,使用以下公式来计算对应的比例:(每个内核数的线程)× sockets = vCPU。
- OpenShift Container Platform 和 Kubernetes 对磁盘性能非常敏感,建议使用更快的存储速度,特别是 control plane 节点上需要 10 ms p99 fsync 持续时间的 etcd。请注意,在许多云平台上,存储大小和 IOPS 可一起扩展,因此您可能需要过度分配存储卷来获取足够的性能。
- 与所有用户置备的安装一样,如果您选择在集群中使用 RHEL 计算机器,则负责所有操作系统生命周期管理和维护,包括执行系统更新、应用补丁和完成所有其他必要的任务。RHEL 7 计算机器的使用已弃用,并已在 OpenShift Container Platform 4.10 及更新的版本中删除。
您需要使用将 PremiumIO 参数设置为 true 的 Azure 虚拟机。
如果平台的实例类型满足集群机器的最低要求,则 OpenShift Container Platform 支持使用它。
11.4.3. 为 Azure 测试的实例类型 复制链接链接已复制到粘贴板!
以下 Microsoft Azure 实例类型已经 OpenShift Container Platform 测试。
例 11.20. 基于 64 位 x86 架构的机器类型
-
standardBasv2Family -
standardBSFamily -
standardBsv2Family -
standardDADSv5Family -
standardDASv4Family -
standardDASv5Family -
standardDCACCV5Family -
standardDCADCCV5Family -
standardDCADSv5Family -
standardDCASv5Family -
standardDCSv3Family -
standardDCSv2Family -
standardDDCSv3Family -
standardDDSv4Family -
standardDDSv5Family -
StandardDdsv6Family -
standardDLDSv5Family -
StandardDldsv6Family -
standardDLSv5Family -
StandardDlsv6Family -
standardDSFamily -
standardDSv2Family -
standardDSv2PromoFamily -
standardDSv3Family -
standardDSv4Family -
standardDSv5Family -
StandardDsv6Family -
standardEADSv5Family -
standardEASv4Family -
standardEASv5Family -
standardEBDSv5Family -
standardEBSv5Family -
standardECACCV5Family -
standardECADCCV5Family -
standardECADSv5Family -
standardECASv5Family -
standardEDSv4Family -
standardEDSv5Family -
standardEIADSv5Family -
standardEIASv4Family -
standardEIASv5Family -
standardEIBDSv5Family -
standardEIBSv5Family -
standardEIDSv5Family -
standardEISv3Family -
standardEISv5Family -
standardESv3Family -
standardESv4Family -
standardESv5Family -
standardFXMDVSFamily -
standardFSFamily -
standardFSv2Family -
standardGSFamily -
standardHBrsv2Family -
standardHBSFamily -
standardHBv4Family -
standardHCSFamily -
standardHXFamily -
standardLASv3Family -
standardLasv4Family -
standardLSFamily -
standardLSv2Family -
standardLSv3Family -
standardLsv4Family -
standardMDSHighMemoryv3Family -
standardMDSMediumMemoryv2Family -
standardMDSMediumMemoryv3Family -
standardMIDSHighMemoryv3Family -
standardMIDSMediumMemoryv2Family -
standardMISHighMemoryv3Family -
standardMISMediumMemoryv2Family -
standardMSFamily -
standardMSHighMemoryv3Family -
standardMSMediumMemoryv2Family -
standardMSMediumMemoryv3Family -
StandardNCADSA100v4Family -
Standard NCASv3_T4 Family -
standardNCSv3Family -
standardNDSv2Family -
StandardNGADSV620v1Family -
standardNPSFamily -
StandardNVADSA10v5Family -
StandardNVadsV710v5Family -
标准 NDASv4_A100 Family -
standardNVSv3Family -
standardXEISv4Family
11.5. 选择 Azure Marketplace 镜像 复制链接链接已复制到粘贴板!
如果要使用 Azure Marketplace 服务部署 OpenShift Container Platform 集群,您必须首先获取 Azure Marketplace 镜像。安装程序使用这个镜像来部署 worker 节点。在获取您的镜像时,请考虑以下事项:
-
虽然镜像相同,但 Azure Marketplace publisher 根据您的区域。如果您位于北美,请将
redhat指定为发布者。如果您位于 EMEA,请将redhat-limited指定为发布者。 -
此项优惠包括
rh-ocp-workerSKU 和rh-ocp-worker-gen1SKU。rh-ocp-workerSKU 代表 Hyper-V 生成版本 2 虚拟机镜像。OpenShift Container Platform 中使用的默认实例类型与版本 2 兼容。如果您计划使用与版本 1 兼容的实例类型,请使用与rh-ocp-worker-gen1SKU 关联的镜像。rh-ocp-worker-gen1SKU 代表 Hyper-V 版本 1 虚拟机镜像。
在使用 64 位 ARM 实例的集群上不支持使用 Azure marketplace 安装镜像。
您应该只修改计算机器的 RHCOS 镜像以使用 Azure Marketplace 镜像。control plane 机器和基础架构节点不需要 OpenShift Container Platform 订阅,且默认使用公共 RHCOS 默认镜像,这不会对 Azure bill 造成订阅成本。因此,您不应该修改集群默认引导镜像或 control plane 引导镜像。将 Azure Marketplace 镜像应用到它们时,会生成无法恢复的额外许可成本。
先决条件
-
已安装 Azure CLI 客户端
(az)。 - 您的 Azure 帐户为产品授权,您使用 Azure CLI 客户端登录到此帐户。
流程
运行以下命令之一,显示所有可用的 OpenShift Container Platform 镜像:
北美:
az vm image list --all --offer rh-ocp-worker --publisher redhat -o table
$ az vm image list --all --offer rh-ocp-worker --publisher redhat -o tableCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Offer Publisher Sku Urn Version ------------- -------------- ------------------ -------------------------------------------------------------- -------------- rh-ocp-worker RedHat rh-ocp-worker RedHat:rh-ocp-worker:rh-ocpworker:4.8.2021122100 4.8.2021122100 rh-ocp-worker RedHat rh-ocp-worker-gen1 RedHat:rh-ocp-worker:rh-ocp-worker-gen1:4.8.2021122100 4.8.2021122100
Offer Publisher Sku Urn Version ------------- -------------- ------------------ -------------------------------------------------------------- -------------- rh-ocp-worker RedHat rh-ocp-worker RedHat:rh-ocp-worker:rh-ocpworker:4.8.2021122100 4.8.2021122100 rh-ocp-worker RedHat rh-ocp-worker-gen1 RedHat:rh-ocp-worker:rh-ocp-worker-gen1:4.8.2021122100 4.8.2021122100Copy to Clipboard Copied! Toggle word wrap Toggle overflow 欧洲、中东和非洲地区:
az vm image list --all --offer rh-ocp-worker --publisher redhat-limited -o table
$ az vm image list --all --offer rh-ocp-worker --publisher redhat-limited -o tableCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Offer Publisher Sku Urn Version ------------- -------------- ------------------ -------------------------------------------------------------- -------------- rh-ocp-worker redhat-limited rh-ocp-worker redhat-limited:rh-ocp-worker:rh-ocp-worker:4.8.2021122100 4.8.2021122100 rh-ocp-worker redhat-limited rh-ocp-worker-gen1 redhat-limited:rh-ocp-worker:rh-ocp-worker-gen1:4.8.2021122100 4.8.2021122100
Offer Publisher Sku Urn Version ------------- -------------- ------------------ -------------------------------------------------------------- -------------- rh-ocp-worker redhat-limited rh-ocp-worker redhat-limited:rh-ocp-worker:rh-ocp-worker:4.8.2021122100 4.8.2021122100 rh-ocp-worker redhat-limited rh-ocp-worker-gen1 redhat-limited:rh-ocp-worker:rh-ocp-worker-gen1:4.8.2021122100 4.8.2021122100Copy to Clipboard Copied! Toggle word wrap Toggle overflow
注意无论您安装的 OpenShift Container Platform 版本是什么,要使用的 Azure Marketplace 镜像的正确版本都是 4.8。如果需要,您的虚拟机会在安装过程中自动升级。
运行以下命令之一检查您的所提供的镜像:
北美:
az vm image show --urn redhat:rh-ocp-worker:rh-ocp-worker:<version>
$ az vm image show --urn redhat:rh-ocp-worker:rh-ocp-worker:<version>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 欧洲、中东和非洲地区:
az vm image show --urn redhat-limited:rh-ocp-worker:rh-ocp-worker:<version>
$ az vm image show --urn redhat-limited:rh-ocp-worker:rh-ocp-worker:<version>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
运行以下命令之一查看提供的术语:
北美:
az vm image terms show --urn redhat:rh-ocp-worker:rh-ocp-worker:<version>
$ az vm image terms show --urn redhat:rh-ocp-worker:rh-ocp-worker:<version>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 欧洲、中东和非洲地区:
az vm image terms show --urn redhat-limited:rh-ocp-worker:rh-ocp-worker:<version>
$ az vm image terms show --urn redhat-limited:rh-ocp-worker:rh-ocp-worker:<version>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
运行以下命令之一接受产品条款:
北美:
az vm image terms accept --urn redhat:rh-ocp-worker:rh-ocp-worker:<version>
$ az vm image terms accept --urn redhat:rh-ocp-worker:rh-ocp-worker:<version>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 欧洲、中东和非洲地区:
az vm image terms accept --urn redhat-limited:rh-ocp-worker:rh-ocp-worker:<version>
$ az vm image terms accept --urn redhat-limited:rh-ocp-worker:rh-ocp-worker:<version>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
记录您的所提供的镜像详情。如果使用 Azure Resource Manager (ARM) 模板来部署 worker 节点:
-
您可以通过删除
id参数,并使用您的值来添加offer,publisher,sku, andversion参数来更新storageProfile.imageReference。 为虚拟机 (VM) 指定一个
计划。示例
06_workers.jsonARM 模板带有一个更新的storageProfile.imageReference对象和一个特定的计划Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
您可以通过删除
11.6. 获取安装程序 复制链接链接已复制到粘贴板!
在安装 OpenShift Container Platform 前,将安装文件下载到您用于安装的主机上。
先决条件
- 您有一台运行 Linux 或 macOS 的计算机,本地磁盘空间为 500 MB。
流程
- 访问 OpenShift Cluster Manager 站点的 Infrastructure Provider 页面。如果您有红帽帐户,请使用您的凭证登录。如果没有,请创建一个帐户。
- 选择您的基础架构供应商。
进入到安装类型的页面,下载与您的主机操作系统和架构对应的安装程序,并将该文件放在您要存储安装配置文件的目录中。
重要安装程序会在用来安装集群的计算机上创建几个文件。在完成集群安装后,您必须保留安装程序和安装程序所创建的文件。这两个文件都需要删除集群。
重要删除安装程序创建的文件不会删除您的集群,即使集群在安装过程中失败也是如此。要删除集群,请为特定云供应商完成 OpenShift Container Platform 卸载流程。
提取安装程序。例如,在使用 Linux 操作系统的计算机上运行以下命令:
tar -xvf openshift-install-linux.tar.gz
$ tar -xvf openshift-install-linux.tar.gzCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 从 Red Hat OpenShift Cluster Manager 下载安装 pull secret。此 pull secret 允许您与所含授权机构提供的服务进行身份验证,这些服务包括为 OpenShift Container Platform 组件提供容器镜像的 Quay.io。
11.7. 为集群节点 SSH 访问生成密钥对 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 安装过程中,您可以为安装程序提供 SSH 公钥。密钥通过它们的 Ignition 配置文件传递给 Red Hat Enterprise Linux CoreOS(RHCOS)节点,用于验证对节点的 SSH 访问。密钥添加到每个节点上 core 用户的 ~/.ssh/authorized_keys 列表中,这将启用免密码身份验证。
将密钥传递给节点后,您可以使用密钥对作为用户 核心 通过 SSH 连接到 RHCOS 节点。若要通过 SSH 访问节点,必须由 SSH 为您的本地用户管理私钥身份。
如果要通过 SSH 连接到集群节点来执行安装调试或灾难恢复,则必须在安装过程中提供 SSH 公钥。./openshift-install gather 命令还需要在集群节点上设置 SSH 公钥。
不要在生产环境中跳过这个过程,在生产环境中需要灾难恢复和调试。
您必须使用本地密钥,而不是使用特定平台方法配置 的密钥,如 AWS 密钥对。
流程
如果您在本地计算机上没有可用于在集群节点上进行身份验证的现有 SSH 密钥对,请创建一个。例如,在使用 Linux 操作系统的计算机上运行以下命令:
ssh-keygen -t ed25519 -N '' -f <path>/<file_name>
$ ssh-keygen -t ed25519 -N '' -f <path>/<file_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定新 SSH 密钥的路径和文件名,如
~/.ssh/id_ed25519。如果您已有密钥对,请确保您的公钥位于~/.ssh目录中。
注意如果您计划在
x86_64、ppc64le和s390x架构上安装使用 FIPS 验证或 Modules In Process 加密库的 OpenShift Container Platform 集群。请不要创建使用ed25519算法的密钥。相反,创建一个使用rsa或ecdsa算法的密钥。查看公共 SSH 密钥:
cat <path>/<file_name>.pub
$ cat <path>/<file_name>.pubCopy to Clipboard Copied! Toggle word wrap Toggle overflow 例如,运行以下命令来查看
~/.ssh/id_ed25519.pub公钥:cat ~/.ssh/id_ed25519.pub
$ cat ~/.ssh/id_ed25519.pubCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将 SSH 私钥身份添加到本地用户的 SSH 代理(如果尚未添加)。在集群节点上,或者要使用
./openshift-install gather命令,需要对该密钥进行 SSH 代理管理,才能在集群节点上进行免密码 SSH 身份验证。注意在某些发行版中,自动管理默认 SSH 私钥身份,如
~/.ssh/id_rsa和~/.ssh/id_dsa。如果
ssh-agent进程尚未为您的本地用户运行,请将其作为后台任务启动:eval "$(ssh-agent -s)"
$ eval "$(ssh-agent -s)"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Agent pid 31874
Agent pid 31874Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果集群处于 FIPS 模式,则只使用 FIPS 兼容算法来生成 SSH 密钥。密钥必须是 RSA 或 ECDSA。
将 SSH 私钥添加到
ssh-agent:ssh-add <path>/<file_name>
$ ssh-add <path>/<file_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定 SSH 私钥的路径和文件名,如
~/.ssh/id_ed25519.pub
输出示例
Identity added: /home/<you>/<path>/<file_name> (<computer_name>)
Identity added: /home/<you>/<path>/<file_name> (<computer_name>)Copy to Clipboard Copied! Toggle word wrap Toggle overflow
后续步骤
- 安装 OpenShift Container Platform 时,为安装程序提供 SSH 公钥。如果在您置备的基础架构上安装集群,则必须为安装程序提供密钥。
11.8. 创建用于 Azure 的安装文件 复制链接链接已复制到粘贴板!
要使用用户置备的基础架构在 Microsoft Azure 上安装 OpenShift Container Platform,您必须生成并修改安装程序部署集群所需的文件,以便集群只创建要使用的机器。您要生成并自定义 install-config.yaml 文件、Kubernetes 清单和 Ignition 配置文件。您还可以选择在安装准备阶段首先设置独立 var 分区。
11.8.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)系统。
11.8.2. 创建安装配置文件 复制链接链接已复制到粘贴板!
您可以自定义在 Microsoft Azure 上安装的 OpenShift Container Platform 集群。
先决条件
- 获取 OpenShift Container Platform 安装程序和集群的 pull secret。
- 在订阅级别获取服务主体权限。
流程
创建
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>,请指定要存储安装程序创建的文件的目录名称。
在指定目录时:
-
验证该目录是否具有
执行权限。在安装目录中运行 Terraform 二进制文件需要这个权限。 - 使用空目录。有些安装资产,如 bootstrap X.509 证书的过期间隔较短,因此不得重复使用安装目录。如果要重复使用另一个集群安装中的单个文件,您可以将它们复制到您的目录中。但是,安装资产的文件名可能会在发行版本间有所变化。从以前的 OpenShift Container Platform 版本中复制安装文件时请小心。
在提示符处,提供云的配置详情:
可选: 选择用于访问集群机器的 SSH 密钥。
注意对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定
ssh-agent进程使用的 SSH 密钥。- 选择 azure 作为目标平台。
如果计算机上没有 Microsoft Azure 配置集,请为您的订阅和服务主体指定以下 Azure 参数值:
-
azure subscription id:要用于集群的订阅 ID。指定帐户输出中的
id值。 -
azure tenant id:租户 ID。指定帐户输出中的
tenantId值。 -
azure service principal client id:服务主体的
appId参数值。 -
azure service principal client secret:服务主体的
password参数值。
-
azure subscription id:要用于集群的订阅 ID。指定帐户输出中的
- 选择要在其中部署集群的区域。
- 选择集群要部署到的基域。基域与您为集群创建的 Azure DNS 区对应。
为集群输入一个描述性名称。
重要所有通过公共端点提供的 Azure 资源均存在资源名称的限制,您无法创建使用某些名称的资源。如需 Azure 限制词语列表,请参阅 Azure 文档中的解决保留资源名称错误。
- 粘贴 Red Hat OpenShift Cluster Manager 中的 pull secret。
可选:如果您不希望集群置备计算机器,请通过编辑
install-config.yaml文件将计算池的replicas设置为0来清空计算池:compute: - hyperthreading: Enabled name: worker platform: {} replicas: 0compute: - hyperthreading: Enabled name: worker platform: {} replicas: 01 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 设置为
0。
-
修改
install-config.yaml文件。您可以在"安装配置参数"部分找到有关可用参数的更多信息。 备份
install-config.yaml文件,以便您可以使用它安装多个集群。重要install-config.yaml文件会在安装过程中消耗掉。如果要重复使用该文件,您必须立即备份该文件。
11.8.3. 在安装过程中配置集群范围的代理 复制链接链接已复制到粘贴板!
生产环境可能会拒绝直接访问互联网,而是提供 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命名空间中生成名为user-ca-bundle的配置映射,其包含代理 HTTPS 连接所需的一个或多个额外 CA 证书。然后,Cluster Network Operator 会创建trusted-ca-bundle配置映射,将这些内容与 Red Hat Enterprise Linux CoreOS(RHCOS)信任捆绑包合并,Proxy对象的trustedCA字段中也会引用此配置映射。additionalTrustBundle字段是必需的,除非代理的身份证书由来自 RHCOS 信任捆绑包的颁发机构签名。 - 5
- 可选:决定
Proxy对象的配置以引用trustedCA字段中user-ca-bundle配置映射的策略。允许的值是Proxyonly和Always。仅在配置了http/https代理时,使用Proxyonly引用user-ca-bundle配置映射。使用Always始终引用user-ca-bundle配置映射。默认值为Proxyonly。
注意安装程序不支持代理的
readinessEndpoints字段。注意如果安装程序超时,重启并使用安装程序的
wait-for命令完成部署。例如:./openshift-install wait-for install-complete --log-level debug
$ ./openshift-install wait-for install-complete --log-level debugCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存该文件并在安装 OpenShift Container Platform 时引用。
安装程序会创建一个名为 cluster 的集群范围代理,该代理 使用 提供的 install-config.yaml 文件中的代理设置。如果没有提供代理设置,仍然会创建一个 cluster Proxy 对象,但它会有一个空 spec。
只支持名为 cluster 的 Proxy 对象,且无法创建额外的代理。
11.8.4. 为 ARM 模板导出常用变量 复制链接链接已复制到粘贴板!
您必须导出与提供的 Azure Resource Manager(ARM)模板搭配使用的一组常用变量,它们有助于在 Microsoft Azure 上完成用户提供基础架构安装。
特定的 ARM 模板可能还需要其他导出变量,这些变量在相关的程序中详细介绍。
先决条件
- 获取 OpenShift Container Platform 安装程序和集群的 pull secret。
流程
导出
install-config.yaml中由提供的 ARM 模板使用的通用变量:export CLUSTER_NAME=<cluster_name> export AZURE_REGION=<azure_region> export SSH_KEY=<ssh_key> export BASE_DOMAIN=<base_domain> export BASE_DOMAIN_RESOURCE_GROUP=<base_domain_resource_group>
$ export CLUSTER_NAME=<cluster_name>1 $ export AZURE_REGION=<azure_region>2 $ export SSH_KEY=<ssh_key>3 $ export BASE_DOMAIN=<base_domain>4 $ export BASE_DOMAIN_RESOURCE_GROUP=<base_domain_resource_group>5 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
install-config.yaml文件中的.metadata.name属性的值。- 2
- 集群要部署到的区域,如
centralus。这是来自install-config.yaml文件中的.platform.azure.region属性的值。 - 3
- 作为字符串的 SSH RSA 公钥文件。您必须使用引号包括 SSH 密钥,因为它包含空格。这是来自
install-config.yaml文件中的.sshKey属性的值。 - 4
- 集群要部署到的基域。基域与您为集群创建的公共 DNS 区对应。这是来自
install-config.yaml文件中的.baseDomain属性的值。 - 5
- 公共 DNS 区所在的资源组。这是来自
install-config.yaml文件中的.platform.azure.baseDomainResourceGroupName属性的值。
例如:
export CLUSTER_NAME=test-cluster export AZURE_REGION=centralus export SSH_KEY="ssh-rsa xxx/xxx/xxx= user@email.com" export BASE_DOMAIN=example.com export BASE_DOMAIN_RESOURCE_GROUP=ocp-cluster
$ export CLUSTER_NAME=test-cluster $ export AZURE_REGION=centralus $ export SSH_KEY="ssh-rsa xxx/xxx/xxx= user@email.com" $ export BASE_DOMAIN=example.com $ export BASE_DOMAIN_RESOURCE_GROUP=ocp-clusterCopy to Clipboard Copied! Toggle word wrap Toggle overflow 导出 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>,请指定安装文件保存到的目录的路径。
11.8.5. 创建 Kubernetes 清单和 Ignition 配置文件 复制链接链接已复制到粘贴板!
由于您必须修改一些集群定义文件并手动启动集群机器,因此您必须生成 Kubernetes 清单和 Ignition 配置文件来配置机器。
安装配置文件转换为 Kubernetes 清单。清单嵌套到 Ignition 配置文件中,稍后用于配置集群机器。
-
OpenShift Container Platform 安装程序生成的 Ignition 配置文件包含 24 小时后过期的证书,然后在该时进行续订。如果在更新证书前关闭集群,且集群在 24 小时后重启,集群会自动恢复过期的证书。一个例外是,您必须手动批准待处理的
node-bootstrapper证书签名请求(CSR)来恢复 kubelet 证书。如需更多信息,请参阅从过期的 control plane 证书 中恢复的文档。 - 建议您在 Ignition 配置文件生成后的 12 小时内使用它们,因为 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.yml Kubernetes 清单文件中的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 记录。
在用户置备的基础架构上配置 Azure 时,您必须导出清单文件中定义的一些常见变量,以备稍后在 Azure Resource Manager(ARM)模板中使用:
使用以下命令导出基础架构 ID:
export INFRA_ID=<infra_id>
$ export INFRA_ID=<infra_id>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- OpenShift Container Platform 集群被分配了一个标识符(
INFRA_ID),其格式为<cluster_name>-<random_string>。这将作为使用提供的 ARM 模板创建的大部分资源的基本名称。这是来自manifests/cluster-infrastructure-02-config.yml文件中的.status.infrastructureName属性的值。
使用以下命令导出资源组:
export RESOURCE_GROUP=<resource_group>
$ export RESOURCE_GROUP=<resource_group>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow
要创建 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>,请指定相同的安装目录。
为安装目录中的 bootstrap、control plane 和计算节点创建 Ignition 配置文件。
kubeadmin-password和kubeconfig文件是在./<installation_directory>/auth目录中创建的:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.9. 创建 Azure 资源组 复制链接链接已复制到粘贴板!
您必须创建一个 Microsoft Azure 资源组以及该资源组的身份。它们都用于在 Azure 上安装 OpenShift Container Platform 集群。
先决条件
- 配置 Azure 帐户。
- 为集群生成 Ignition 配置文件。
流程
在受支持的 Azure 区域中创建资源组:
az group create --name ${RESOURCE_GROUP} --location ${AZURE_REGION}$ az group create --name ${RESOURCE_GROUP} --location ${AZURE_REGION}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为资源组创建 Azure 身份:
az identity create -g ${RESOURCE_GROUP} -n ${INFRA_ID}-identity$ az identity create -g ${RESOURCE_GROUP} -n ${INFRA_ID}-identityCopy to Clipboard Copied! Toggle word wrap Toggle overflow 这用于授予集群中 Operator 所需的访问权限。例如,这允许 Ingress Operator 创建公共 IP 及其负载均衡器。您必须将 Azure 身份分配给角色。
将 Contributor 角色授予 Azure 身份:
导出 Azure 角色分配所需的以下变量:
export PRINCIPAL_ID=`az identity show -g ${RESOURCE_GROUP} -n ${INFRA_ID}-identity --query principalId --out tsv`$ export PRINCIPAL_ID=`az identity show -g ${RESOURCE_GROUP} -n ${INFRA_ID}-identity --query principalId --out tsv`Copy to Clipboard Copied! Toggle word wrap Toggle overflow export RESOURCE_GROUP_ID=`az group show -g ${RESOURCE_GROUP} --query id --out tsv`$ export RESOURCE_GROUP_ID=`az group show -g ${RESOURCE_GROUP} --query id --out tsv`Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 Contributor 角色分配给身份:
az role assignment create --assignee "${PRINCIPAL_ID}" --role 'Contributor' --scope "${RESOURCE_GROUP_ID}"$ az role assignment create --assignee "${PRINCIPAL_ID}" --role 'Contributor' --scope "${RESOURCE_GROUP_ID}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果要为身份分配具有所有所需权限的自定义角色,请运行以下命令:
az role assignment create --assignee "${PRINCIPAL_ID}" --role <custom_role> \ --scope "${RESOURCE_GROUP_ID}"$ az role assignment create --assignee "${PRINCIPAL_ID}" --role <custom_role> \1 --scope "${RESOURCE_GROUP_ID}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定自定义角色名称。
11.10. 上传 RHCOS 集群镜像和 bootstrap Ignition 配置文件 复制链接链接已复制到粘贴板!
Azure 客户端不支持基于本地现有文件进行部署。您必须复制 RHCOS 虚拟硬盘(VHD)集群镜像,并将 bootstrap Ignition 配置文件存储在存储容器中,以便在部署过程中访问它们。
先决条件
- 配置 Azure 帐户。
- 为集群生成 Ignition 配置文件。
流程
创建 Azure 存储帐户以存储 VHD 集群镜像:
az storage account create -g ${RESOURCE_GROUP} --location ${AZURE_REGION} --name ${CLUSTER_NAME}sa --kind Storage --sku Standard_LRS$ az storage account create -g ${RESOURCE_GROUP} --location ${AZURE_REGION} --name ${CLUSTER_NAME}sa --kind Storage --sku Standard_LRSCopy to Clipboard Copied! Toggle word wrap Toggle overflow 警告Azure 存储帐户名称的长度必须在 3 到 24 个字符之,且只使用数字和小写字母。如果您的
CLUSTER_NAME变量没有遵循这些限制,您必须手动定义 Azure 存储帐户名称。如需有关 Azure 存储帐户名称限制的更多信息,请参阅 Azure 文档中的解决存储帐户名称的错误。将存储帐户密钥导出为环境变量:
export ACCOUNT_KEY=`az storage account keys list -g ${RESOURCE_GROUP} --account-name ${CLUSTER_NAME}sa --query "[0].value" -o tsv`$ export ACCOUNT_KEY=`az storage account keys list -g ${RESOURCE_GROUP} --account-name ${CLUSTER_NAME}sa --query "[0].value" -o tsv`Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 RHCOS VHD 的 URL 导出为环境变量:
export VHD_URL=`openshift-install coreos print-stream-json | jq -r '.architectures.x86_64."rhel-coreos-extensions"."azure-disk".url'`
$ export VHD_URL=`openshift-install coreos print-stream-json | jq -r '.architectures.x86_64."rhel-coreos-extensions"."azure-disk".url'`Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要RHCOS 镜像可能不会随着 OpenShift Container Platform 的每个发行版本而改变。您必须指定一个最高版本的镜像,其版本号应小于或等于您安装的 OpenShift Container Platform 版本。如果可用,请使用与 OpenShift Container Platform 版本匹配的镜像版本。
为 VHD 创建存储容器:
az storage container create --name vhd --account-name ${CLUSTER_NAME}sa --account-key ${ACCOUNT_KEY}$ az storage container create --name vhd --account-name ${CLUSTER_NAME}sa --account-key ${ACCOUNT_KEY}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将本地 VHD 复制为一个 blob:
az storage blob copy start --account-name ${CLUSTER_NAME}sa --account-key ${ACCOUNT_KEY} --destination-blob "rhcos.vhd" --destination-container vhd --source-uri "${VHD_URL}"$ az storage blob copy start --account-name ${CLUSTER_NAME}sa --account-key ${ACCOUNT_KEY} --destination-blob "rhcos.vhd" --destination-container vhd --source-uri "${VHD_URL}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 blob 存储容器并上传生成的
bootstrap.ign文件:az storage container create --name files --account-name ${CLUSTER_NAME}sa --account-key ${ACCOUNT_KEY}$ az storage container create --name files --account-name ${CLUSTER_NAME}sa --account-key ${ACCOUNT_KEY}Copy to Clipboard Copied! Toggle word wrap Toggle overflow az storage blob upload --account-name ${CLUSTER_NAME}sa --account-key ${ACCOUNT_KEY} -c "files" -f "<installation_directory>/bootstrap.ign" -n "bootstrap.ign"$ az storage blob upload --account-name ${CLUSTER_NAME}sa --account-key ${ACCOUNT_KEY} -c "files" -f "<installation_directory>/bootstrap.ign" -n "bootstrap.ign"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.11. 创建 DNS 区示例 复制链接链接已复制到粘贴板!
使用用户置备的基础架构的集群需要 DNS 记录。您应该选择适合您的场景的 DNS 策略。
在本例中,使用了 Azure 的 DNS 解决方案,因此您将为外部(内部网络)可见性创建一个新的公共 DNS 区域,并为内部集群解析创建一个私有 DNS 区域。
公共 DNS 区域不需要与集群部署位于同一个资源组中,且可能已在您的机构中为所需基域存在。如果情况如此,您可以跳过创建公共 DNS 区这一步 ; 请确定您之前生成的安装配置反映了这种情况。
先决条件
- 配置 Azure 帐户。
- 为集群生成 Ignition 配置文件。
流程
在
BASE_DOMAIN_RESOURCE_GROUP环境变量中导出的资源组中创建新的公共 DNS 区域:az network dns zone create -g ${BASE_DOMAIN_RESOURCE_GROUP} -n ${CLUSTER_NAME}.${BASE_DOMAIN}$ az network dns zone create -g ${BASE_DOMAIN_RESOURCE_GROUP} -n ${CLUSTER_NAME}.${BASE_DOMAIN}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您使用的是公共 DNS 区域,可以跳过这一步。
在与这个部署的其余部分相同的资源组中创建私有 DNS 区域:
az network private-dns zone create -g ${RESOURCE_GROUP} -n ${CLUSTER_NAME}.${BASE_DOMAIN}$ az network private-dns zone create -g ${RESOURCE_GROUP} -n ${CLUSTER_NAME}.${BASE_DOMAIN}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
如需了解更多信息,请参阅在 Azure 中配置公共 DNS 的信息。
11.12. 在 Azure 中创建 VNet 复制链接链接已复制到粘贴板!
您必须在 Microsoft Azure 中创建虚拟网络(VNet),供您的 OpenShift Container Platform 集群使用。您可以对 VNet 进行定制来满足您的要求。创建 VNet 的一种方法是修改提供的 Azure Resource Manager(ARM)模板。
如果不使用提供的 ARM 模板来创建 Azure 基础架构,您必须检查提供的信息并手动创建基础架构。如果集群没有正确初始化,您可能需要联系红帽支持并提供您的安装日志。
先决条件
- 配置 Azure 帐户。
- 为集群生成 Ignition 配置文件。
流程
-
复制 VNet 的 ARM 模板 一节中的模板,并将它以
01_vnet.json保存到集群的安装目录中。此模板描述了集群所需的 VNet。 使用
azCLI 创建部署:az deployment group create -g ${RESOURCE_GROUP} \ --template-file "<installation_directory>/01_vnet.json" \ --parameters baseName="${INFRA_ID}"$ az deployment group create -g ${RESOURCE_GROUP} \ --template-file "<installation_directory>/01_vnet.json" \ --parameters baseName="${INFRA_ID}"1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 资源名称使用的基本名称 ; 这通常是集群的基础架构 ID。
将 VNet 模板链接到私有 DNS 区域:
az network private-dns link vnet create -g ${RESOURCE_GROUP} -z ${CLUSTER_NAME}.${BASE_DOMAIN} -n ${INFRA_ID}-network-link -v "${INFRA_ID}-vnet" -e false$ az network private-dns link vnet create -g ${RESOURCE_GROUP} -z ${CLUSTER_NAME}.${BASE_DOMAIN} -n ${INFRA_ID}-network-link -v "${INFRA_ID}-vnet" -e falseCopy to Clipboard Copied! Toggle word wrap Toggle overflow
11.12.1. VNet 的 ARM 模板 复制链接链接已复制到粘贴板!
您可以使用以下 Azure Resource Manager(ARM)模板来部署 OpenShift Container Platform 集群所需的 VPC:
例 11.21. 01_vnet.json ARM 模板
11.13. 为 Azure 基础架构创建 RHCOS 集群镜像 复制链接链接已复制到粘贴板!
您必须对 OpenShift Container Platform 节点的 Microsoft Azure 使用有效的 Red Hat Enterprise Linux CoreOS(RHCOS)镜像。
先决条件
- 配置 Azure 帐户。
- 为集群生成 Ignition 配置文件。
- 将 RHCOS 虚拟硬盘(VHD)集群镜像存储在 Azure 存储容器中。
- 在 Azure 存储容器中存储 bootstrap Ignition 配置文件。
流程
-
复制镜像存储的 ARM 模板 部分中的模板,并将它以
02_storage.json保存到集群的安装目录中。此模板描述了集群所需的镜像存储。 以一个变量的形式将 RHCOS VHD blob URL 导出:
export VHD_BLOB_URL=`az storage blob url --account-name ${CLUSTER_NAME}sa --account-key ${ACCOUNT_KEY} -c vhd -n "rhcos.vhd" -o tsv`$ export VHD_BLOB_URL=`az storage blob url --account-name ${CLUSTER_NAME}sa --account-key ${ACCOUNT_KEY} -c vhd -n "rhcos.vhd" -o tsv`Copy to Clipboard Copied! Toggle word wrap Toggle overflow 部署集群镜像
az deployment group create -g ${RESOURCE_GROUP} \ --template-file "<installation_directory>/02_storage.json" \ --parameters vhdBlobURL="${VHD_BLOB_URL}" \ --parameters baseName="${INFRA_ID}"$ az deployment group create -g ${RESOURCE_GROUP} \ --template-file "<installation_directory>/02_storage.json" \ --parameters vhdBlobURL="${VHD_BLOB_URL}" \1 --parameters baseName="${INFRA_ID}"2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.13.1. 镜像存储的 ARM 模板 复制链接链接已复制到粘贴板!
您可以使用以下 Azure Resource Manager(ARM)模板来部署 OpenShift Container Platform 集群所需的存储的 Red Hat Enterprise Linux CoreOS(RHCOS)镜像:
例 11.22. 02_storage.json ARM 模板
11.14. 用户置备的基础架构对网络的要求 复制链接链接已复制到粘贴板!
所有 Red Hat Enterprise Linux CoreOS(RHCOS)机器需要在启动过程中在 initramfs 中配置网络,以获取其 Ignition 配置文件。
11.14.1. 网络连接要求 复制链接链接已复制到粘贴板!
您必须配置机器之间的网络连接,以允许 OpenShift Container Platform 集群组件进行通信。每台机器都必须能够解析集群中所有其他机器的主机名。
本节详细介绍了所需的端口。
在连接的 OpenShift Container Platform 环境中,所有节点都需要访问互联网才能为平台容器拉取镜像,并向红帽提供遥测数据。
| 协议 | port | 描述 |
|---|---|---|
| ICMP | N/A | 网络可访问性测试 |
| TCP |
| 指标 |
|
|
主机级别的服务,包括端口 9 | |
|
| Kubernetes 保留的默认端口 | |
|
| openshift-sdn | |
| UDP |
| VXLAN |
|
| Geneve | |
|
|
主机级别的服务,包括端口 | |
|
| IPsec IKE 数据包 | |
|
| IPsec NAT-T 数据包 | |
|
|
UDP 端口
如果配置了外部 NTP 时间服务器,需要打开 UDP 端口 | |
| TCP/UDP |
| Kubernetes 节点端口 |
| ESP | N/A | IPsec Encapsulating Security Payload(ESP) |
| 协议 | port | 描述 |
|---|---|---|
| TCP |
| Kubernetes API |
| 协议 | port | 描述 |
|---|---|---|
| TCP |
| etcd 服务器和对等端口 |
11.15. 在 Azure 中创建网络和负载均衡组件 复制链接链接已复制到粘贴板!
您必须在 Microsoft Azure 中配置网络和负载均衡,供您的 OpenShift Container Platform 集群使用。创建这些组件的一种方法是修改提供的 Azure Resource Manager(ARM)模板。
如果不使用提供的 ARM 模板来创建 Azure 基础架构,您必须检查提供的信息并手动创建基础架构。如果集群没有正确初始化,您可能需要联系红帽支持并提供您的安装日志。
先决条件
- 配置 Azure 帐户。
- 为集群生成 Ignition 配置文件。
- 在 Azure 中创建和配置 VNet 及相关子网。
流程
-
复制 网络和负载均衡器的 ARM 模板 一节中的模板,并将它以
03_infra.json保存到集群的安装目录中。此模板描述了集群所需的网络和负载均衡对象。 使用
azCLI 创建部署:az deployment group create -g ${RESOURCE_GROUP} \ --template-file "<installation_directory>/03_infra.json" \ --parameters privateDNSZoneName="${CLUSTER_NAME}.${BASE_DOMAIN}" \ --parameters baseName="${INFRA_ID}"$ az deployment group create -g ${RESOURCE_GROUP} \ --template-file "<installation_directory>/03_infra.json" \ --parameters privateDNSZoneName="${CLUSTER_NAME}.${BASE_DOMAIN}" \1 --parameters baseName="${INFRA_ID}"2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在公共区为 API 公共负载均衡器创建一个
apiDNS 记录。${BASE_DOMAIN_RESOURCE_GROUP}变量必须指向存在公共 DNS 区的资源组。导出以下变量:
export PUBLIC_IP=`az network public-ip list -g ${RESOURCE_GROUP} --query "[?name=='${INFRA_ID}-master-pip'] | [0].ipAddress" -o tsv`$ export PUBLIC_IP=`az network public-ip list -g ${RESOURCE_GROUP} --query "[?name=='${INFRA_ID}-master-pip'] | [0].ipAddress" -o tsv`Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在新的公共区中创建
apiDNS 记录:az network dns record-set a add-record -g ${BASE_DOMAIN_RESOURCE_GROUP} -z ${CLUSTER_NAME}.${BASE_DOMAIN} -n api -a ${PUBLIC_IP} --ttl 60$ az network dns record-set a add-record -g ${BASE_DOMAIN_RESOURCE_GROUP} -z ${CLUSTER_NAME}.${BASE_DOMAIN} -n api -a ${PUBLIC_IP} --ttl 60Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果要将集群添加到现有的公共区,您可以在其中创建
apiDNS 记录:az network dns record-set a add-record -g ${BASE_DOMAIN_RESOURCE_GROUP} -z ${BASE_DOMAIN} -n api.${CLUSTER_NAME} -a ${PUBLIC_IP} --ttl 60$ az network dns record-set a add-record -g ${BASE_DOMAIN_RESOURCE_GROUP} -z ${BASE_DOMAIN} -n api.${CLUSTER_NAME} -a ${PUBLIC_IP} --ttl 60Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.15.1. 网络和负载均衡器的 ARM 模板 复制链接链接已复制到粘贴板!
您可以使用以下 Azure Resource Manager(ARM)模板来部署 OpenShift Container Platform 集群所需的网络对象和负载均衡器:
例 11.23. 03_infra.json ARM 模板
11.16. 在 Azure 中创建 bootstrap 机器 复制链接链接已复制到粘贴板!
您必须在 Microsoft Azure 中创建 bootstrap 机器,以便在 OpenShift Container Platform 集群初始化过程中使用。创建此机器的一种方法是修改提供的 Azure Resource Manager(ARM)模板。
如果不使用提供的 ARM 模板来创建 bootstrap 机器,您必须检查提供的信息并手动创建基础架构。如果集群没有正确初始化,您可能需要联系红帽支持并提供您的安装日志。
先决条件
- 配置 Azure 帐户。
- 为集群生成 Ignition 配置文件。
- 在 Azure 中创建和配置 VNet 及相关子网。
- 在 Azure 中创建和配置联网及负载均衡器。
- 创建 control plane 和计算角色。
流程
-
复制 bootstrap 机器的 ARM 模板一节中的模板,并将它以
04_bootstrap.json保存到集群的安装目录中。此模板描述了集群所需的 bootstrap 机器。 导出 bootstrap URL 变量:
bootstrap_url_expiry=`date -u -d "10 hours" '+%Y-%m-%dT%H:%MZ'`
$ bootstrap_url_expiry=`date -u -d "10 hours" '+%Y-%m-%dT%H:%MZ'`Copy to Clipboard Copied! Toggle word wrap Toggle overflow export BOOTSTRAP_URL=`az storage blob generate-sas -c 'files' -n 'bootstrap.ign' --https-only --full-uri --permissions r --expiry $bootstrap_url_expiry --account-name ${CLUSTER_NAME}sa --account-key ${ACCOUNT_KEY} -o tsv`$ export BOOTSTRAP_URL=`az storage blob generate-sas -c 'files' -n 'bootstrap.ign' --https-only --full-uri --permissions r --expiry $bootstrap_url_expiry --account-name ${CLUSTER_NAME}sa --account-key ${ACCOUNT_KEY} -o tsv`Copy to Clipboard Copied! Toggle word wrap Toggle overflow 导出 bootstrap ignition 变量:
export BOOTSTRAP_IGNITION=`jq -rcnM --arg v "3.2.0" --arg url ${BOOTSTRAP_URL} '{ignition:{version:$v,config:{replace:{source:$url}}}}' | base64 | tr -d '\n'`$ export BOOTSTRAP_IGNITION=`jq -rcnM --arg v "3.2.0" --arg url ${BOOTSTRAP_URL} '{ignition:{version:$v,config:{replace:{source:$url}}}}' | base64 | tr -d '\n'`Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
azCLI 创建部署:az deployment group create -g ${RESOURCE_GROUP} \ --template-file "<installation_directory>/04_bootstrap.json" \ --parameters bootstrapIgnition="${BOOTSTRAP_IGNITION}" \ --parameters baseName="${INFRA_ID}"$ az deployment group create -g ${RESOURCE_GROUP} \ --template-file "<installation_directory>/04_bootstrap.json" \ --parameters bootstrapIgnition="${BOOTSTRAP_IGNITION}" \1 --parameters baseName="${INFRA_ID}"2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.16.1. bootstrap 机器的 ARM 模板 复制链接链接已复制到粘贴板!
您可以使用以下 Azure Resource Manager(ARM)模板来部署 OpenShift Container Platform 集群所需的 bootstrap 机器:
例 11.24. 04_bootstrap.json ARM 模板
11.17. 在 Azure 中创建 control plane 机器 复制链接链接已复制到粘贴板!
您必须在 Microsoft Azure 中创建 control plane 机器,供您的集群使用。创建这些机器的一种方法是修改提供的 Azure Resource Manager(ARM)模板。
默认情况下,Microsoft Azure 将 control plane 机器和计算机器放在预先设置的可用区中。您可以为计算节点或 control plane 节点手动设置可用区。要做到这一点,通过在虚拟机资源的 zones 参数中指定每个可用区来修改供应商的 Azure Resource Manager (ARM) 模板。
如果不使用提供的 ARM 模板来创建 control plane 机器,您必须检查提供的信息并手动创建基础架构。如果您的集群没有正确初始化,请考虑与安装日志联系红帽支持。
先决条件
- 配置 Azure 帐户。
- 为集群生成 Ignition 配置文件。
- 在 Azure 中创建和配置 VNet 及相关子网。
- 在 Azure 中创建和配置联网及负载均衡器。
- 创建 control plane 和计算角色。
- 创建 bootstrap 机器。
流程
-
复制 control plane 机器的 ARM 模板 一节中的模板,并将它以
05_masters.json保存到集群的安装目录中。此模板描述了集群所需的 control plane 机器。 导出 control plane 机器部署所需的以下变量:
export MASTER_IGNITION=`cat <installation_directory>/master.ign | base64 | tr -d '\n'`
$ export MASTER_IGNITION=`cat <installation_directory>/master.ign | base64 | tr -d '\n'`Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
azCLI 创建部署:az deployment group create -g ${RESOURCE_GROUP} \ --template-file "<installation_directory>/05_masters.json" \ --parameters masterIgnition="${MASTER_IGNITION}" \ --parameters baseName="${INFRA_ID}"$ az deployment group create -g ${RESOURCE_GROUP} \ --template-file "<installation_directory>/05_masters.json" \ --parameters masterIgnition="${MASTER_IGNITION}" \1 --parameters baseName="${INFRA_ID}"2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.17.1. control plane 机器的 ARM 模板 复制链接链接已复制到粘贴板!
您可以使用以下 Azure Resource Manager(ARM)模板来部署 OpenShift Container Platform 集群所需的 control plane 机器:
例 11.25. 05_masters.json ARM 模板
11.18. 等待 bootstrap 完成并删除 Azure 中的 bootstrap 资源 复制链接链接已复制到粘贴板!
在 Microsoft Azure 中创建所有所需的基础架构后,请等待您通过安装程序生成的 Ignition 配置文件所置备的机器上完成 bootstrap 过程。
先决条件
- 配置 Azure 帐户。
- 为集群生成 Ignition 配置文件。
- 在 Azure 中创建和配置 VNet 及相关子网。
- 在 Azure 中创建和配置联网及负载均衡器。
- 创建 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 资源:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
如果没有删除 bootstrap 服务器,因为 API 流量会路由到 bootstrap 服务器,所以安装可能无法成功。
11.19. 在 Azure 中创建额外的 worker 机器 复制链接链接已复制到粘贴板!
您可以通过分散启动各个实例或利用集群外自动化流程(如自动缩放组),在 Microsoft Azure 中为您的集群创建 worker 机器。您还可以利用 OpenShift Container Platform 中的内置集群扩展机制和机器 API。
在本例中,您要使用 Azure Resource Manager(ARM)模板手动启动一个实例。通过在 文件中包括类型为 06_workers.json 的其他资源,即可启动其他实例。
默认情况下,Microsoft Azure 将 control plane 机器和计算机器放在预先设置的可用区中。您可以为计算节点或 control plane 节点手动设置可用区。要做到这一点,通过在虚拟机资源的 zones 参数中指定每个可用区来修改供应商的 ARM 模板。
如果不使用提供的 ARM 模板来创建 control plane 机器,您必须检查提供的信息并手动创建基础架构。如果您的集群没有正确初始化,请考虑与安装日志联系红帽支持。
先决条件
- 配置 Azure 帐户。
- 为集群生成 Ignition 配置文件。
- 在 Azure 中创建和配置 VNet 及相关子网。
- 在 Azure 中创建和配置联网及负载均衡器。
- 创建 control plane 和计算角色。
- 创建 bootstrap 机器。
- 创建 control plane 机器。
流程
-
复制 worker 机器的 ARM 模板一节中的模板,并将它以
06_workers.json保存到集群的安装目录中。此模板描述了集群所需的 worker 机器。 导出 worker 机器部署所需的以下变量:
export WORKER_IGNITION=`cat <installation_directory>/worker.ign | base64 | tr -d '\n'`
$ export WORKER_IGNITION=`cat <installation_directory>/worker.ign | base64 | tr -d '\n'`Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
azCLI 创建部署:az deployment group create -g ${RESOURCE_GROUP} \ --template-file "<installation_directory>/06_workers.json" \ --parameters workerIgnition="${WORKER_IGNITION}" \ --parameters baseName="${INFRA_ID}"$ az deployment group create -g ${RESOURCE_GROUP} \ --template-file "<installation_directory>/06_workers.json" \ --parameters workerIgnition="${WORKER_IGNITION}" \1 --parameters baseName="${INFRA_ID}"2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.19.1. worker 机器的 ARM 模板 复制链接链接已复制到粘贴板!
您可以使用以下 Azure Resource Manager(ARM)模板来部署 OpenShift Container Platform 集群所需的 worker 机器:
例 11.26. 06_workers.json ARM template
11.20. 通过下载二进制文件安装 OpenShift CLI 复制链接链接已复制到粘贴板!
您可以安装 OpenShift CLI(oc)来使用命令行界面与 OpenShift Container Platform 进行交互。您可以在 Linux、Windows 或 macOS 上安装 oc。
如果安装了旧版本的 oc,则无法使用 OpenShift Container Platform 4.12 中的所有命令。下载并安装新版本的 oc。
在 Linux 上安装 OpenShift CLI
您可以按照以下流程在 Linux 上安装 OpenShift CLI(oc)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 产品变体 下拉列表中选择架构。
- 从 版本 下拉列表中选择适当的版本。
- 点 OpenShift v4.12 Linux Client 条目旁的 Download Now 来保存文件。
解包存档:
tar xvf <file>
$ tar xvf <file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
oc二进制文件放到PATH 中的目录中。要查看您的
PATH,请执行以下命令:echo $PATH
$ echo $PATHCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
安装 OpenShift CLI 后,可以使用
oc命令:oc <command>
$ oc <command>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在 Windows 上安装 OpenShift CLI
您可以按照以下流程在 Windows 上安装 OpenShift CLI(oc)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 版本 下拉列表中选择适当的版本。
- 点 OpenShift v4.12 Windows Client 条目旁的 Download Now 来保存文件。
- 使用 ZIP 程序解压存档。
将
oc二进制文件移到PATH 中的目录中。要查看您的
PATH,请打开命令提示并执行以下命令:path
C:\> pathCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
安装 OpenShift CLI 后,可以使用
oc命令:oc <command>
C:\> oc <command>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在 macOS 上安装 OpenShift CLI
您可以按照以下流程在 macOS 上安装 OpenShift CLI(oc)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 版本 下拉列表中选择适当的版本。
点 OpenShift v4.12 macOS Client 条目旁的 Download Now 来保存文件。
注意对于 macOS arm64,请选择 OpenShift v4.12 macOS arm64 Client 条目。
- 解包和解压存档。
将
oc二进制文件移到 PATH 的目录中。要查看您的
PATH,请打开终端并执行以下命令:echo $PATH
$ echo $PATHCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
安装 OpenShift CLI 后,可以使用
oc命令:oc <command>
$ oc <command>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.21. 使用 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
11.22. 批准机器的证书签名请求 复制链接链接已复制到粘贴板!
当您将机器添加到集群时,会为您添加的每台机器生成两个待处理证书签名请求(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.25.0 master-1 Ready master 63m v1.25.0 master-2 Ready master 64m v1.25.0
NAME STATUS ROLES AGE VERSION master-0 Ready master 63m v1.25.0 master-1 Ready master 63m v1.25.0 master-2 Ready master 64m v1.25.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、ocrsh和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 的更多信息,请参阅 证书签名请求。
11.23. 添加 Ingress DNS 记录 复制链接链接已复制到粘贴板!
如果在创建 Kubernetes 清单并生成 Ignition 配置时删除了 DNS 区配置,您必须手动创建指向 Ingress 负载均衡器的 DNS 记录。您可以创建一个通配符 *.apps.{baseDomain}. 或特定的记录。您可以根据要求使用 A、CNAME 和其他记录。
先决条件
- 已使用您置备的基础架构在 Microsoft Azure 上安装了 OpenShift Container Platform 集群。
-
安装 OpenShift CLI(
oc)。 - 安装或更新 Azure CLI。
流程
确认 Ingress 路由器已创建了负载均衡器并填充
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.20.10 35.130.120.110 80:32288/TCP,443:31215/TCP 20
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE router-default LoadBalancer 172.30.20.10 35.130.120.110 80:32288/TCP,443:31215/TCP 20Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 Ingress 路由器 IP 导出作为变量:
export PUBLIC_IP_ROUTER=`oc -n openshift-ingress get service router-default --no-headers | awk '{print $4}'`$ export PUBLIC_IP_ROUTER=`oc -n openshift-ingress get service router-default --no-headers | awk '{print $4}'`Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在公共 DNS 区域中添加
*.apps记录。如果您要将此集群添加到新的公共区,请运行:
az network dns record-set a add-record -g ${BASE_DOMAIN_RESOURCE_GROUP} -z ${CLUSTER_NAME}.${BASE_DOMAIN} -n *.apps -a ${PUBLIC_IP_ROUTER} --ttl 300$ az network dns record-set a add-record -g ${BASE_DOMAIN_RESOURCE_GROUP} -z ${CLUSTER_NAME}.${BASE_DOMAIN} -n *.apps -a ${PUBLIC_IP_ROUTER} --ttl 300Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您要将此集群添加到已经存在的公共区中,请运行:
az network dns record-set a add-record -g ${BASE_DOMAIN_RESOURCE_GROUP} -z ${BASE_DOMAIN} -n *.apps.${CLUSTER_NAME} -a ${PUBLIC_IP_ROUTER} --ttl 300$ az network dns record-set a add-record -g ${BASE_DOMAIN_RESOURCE_GROUP} -z ${BASE_DOMAIN} -n *.apps.${CLUSTER_NAME} -a ${PUBLIC_IP_ROUTER} --ttl 300Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在私有 DNS 区域中添加
*.apps记录:使用以下命令创建
*.apps记录:az network private-dns record-set a create -g ${RESOURCE_GROUP} -z ${CLUSTER_NAME}.${BASE_DOMAIN} -n *.apps --ttl 300$ az network private-dns record-set a create -g ${RESOURCE_GROUP} -z ${CLUSTER_NAME}.${BASE_DOMAIN} -n *.apps --ttl 300Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下命令在专用 DNS 区域中添加
*.apps记录:az network private-dns record-set a add-record -g ${RESOURCE_GROUP} -z ${CLUSTER_NAME}.${BASE_DOMAIN} -n *.apps -a ${PUBLIC_IP_ROUTER}$ az network private-dns record-set a add-record -g ${RESOURCE_GROUP} -z ${CLUSTER_NAME}.${BASE_DOMAIN} -n *.apps -a ${PUBLIC_IP_ROUTER}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}' routes
输出示例
oauth-openshift.apps.cluster.basedomain.com console-openshift-console.apps.cluster.basedomain.com downloads-openshift-console.apps.cluster.basedomain.com alertmanager-main-openshift-monitoring.apps.cluster.basedomain.com prometheus-k8s-openshift-monitoring.apps.cluster.basedomain.com
oauth-openshift.apps.cluster.basedomain.com
console-openshift-console.apps.cluster.basedomain.com
downloads-openshift-console.apps.cluster.basedomain.com
alertmanager-main-openshift-monitoring.apps.cluster.basedomain.com
prometheus-k8s-openshift-monitoring.apps.cluster.basedomain.com
11.24. 在用户置备的基础架构上完成 Azure 安装 复制链接链接已复制到粘贴板!
在 Microsoft Azure 用户置备的基础架构上启动 OpenShift Container Platform 安装后,您可以监控集群事件,直到集群就绪可用。
先决条件
- 在用户置备的 Azure 基础架构上为 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 证书 中恢复的文档。 - 建议您在 Ignition 配置文件生成后的 12 小时内使用它们,因为 24 小时的证书会在集群安装后的 16 小时到 22 小时间进行轮转。通过在 12 小时内使用 Ignition 配置文件,您可以避免在安装过程中因为执行了证书更新而导致安装失败的问题。
11.25. OpenShift Container Platform 的 Telemetry 访问 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 4.12 中,默认运行的 Telemetry 服务提供有关集群健康状况和成功更新的指标,需要访问互联网。如果您的集群连接到互联网,Telemetry 会自动运行,并且集群会注册到 OpenShift Cluster Manager Hybrid Cloud Console。
确认 OpenShift Cluster Manager Hybrid Cloud Console 清单正确后,可以由 Telemetry 自动维护,也可以使用 OpenShift Cluster Manager 手动维护,使用订阅监控来跟踪帐户或多集群级别的 OpenShift Container Platform 订阅。
第 12 章 在 Azure 上卸载集群 复制链接链接已复制到粘贴板!
您可以删除部署到 Microsoft Azure 的集群。
12.1. 删除使用安装程序置备的基础架构的集群 复制链接链接已复制到粘贴板!
您可以从云中删除使用安装程序置备的基础架构的集群。
卸载后,检查云供应商是否有未正确删除的资源,特别是在用户置备基础架构集群中。可能存在安装程序没有创建或安装程序无法访问的资源。
先决条件
- 有用于部署集群的安装程序副本。
- 有创建集群时安装程序生成的文件。
虽然您可以使用部署它的安装程序副本来卸载集群,但建议使用 OpenShift Container Platform 版本 4.13 或更高版本。
删除服务主体取决于 Microsoft Azure AD Graph API。使用安装程序版本 4.13 或更高版本可确保在不需要手动干预的情况下删除服务主体(当 Microsoft 停用 Azure AD Graph API 时)。
流程
在用来安装集群的计算机中,进入包含安装程序的目录,并运行以下命令:
./openshift-install destroy cluster \ --dir <installation_directory> --log-level info
$ ./openshift-install destroy cluster \ --dir <installation_directory> --log-level info1 2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您必须为集群指定包含集群定义文件的目录。安装程序需要此目录中的
metadata.json文件来删除集群。-
可选:删除
<installation_directory>目录和 OpenShift Container Platform 安装程序。
Legal Notice
复制链接链接已复制到粘贴板!
Copyright © 2025 Red Hat
OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).
Modified versions must remove all Red Hat trademarks.
Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.
Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation’s permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.