|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
创建Amazon EC2集群
在本节中,您将学习如何在Amazon EC2中部署https://documentation.suse.com/cloudnative/rke2/[RKE2]或https://documentation.suse.com/cloudnative/k3s/[K3s] Kubernetes集群。
首先,您需要在Rancher中设置您的EC2云凭证。
然后,您在Rancher中创建一个EC2集群,并在配置新集群时定义机器池。每个机器池都有一个Kubernetes角色:etcd、controlplane或worker。Rancher在新节点上安装Kubernetes,并根据机器池定义的Kubernetes角色设置每个节点。
先决条件
-
AWS EC2访问密钥和秘密密钥,将用于创建实例。请参见 亚马逊文档:创建访问密钥,了解如何创建访问密钥和秘密密钥。
-
创建的IAM策略,以添加到访问密钥和秘密密钥的用户。请参见 亚马逊文档:创建IAM策略(控制台),了解如何创建IAM策略。请查看下面我们的三个示例JSON策略:
-
带有PassRole的示例IAM策略(如果您想使用Kubernetes云提供商或想将IAM控制文件传递给实例,则需要)
-
作为权限添加的IAM策略,以添加到用户。请参见 亚马逊文档:向用户添加权限(控制台),了解如何将其附加到用户。
-
仅IPv4或仅IPv6或双栈子网和/或VPC,可以在其中配置节点并分配IPv4和/或IPv6地址。请参见 亚马逊文档:您的VPC的IPv6支持。
创建EC2集群
创建集群的步骤根据您的Rancher版本而有所不同。
创建您的云凭据
如果您已经有一组云凭证可供使用,请跳过此部分。
-
单击 ☰ > 集群管理。
-
点击 云凭据。
-
单击*创建*。
-
点击*Amazon*。
-
输入云凭证的名称。
-
在*默认区域*字段中,选择您的集群节点将要所在的AWS区域。
-
输入您的AWS EC2 访问密钥*和*秘密密钥。
-
单击*创建*。
*结果:*您已创建用于在集群中部署节点的云凭证。
创建您的集群
-
单击 ☰ > 集群管理。
-
在*集群*页面,点击*创建*。
-
切换开关到*RKE2/K3s*。
-
点击*Amazon EC2*。
-
选择一个*云凭证*(如果存在多个)。否则,它会被预选。
-
输入*集群名称*。
-
为每个Kubernetes角色创建一个机器池。请参考最佳实践,以获取角色分配和数量的建议。
-
为每个机器池定义机器配置。请参考EC2机器配置参考以获取有关配置选项的信息。
-
-
使用*集群配置*选择要安装的Kubernetes版本、使用的网络提供商以及是否希望启用项目网络隔离。有关配置集群的帮助,请参考RKE2和K3s集群配置参考。
-
使用*成员角色*配置集群的用户授权。点击*添加成员*以添加可以访问集群的用户。使用*角色*下拉菜单为每个用户设置权限。
-
单击*创建*。
结果:
您的集群已创建并被分配为*正在配置*状态。Rancher 正在启动您的集群。
在集群状态更新为*活动*后,您可以访问您的集群。
*活动*集群被分配两个项目:
-
Default,包含`default`名称空间 -
System,包含cattle-system、traefik、kube-public和kube-system名称空间
IAM策略
示例IAM策略
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"ec2:AuthorizeSecurityGroupIngress",
"ec2:Describe*",
"ec2:ImportKeyPair",
"ec2:CreateKeyPair",
"ec2:CreateSecurityGroup",
"ec2:CreateTags",
"ec2:DeleteKeyPair",
"ec2:ModifyInstanceMetadataOptions"
],
"Resource": "*"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"ec2:RunInstances"
],
"Resource": [
"arn:aws:ec2:REGION::image/ami-*",
"arn:aws:ec2:REGION:AWS_ACCOUNT_ID:instance/*",
"arn:aws:ec2:REGION:AWS_ACCOUNT_ID:placement-group/*",
"arn:aws:ec2:REGION:AWS_ACCOUNT_ID:volume/*",
"arn:aws:ec2:REGION:AWS_ACCOUNT_ID:subnet/*",
"arn:aws:ec2:REGION:AWS_ACCOUNT_ID:key-pair/*",
"arn:aws:ec2:REGION:AWS_ACCOUNT_ID:network-interface/*",
"arn:aws:ec2:REGION:AWS_ACCOUNT_ID:security-group/*"
]
},
{
"Sid": "VisualEditor2",
"Effect": "Allow",
"Action": [
"ec2:RebootInstances",
"ec2:TerminateInstances",
"ec2:StartInstances",
"ec2:StopInstances"
],
"Resource": "arn:aws:ec2:REGION:AWS_ACCOUNT_ID:instance/*"
}
]
}
带有PassRole的示例IAM策略
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"ec2:AuthorizeSecurityGroupIngress",
"ec2:Describe*",
"ec2:ImportKeyPair",
"ec2:CreateKeyPair",
"ec2:CreateSecurityGroup",
"ec2:CreateTags",
"ec2:DeleteKeyPair",
"ec2:ModifyInstanceMetadataOptions"
],
"Resource": "*"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"iam:PassRole",
"ec2:RunInstances"
],
"Resource": [
"arn:aws:ec2:REGION::image/ami-*",
"arn:aws:ec2:REGION:AWS_ACCOUNT_ID:instance/*",
"arn:aws:ec2:REGION:AWS_ACCOUNT_ID:placement-group/*",
"arn:aws:ec2:REGION:AWS_ACCOUNT_ID:volume/*",
"arn:aws:ec2:REGION:AWS_ACCOUNT_ID:subnet/*",
"arn:aws:ec2:REGION:AWS_ACCOUNT_ID:key-pair/*",
"arn:aws:ec2:REGION:AWS_ACCOUNT_ID:network-interface/*",
"arn:aws:ec2:REGION:AWS_ACCOUNT_ID:security-group/*",
"arn:aws:iam::AWS_ACCOUNT_ID:role/YOUR_ROLE_NAME"
]
},
{
"Sid": "VisualEditor2",
"Effect": "Allow",
"Action": [
"ec2:RebootInstances",
"ec2:TerminateInstances",
"ec2:StartInstances",
"ec2:StopInstances"
],
"Resource": "arn:aws:ec2:REGION:AWS_ACCOUNT_ID:instance/*"
}
]
}
允许加密EBS卷的示例IAM策略
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:Decrypt",
"kms:GenerateDataKeyWithoutPlaintext",
"kms:Encrypt",
"kms:DescribeKey",
"kms:CreateGrant",
"ec2:DetachVolume",
"ec2:AttachVolume",
"ec2:DeleteSnapshot",
"ec2:DeleteTags",
"ec2:CreateTags",
"ec2:CreateVolume",
"ec2:DeleteVolume",
"ec2:CreateSnapshot"
],
"Resource": [
"arn:aws:ec2:REGION:AWS_ACCOUNT_ID:volume/*",
"arn:aws:ec2:REGION:AWS_ACCOUNT_ID:instance/*",
"arn:aws:ec2:REGION:AWS_ACCOUNT_ID:snapshot/*",
"arn:aws:kms:REGION:AWS_ACCOUNT_ID:key/KMS_KEY_ID"
]
},
{
"Effect": "Allow",
"Action": [
"ec2:DescribeInstances",
"ec2:DescribeTags",
"ec2:DescribeVolumes",
"ec2:DescribeSnapshots"
],
"Resource": "*"
}
]
}