第 1 章 在 AWS 上安装
1.1. 配置 AWS 帐户
在安装 OpenShift Container Platform 之前,您必须先配置 Amazon Web Services (AWS) 帐户。
1.1.1. 配置 Route53
要安装 OpenShift Container Platform,您使用的 Amazon Web Services (AWS) 帐户必须在 Route53 服务中有一个专用的公共托管区。此区域必须对域具有权威。Route53 服务为集群外部连接提供集群 DNS 解析和名称查询。
流程
标识您的域或子域,以及注册商(registrar)。您可以转移现有的域和注册商,或通过 AWS 或其他来源获取新的域和注册商。
注意如果您通过 AWS 购买了一个新域,则需要一定时间来传播相关的 DNS 更改信息。有关通过 AWS 购买域的更多信息,请参阅 AWS 文档中的使用 Amazon Route 53 注册域名。
- 如果您使用现有的域和注册商,请将其 DNS 迁移到 AWS。请参阅 AWS 文档中的使 Amazon Route 53 成为现有域的 DNS 服务。
为您的域或子域创建一个公共托管区。请参阅 AWS 文档中的创建公共托管区。
使用合适的根域(如
openshiftcorp.com
)或子域(如clusters.openshiftcorp.com
)。- 从托管区记录中提取新的权威名称服务器。请参阅 AWS 文档中的获取公共托管区的名称服务器。
- 更新域所用 AWS Route53 名称服务器的注册商记录。例如,如果您将域注册到不同帐户中的 Route53 服务,请参阅 AWS 文档中的以下主题:添加或更改名称服务器或粘附记录。
- 如果您使用子域,请按照您公司的流程将其委派记录添加到父域。
1.1.2. AWS 帐户限值
OpenShift Container Platform 集群使用诸多 Amazon Web Services (AWS) 组件,默认的服务限值会影响您安装 OpenShift Container Platform 集群的能力。如果您使用特定的集群配置,在某些 AWS 区域部署集群,或者从您的帐户运行多个集群,您可能需要为 AWS 帐户请求其他资源。
下表总结了 AWS 组件,它们的限值可能会影响您安装和运行 OpenShift Container Platform 集群的能力。
组件 | 默认可用的集群数 | 默认 AWS 限值 | 描述 |
---|---|---|---|
实例限值 | 可变 | 可变 | 默认情况下,每个集群创建以下实例:
这些实例类型数量在新帐户的默认限值之内。若要部署更多 worker 节点、启用自动扩展、部署大型工作负载或使用不同的实例类型,请检查您的帐户限制,以确保集群可以部署您需要的机器。
在大多数区域里,Bootstrap 和 worker 机器使用 |
弹性 IP (EIP) | 0 到 1 | 每个帐户 5 个 EIP | 要在高可用性配置中置备集群,安装程序将为区域中的每个可用区创建一个公共和专用子网。每个专用子网都需要 NAT 网关,每个 NAT 网关需要单独的弹性 IP。查看 AWS 区域图来确定每个区域有多少个可用区。要利用默认高可用性,请在至少含有三个可用区的区域安装集群。要在有超过五个可用区的区域安装集群,您必须提高 EIP 限值。 重要
要使用 |
虚拟私有云 (VPC) | 5 | 每个区域 5 个 VPC | 每个集群创建自己的 VPC。 |
弹性负载均衡 (ELB/NLB) | 3 | 每个区域 20 个 | 在默认情况下,每个集群为 master API 服务器创建一个内部和外部网络负载均衡器,并为路由器创建一个典型的弹性负载均衡器。部署更多 Kubernetes LoadBalancer Service 对象将生成额外的负载均衡器。 |
NAT 网关 | 5 | 每个可用区 5 个 | 集群在每个可用区中部署一个 NAT 网关。 |
弹性网络接口 (ENI) | 至少 12 个 | 每个区域 350 个 |
默认安装创建 21 个 ENI,并为区域中的每个可用区创建一个 ENI。例如, 针对根据集群使用情况和部署的工作负载创建的额外机器和弹性负载均衡器,为其创建额外的 ENI。 |
VPC 网关 | 20 | 每个帐户 20 个 | 每个集群创建一个 VPC 网关来访问 S3。 |
S3 存储桶 | 99 | 每个帐户有 100 个存储桶 | 因为安装过程会创建一个临时存储桶,并且每个集群中的 registry 组件会创建一个存储桶,所以您只能为每个 AWS 帐户创建 99 个 OpenShift Container Platform 集群。 |
安全组 | 250 | 每个帐户 2,500 个 | 每个集群创建 10 个不同的安全组。 |
1.1.3. 所需的 AWS 权限
将 AdministratorAccess
策略附加到您创建的 IAM 用户时,可以授予该用户所有所需的权限。要部署 OpenShift Container Platform 集群,IAM 用户需要以下权限:
安装所需的 EC2 权限
-
ec2:AllocateAddress
-
ec2:AssociateAddress
-
ec2:AssociateDhcpOptions
-
ec2:AssociateRouteTable
-
ec2:AttachInternetGateway
-
ec2:AuthorizeSecurityGroupEgress
-
ec2:AuthorizeSecurityGroupIngress
-
ec2:CopyImage
-
ec2:CreateDhcpOptions
-
ec2:CreateInternetGateway
-
ec2:CreateNatGateway
-
ec2:CreateNetworkInterface
-
ec2:CreateRoute
-
ec2:CreateRouteTable
-
ec2:CreateSecurityGroup
-
ec2:CreateSubnet
-
ec2:CreateTags
-
ec2:CreateVpc
-
ec2:CreateVpcEndpoint
-
ec2:CreateVolume
-
ec2:DeleteSnapshot
-
ec2:DeregisterImage
-
ec2:DescribeAccountAttributes
-
ec2:DescribeAddresses
-
ec2:DescribeAvailabilityZones
-
ec2:DescribeDhcpOptions
-
ec2:DescribeImages
-
ec2:DescribeInstanceAttribute
-
ec2:DescribeInstanceCreditSpecifications
-
ec2:DescribeInstances
-
ec2:DescribeInternetGateways
-
ec2:DescribeKeyPairs
-
ec2:DescribeNatGateways
-
ec2:DescribeNetworkAcls
-
ec2:DescribePrefixLists
-
ec2:DescribeRegions
-
ec2:DescribeRouteTables
-
ec2:DescribeSecurityGroups
-
ec2:DescribeSubnets
-
ec2:DescribeTags
-
ec2:DescribeVpcEndpoints
-
ec2:DescribeVpcs
-
ec2:DescribeVpcAttribute
-
ec2:DescribeVolumes
-
ec2:DescribeVpcClassicLink
-
ec2:DescribeVpcClassicLinkDnsSupport
-
ec2:ModifyInstanceAttribute
-
ec2:ModifySubnetAttribute
-
ec2:ModifyVpcAttribute
-
ec2:RevokeSecurityGroupEgress
-
ec2:RunInstances
-
ec2:TerminateInstances
-
ec2:DeleteDhcpOptions
-
ec2:DeleteRoute
-
ec2:RevokeSecurityGroupIngress
-
ec2:DisassociateRouteTable
-
ec2:ReplaceRouteTableAssociation
-
ec2:DeleteRouteTable
-
ec2:DeleteSubnet
-
ec2:DescribeNetworkInterfaces
-
ec2:ModifyNetworkInterfaceAttribute
-
ec2:DeleteNatGateway
-
ec2:DeleteSecurityGroup
-
ec2:DetachInternetGateway
-
ec2:DeleteInternetGateway
-
ec2:ReleaseAddress
-
ec2:DeleteVpc
安装所需的 Elasticloadbalancing 权限
-
elasticloadbalancing:AddTags
-
elasticloadbalancing:ApplySecurityGroupsToLoadBalancer
-
elasticloadbalancing:AttachLoadBalancerToSubnets
-
elasticloadbalancing:CreateListener
-
elasticloadbalancing:CreateLoadBalancer
-
elasticloadbalancing:CreateLoadBalancerListeners
-
elasticloadbalancing:CreateTargetGroup
-
elasticloadbalancing:ConfigureHealthCheck
-
elasticloadbalancing:DeleteLoadBalancer
-
elasticloadbalancing:DeregisterInstancesFromLoadBalancer
-
elasticloadbalancing:DeregisterTargets
-
elasticloadbalancing:DescribeInstanceHealth
-
elasticloadbalancing:DescribeListeners
-
elasticloadbalancing:DescribeLoadBalancers
-
elasticloadbalancing:DescribeLoadBalancerAttributes
-
elasticloadbalancing:DescribeTags
-
elasticloadbalancing:DescribeTargetGroupAttributes
-
elasticloadbalancing:DescribeTargetHealth
-
elasticloadbalancing:ModifyLoadBalancerAttributes
-
elasticloadbalancing:ModifyTargetGroup
-
elasticloadbalancing:ModifyTargetGroupAttributes
-
elasticloadbalancing:RegisterTargets
-
elasticloadbalancing:RegisterInstancesWithLoadBalancer
-
elasticloadbalancing:SetLoadBalancerPoliciesOfListener
安装所需的 IAM 权限
-
iam:AddRoleToInstanceProfile
-
iam:CreateInstanceProfile
-
iam:CreateRole
-
iam:DeleteInstanceProfile
-
iam:DeleteRole
-
iam:DeleteRolePolicy
-
iam:GetInstanceProfile
-
iam:GetRole
-
iam:GetRolePolicy
-
iam:GetUser
-
iam:ListInstanceProfilesForRole
-
iam:ListRoles
-
iam:ListUsers
-
iam:PassRole
-
iam:PutRolePolicy
-
iam:RemoveRoleFromInstanceProfile
-
iam:SimulatePrincipalPolicy
-
iam:TagRole
安装所需的 Route53 权限
-
route53:ChangeResourceRecordSets
-
route53:ChangeTagsForResource
-
route53:GetChange
-
route53:GetHostedZone
-
route53:CreateHostedZone
-
route53:DeleteHostedZone
-
route53:ListHostedZones
-
route53:ListHostedZonesByName
-
route53:ListResourceRecordSets
-
route53:ListTagsForResource
-
route53:UpdateHostedZoneComment
安装所需的 S3 权限
-
s3:CreateBucket
-
s3:DeleteBucket
-
s3:GetAccelerateConfiguration
-
s3:GetBucketCors
-
s3:GetBucketLocation
-
s3:GetBucketLogging
-
s3:GetBucketObjectLockConfiguration
-
s3:GetBucketReplication
-
s3:GetBucketRequestPayment
-
s3:GetBucketTagging
-
s3:GetBucketVersioning
-
s3:GetBucketWebsite
-
s3:GetEncryptionConfiguration
-
s3:GetLifecycleConfiguration
-
s3:GetReplicationConfiguration
-
s3:ListBucket
-
s3:PutBucketAcl
-
s3:PutBucketTagging
-
s3:PutEncryptionConfiguration
集群 Operators 所需的 S3 权限
-
s3:PutObject
-
s3:PutObjectAcl
-
s3:PutObjectTagging
-
s3:GetObject
-
s3:GetObjectAcl
-
s3:GetObjectTagging
-
s3:GetObjectVersion
-
s3:DeleteObject
卸载集群所需的所有其他权限
-
autoscaling:DescribeAutoScalingGroups
-
ec2:DeleteNetworkInterface
-
ec2:DeleteVolume
-
ec2:DeleteVpcEndpoints
-
elasticloadbalancing:DescribeTargetGroups
-
elasticloadbalancing:DeleteTargetGroup
-
iam:ListInstanceProfiles
-
iam:ListRolePolicies
-
iam:ListUserPolicies
-
tag:GetResources
创建清单所需的额外 IAM 和 S3 权限
-
iam:CreateAccessKey
-
iam:CreateUser
-
iam:DeleteAccessKey
-
iam:DeleteUser
-
iam:DeleteUserPolicy
-
iam:GetUserPolicy
-
iam:ListAccessKeys
-
iam:PutUserPolicy
-
iam:TagUser
-
iam:GetUserPolicy
-
iam:ListAccessKeys
-
s3:PutBucketPublicAccessBlock
-
s3:GetBucketPublicAccessBlock
-
s3:PutLifecycleConfiguration
-
s3:HeadBucket
-
s3:ListBucketMultipartUploads
-
s3:AbortMultipartUpload
1.1.4. 创建 IAM 用户
每个 Amazon Web Services (AWS) 帐户都包含一个根用户帐户,它基于您用来创建帐户的电子邮件地址。这是一个高权限帐户,建议仅用于初始帐户和账单配置、创建初始用户集,以及保护帐户安全。
在安装 OpenShift Container Platform 之前,请创建一个辅助 IAM 管理用户。完成 AWS 文档中所述的在 AWS 帐户中创建 IAM 用户流程时,请设置以下选项:
流程
-
指定 IAM 用户名并选择
Programmatic access
。 附加
AdministratorAccess
策略,以确保帐户有充足的权限来创建集群。此策略让集群能够为每个 OpenShift Container Platform 组件授予凭证。集群只为组件授予它们需要的凭证。注意虽然可以创建赋予所有所需 AWS 权限的策略并将其附加到用户,但这不是首选的选项。集群将无法为各个组件授予额外的凭证,因此所有组件都使用相同的凭证。
- 可选:通过附加标签向用户添加元数据。
-
确认您指定的用户名被授予了
AdministratorAccess
策略。 记录访问密钥 ID 和 Secret 访问密钥值。在配置本地机器时,您必须使用这些值来运行安装程序。
重要在部署集群时,您无法在使用多因素验证设备来验证 AWS 的同时使用您生成的临时会话令牌。在集群的整个生命周期中,集群会持续使用您的当前 AWS 凭证来创建 AWS 资源,因此您必须使用基于密钥的长期凭证。
1.1.5. 支持的 AWS 区域
您可以将 OpenShift Container Platform 集群部署到以下区域:
- ap-northeast-1(东京)
- ap-northeast-2 (首尔)
- ap-south-1(孟买)
- ap-southeast-1(新加坡)
- ap-southeast-2(悉尼)
- ca-central-1(中部)
- eu-central-1(法拉克福)
- eu-north-1(斯德哥尔摩)
- eu-west-1(爱尔兰)
- eu-west-2(伦敦)
- eu-west-3(巴黎)
- sa-east-1 (圣保罗)
- us-east-1(北弗吉尼亚)
- us-east-2(俄亥俄)
- us-west-1(北加利福尼亚)
- us-west-2(俄勒冈)
后续步骤
安装 OpenShift Container Platform 集群: