在 Amazon Web Services (AWS) 上运行 Kubernetes 与 Elastic Container with Kubernetes (EKS)#

AWS 已发布对 Kubernetes 的原生支持,该支持可在 选定区域 中使用。

本指南使用 AWS 来设置集群。这与 Amazon EKS 入门 中的步骤类似,但补充了一些缺失的细节。

步骤#

  1. 为 EKS 服务角色创建 IAM 角色。有关创建角色的说明,请参见 此处。它应该具有以下策略

    • AmazonEKSClusterPolicy

    • AmazonEKSServicePolicy

    • AmazonEC2ContainerRegistryReadOnly

    (从用户界面中,选择 EKS 作为服务,然后按照默认步骤操作)

  2. 如果您还没有 VPC,请创建一个。此步骤具有很多可变性,因此留给用户处理。但是,可以在 Amazon EKS 入门 中的“创建您的 Amazon EKS 集群 VPC”部分找到一个部署示例。

  3. 为 EKS 控制平面创建安全组。您无需在此安全组上设置任何权限。以下步骤将自动定义 EKS 控制平面与各个节点之间的访问控制。

  4. 创建您的 EKS 集群(使用用户界面)。使用步骤 1 中的 IAM 角色和步骤 3 中定义的安全组。集群名称将在整个过程中使用。我们将使用 Z2JHKubernetesCluster 作为示例。

  5. 安装 kubectlaws-iam-authenticator。请参阅 Amazon EKS 入门 中的“为 Amazon EKS 配置 kubectl”。

  6. 配置 kubeconfig。另请参阅 Amazon EKS 入门 中的“步骤 2:为 Amazon EKS 配置 kubectl”。

    从 AWS 上的用户界面,您可以检索 endpoint-urlbase64-encoded-ca-certcluster-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>"
    
  7. 验证 kubectl 是否正常工作

    kubectl get svc
    

    应该返回 kubernetesClusterIP

  8. 使用 CloudFormation 创建节点

    请参阅 Amazon EKS 入门 中的“步骤 3:启动和配置 Amazon EKS 工作节点”。

    警告 如果您打算在私有网络上部署,CloudFormation 模板会为每个工作节点创建一个公有 IP,但如果您只指定了私有子网,则没有路由可以到达该公有 IP。无论如何,如果您希望更正此问题,可以通过将 Resources.NodeLaunchConfig.Properties.AssociatePublicIpAddress'true' 更改为 'false' 来编辑 CloudFormation 模板。

  9. 创建 AWS 身份验证 ConfigMap

    这对于工作节点找到主控平面是必要的。

    请参阅 Amazon EKS 入门 中的“步骤 3:启动和配置 Amazon EKS 工作节点”。

集群自动伸缩器#

如果您想进行一些优化,您需要先部署集群自动伸缩器 (CA)。