在 Amazon Web Services (AWS) 上运行 Kubernetes 与 Elastic Container with Kubernetes (EKS)#
AWS 已发布对 Kubernetes 的原生支持,该支持可在 选定区域 中使用。
本指南使用 AWS 来设置集群。这与 Amazon EKS 入门 中的步骤类似,但补充了一些缺失的细节。
步骤#
为 EKS 服务角色创建 IAM 角色。有关创建角色的说明,请参见 此处。它应该具有以下策略
AmazonEKSClusterPolicy
AmazonEKSServicePolicy
AmazonEC2ContainerRegistryReadOnly
(从用户界面中,选择 EKS 作为服务,然后按照默认步骤操作)
如果您还没有 VPC,请创建一个。此步骤具有很多可变性,因此留给用户处理。但是,可以在 Amazon EKS 入门 中的“创建您的 Amazon EKS 集群 VPC”部分找到一个部署示例。
为 EKS 控制平面创建安全组。您无需在此安全组上设置任何权限。以下步骤将自动定义 EKS 控制平面与各个节点之间的访问控制。
创建您的 EKS 集群(使用用户界面)。使用步骤 1 中的 IAM 角色和步骤 3 中定义的安全组。集群名称将在整个过程中使用。我们将使用
Z2JHKubernetesCluster
作为示例。安装 kubectl 和 aws-iam-authenticator。请参阅 Amazon EKS 入门 中的“为 Amazon EKS 配置 kubectl”。
配置 kubeconfig。另请参阅 Amazon EKS 入门 中的“步骤 2:为 Amazon EKS 配置 kubectl”。
从 AWS 上的用户界面,您可以检索
endpoint-url
、base64-encoded-ca-cert
。cluster-name
是在步骤 4 中给定的名称。如果您在 AWS 配置中使用配置文件,则可以取消注释env
块并指定您的配置文件作为aws-profile
。apiVersion: v1 clusters: - cluster: server: <endpoint-url> certificate-authority-data: <base64-encoded-ca-cert> name: kubernetes contexts: - context: cluster: kubernetes user: aws name: aws current-context: aws kind: Config preferences: {} users: - name: aws user: exec: apiVersion: client.authentication.k8s.io/v1alpha1 command: aws-iam-authenticator args: - "token" - "-i" - "<cluster-name>" # env: # - name: AWS_PROFILE # value: "<aws-profile>"
验证 kubectl 是否正常工作
kubectl get svc
应该返回
kubernetes
和ClusterIP
使用 CloudFormation 创建节点
请参阅 Amazon EKS 入门 中的“步骤 3:启动和配置 Amazon EKS 工作节点”。
警告 如果您打算在私有网络上部署,CloudFormation 模板会为每个工作节点创建一个公有 IP,但如果您只指定了私有子网,则没有路由可以到达该公有 IP。无论如何,如果您希望更正此问题,可以通过将
Resources.NodeLaunchConfig.Properties.AssociatePublicIpAddress
从'true'
更改为'false'
来编辑 CloudFormation 模板。创建 AWS 身份验证 ConfigMap
这对于工作节点找到主控平面是必要的。
请参阅 Amazon EKS 入门 中的“步骤 3:启动和配置 Amazon EKS 工作节点”。
集群自动伸缩器#
如果您想进行一些优化,您需要先部署集群自动伸缩器 (CA)。