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

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

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

重要

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

注意事项

安装代理时,您可以使用 YAML 清单。或者,如果您向 AWS Management Console 或 AWS 命令行界面注册集群,则可以使用 Helm。但是,如果您向 eksctl 注册集群,则无法使用 Helm 安装代理。

先决条件

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

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

    • eks:RegisterCluster

    • ssm:CreateActivation

    • ssm:DeleteActivation

    • iam:PassRole

步骤 1:注册集群

要向 Amazon EKS 连接器注册集群,您可以使用以下工具之一:

AWS CLI

  1. 必须安装 AWS CLI。要进行安装或升级,请参阅安装 AWS CLI

  2. 对于 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 值。

AWS Management Console

  1. 打开 Amazon EKS console(Amazon EKS 控制台)

  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

  1. 必须安装 eksctl 版本 0.68 或更高版本。要安装或对其升级,请参阅 开始使用 Amazon EKS – eksctl

  2. 提供名称、提供程序和区域来注册集群。

    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 天内将这些文件应用到外部集群,否则注册将会过期。

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

    kubectl apply -f eks-connector-binding.yaml

步骤 2:安装 eks-connector 代理

要安装 eks-connector 代理,请使用以下工具之一:

helm

注意

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

  1. 如果在上一步中使用了 AWS CLI,请将以下命令中的 ACTIVATION_CODEACTIVATION_ID 分别替换为 activationIdactivationCode 值。将 aws-region 替换为在上一步中使用的 AWS 区域。然后运行命令在注册集群上安装 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

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

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

yaml

通过将 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 集群资源的权限