将外部 Kubernetes 集群连接到 Amazon EKS 管理控制台 - Amazon EKS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

帮助改进此页面

想为本用户指南做出贡献? 滚动到页面底部,然后选择在 GitHub 上编辑此页面。您的贡献有助于我们的用户指南为每个人提供更充分的参考。

将外部 Kubernetes 集群连接到 Amazon EKS 管理控制台

您可以在以下过程中使用多种方法将外部 Kubernetes 集群连接到 Amazon EKS。此过程包括两个步骤:向 Amazon EKS 注册集群,在集群中安装 eks-connector 代理。

重要

您必须在完成第一步后 3 天内(注册到期之前)完成第二步。

注意事项

安装代理时,您可以使用 YAML 清单。或者,如果您向 Amazon Web Services Management Console 或 Amazon Command Line Interface 注册集群,则可以使用 Helm。但是,如果您向 eksctl 注册集群,则无法使用 Helm 安装代理。

先决条件

  • 确保已创建 Amazon EKS Connector 代理角色。按照 创建 Amazon EKS Connector 代理角色 中的步骤操作。

  • 您必须拥有以下权限才能注册集群:

    • eks:RegisterCluster

    • ssm:CreateActivation

    • ssm:DeleteActivation

    • iam:PassRole

步骤 1:注册集群

Amazon CLI
先决条件
要使用 Amazon CLI 注册集群
  • 对于 Connector 配置,请指定您的 Amazon EKS Connector 代理 IAM 角色。有关更多信息,请参阅 Amazon EKS Connector 所需的 IAM 角色

    aws eks register-cluster \ --name my-first-registered-cluster \ --connector-config roleArn=arn:aws:iam::111122223333:role/AmazonEKSConnectorAgentRole,provider="OTHER" \ --region aws-region

    示例输出如下。

    { "cluster": { "name": "my-first-registered-cluster", "arn": "arn:aws:eks:region:111122223333:cluster/my-first-registered-cluster", "createdAt": 1627669203.531, "ConnectorConfig": { "activationId": "xxxxxxxxACTIVATION_IDxxxxxxxx", "activationCode": "xxxxxxxxACTIVATION_CODExxxxxxxx", "activationExpiry": 1627672543.0, "provider": "OTHER", "roleArn": "arn:aws:iam::111122223333:role/AmazonEKSConnectorAgentRole" }, "status": "CREATING" } }

    在下一步中使用 aws-regionactivationIdactivationCode 值。

Amazon Web Services Management Console
要向控制台注册 Kubernetes 集群。
  1. 从以下位置打开 Amazon EKS 控制台:https://console.aws.amazon.com/eks/home#/clusters

  2. 选择 Add cluster(添加集群),然后选择 Register(注册)以打开配置页面。

  3. Configure cluster (配置集群) 部分,填写以下字段:

    • Name(名称)– 集群的唯一名称。

    • Provider(提供程序)– 选择以显示 Kubernetes 集群提供程序的下拉列表。如果您不了解具体的提供程序,请选择其他

    • EKS Connector 角色:选择用于连接集群的角色。

  4. 选择 Register cluster(注册集群)。

  5. 此时将显示集群概览页面。如果您想使用 Helm 图表,请复制 helm install 命令并继续下一步。如果要使用 YAML 清单,请选择下载 YAML 文件,将清单文件下载到本地驱动程序。

    重要
    • 这是您复制 helm install 命令或下载此文件的唯一机会。不要离开此页面,否则将无法访问此链接,届时您必须注销集群并从头开始此步骤。

    • 对于注册的集群,命令或清单文件只能使用一次。如果从 Kubernetes 集群中删除资源,则必须重新注册集群并获取新的清单文件。

    继续执行下一步,以将清单文件应用于 Kubernetes 集群。

eksctl
先决条件
要使用 eksctl 注册集群
  1. 提供名称、提供程序和区域来注册集群。

    eksctl register cluster --name my-cluster --provider my-provider --region region-code

    输出示例:

    2021-08-19 13:47:26 [ℹ] creating IAM role "eksctl-20210819194112186040" 2021-08-19 13:47:26 [ℹ] registered cluster "<name>" successfully 2021-08-19 13:47:26 [ℹ] wrote file eks-connector.yaml to <current directory> 2021-08-19 13:47:26 [ℹ] wrote file eks-connector-clusterrole.yaml to <current directory> 2021-08-19 13:47:26 [ℹ] wrote file eks-connector-console-dashboard-full-access-group.yaml to <current directory> 2021-08-19 13:47:26 [!] note: "eks-connector-clusterrole.yaml" and "eks-connector-console-dashboard-full-access-group.yaml" give full EKS Console access to IAM identity "<aws-arn>", edit if required; read https://eksctl.io/usage/eks-connector for more info 2021-08-19 13:47:26 [ℹ] run `kubectl apply -f eks-connector.yaml,eks-connector-clusterrole.yaml,eks-connector-console-dashboard-full-access-group.yaml` before expiry> to connect the cluster

    这将在本地计算机上创建文件。必须在 3 天内将这些文件应用到外部集群,否则注册将会过期。

  2. 在可以访问集群的终端中,应用 eks-connector-binding.yaml 文件:

    kubectl apply -f eks-connector-binding.yaml

步骤 2:安装 eks-connector 代理

Helm chart
注意

如果您向 eksctl 注册了集群,则请使用 YAML 清单方法而不是 Helm 图表方法。

  1. 如果在上一步中使用了 Amazon CLI,请将以下命令中的 ACTIVATION_CODEACTIVATION_ID 分别替换为 activationId、和 activationCode 值。将 aws-region 替换为在上一步中使用的 Amazon Web Services 区域。然后运行命令在注册集群上安装 eks-connector 代理:

    $ helm install eks-connector \ --namespace eks-connector \ oci://public.ecr.aws/eks-connector/eks-connector-chart \ --set eks.activationCode=ACTIVATION_CODE \ --set eks.activationId=ACTIVATION_ID \ --set eks.agentRegion=aws-region

    如果在上一步中使用了 Amazon Web Services Management Console,请使用从上一步复制的已填充这些值的命令。

  2. 检查已安装 eks-connector 部署的运行状况,并等待 Amazon EKS 中已注册集群的状态变为 ACTIVE

YAML manifest

通过将 Amazon EKS Connector 清单文件应用于 Kubernetes 集群来完成连接。为此,必须使用前面描述的方法。如果没有在 3 天内应用清单,Amazon EKS Connector 注册将过期。如果集群连接过期,则必须在再次连接集群之前注销集群。

  1. 下载 Amazon EKS Connector YAML 文件。

    curl -O https://amazon-eks.s3.us-west-2.amazonaws.com/eks-connector/manifests/eks-connector/latest/eks-connector.yaml
  2. 编辑 Amazon EKS Connector YAML 文件,将 %AWS_REGION%%EKS_ACTIVATION_ID%%EKS_ACTIVATION_CODE% 的所有引用替换为上一步输出的 aws-regionactivationIdactivationCode

    以下示例命令可以替换这些值。

    sed -i "s~%AWS_REGION%~$aws-region~g; s~%EKS_ACTIVATION_ID%~$EKS_ACTIVATION_ID~g; s~%EKS_ACTIVATION_CODE%~$(echo -n $EKS_ACTIVATION_CODE | base64)~g" eks-connector.yaml
    重要

    确保激活码采用 base64 格式。

  3. 在可以访问集群的终端中,可以运行以下命令应用更新的清单文件:

    kubectl apply -f eks-connector.yaml
  4. 将绑定 Amazon EKS Connector 清单和角色的 YAML 文件应用于 Kubernetes 集群后,确认该集群现在已连接。

    aws eks describe-cluster \ --name "my-first-registered-cluster" \ --region AWS_REGION

    该输出应包含 status=ACTIVE

  5. (可选)向集群添加标签。有关更多信息,请参阅 使用标签整理 Amazon EKS 资源

后续步骤

如果您对这些步骤有任何疑问,请参阅 排查 Amazon EK Connector 问题

要向其他 IAM 主体授予对 Amazon EKS 控制台的访问权限以查看已连接的集群中的 Kubernetes 资源,请参阅授予在 Amazon EKS 控制台上查看 Kubernetes 集群资源的权限