亚马逊AWS官方博客

Amazon EKS Anywhere – 现已正式发布,可在本地创建和管理 Kubernetes 集群

在 AWS re:Invent 2020 大会上,我们预先宣布了在您自己的数据中心部署 Amazon Elastic Container Service (Amazon ECS) AnywhereAmazon Elastic Kubernetes Service (Amazon EKS) Anywhere 的新选项。

今天,我很高兴地宣布 Amazon EKS Anywhere 正式发布,这是 Amazon EKS 的一种部署选项,从今天开始,您将能够使用 VMware vSphere 轻松地在本地创建和运营 Kubernetes 集群。EKS Anywhere 提供了一个可安装的软件包,用于在本地创建和运营 Kubernetes 集群,并提供自动化工具,以在集群的生命周期内提供支持。

EKS Anywhere 以 Amazon EKS Distro 的优势为基础构建,为您的数据中心带来一致的 AWS 管理体验,后者是 Amazon EKS 所使用的适用于 Kubernetes 的开源发行版。

EKS Anywhere 也是开源的。您可以降低购买或构建自己的管理工具的复杂性,以创建 EKS Distro 集群、配置运营环境和更新软件。借助 EKS Anywhere,您将能够实现集群管理自动化,降低支持成本,并消除使用多个开源或第三方工具操作 Kubernetes 集群所带来的繁冗工作。AWS 完全支持 EKS Anywhere。此外,您可以利用 EKS 控制台查看在任何位置运行的所有 Kubernetes 集群。

我们为您的 Kubernetes 集群提供了多种部署选项:

功能 Amazon EKS Outposts 上的 EKS EKS Anywhere EKS Distro
硬件 由 AWS 管理 由客户管理
部署类型 Amazon EC2、AWS Fargate(无服务器) Outposts 上的 EC2 客户基础设施
控制面板管理 由 AWS 管理 由客户管理
控制面板位置 AWS 云 客户的本地部署或数据中心
集群更新 控制面板和数据层面的托管式就地更新流程 CLI(支持 Flux 的数据层面滚动更新、控制面板手动更新)
网络和安全性 Amazon VPC 容器网络接口 (CNI)、其他兼容的第三方 CNI 插件 Cilium CNI 第三方 CNI 插件
控制台支持 Amazon EKS 控制台 使用 EKS Connector 的 EKS 控制台 自助服务
支持 AWS Support EKS Anywhere 支持订阅 自助服务

EKS Anywhere 可与多种合作伙伴产品集成,以帮助客户充分利用 EKS Anywhere 以及提供其他功能。其中包括用于集群更新的 Flux、用于 GitOps 的 Flux 控制器、eksctl(用于在 EKS 上创建和管理集群的简单 CLI 工具),以及用于联网和提供安全保护的 Cilium

我们还可让您灵活与其他领域所选工具集成。要将集成添加到 EKS Anywhere 集群,请参阅此建议的第三方工具列表

开始使用 Amazon EKS Anywhere
要开始使用 EKS Anywhere,您可以在计算机中创建引导集群以进行本地开发和测试。目前,它允许您在 VMWare vSphere 环境中为生产工作负载创建集群。

我们使用 eksctl 在台式计算机上创建一个集群! 您可以使用 Homebrew 在 Mac 上安装 eksctleksctl-anywhere。或者,您可以为 EKS Anywhere 集群安装一些可能需要的其他工具,例如 kubectl。要了解有关 Linux 的更多信息,请参阅 EKS Anywhere 文档中的安装指南

$ brew install aws/tap/eks-anywhere
$ eksctl anywhere version
0.63.0

生成集群配置并创建集群。

$ CLUSTER_NAME=dev-cluster
$ eksctl anywhere generate clusterconfig $CLUSTER_NAME \
    --provider docker > $CLUSTER_NAME.yaml
$ eksctl anywhere create cluster -f $CLUSTER_NAME.yaml
[i] Performing setup and validations
[v] validation succeeded {"validation": "docker Provider setup is valid"}
[i] Creating new bootstrap cluster
[i] Installing cluster-api providers on bootstrap cluster
[i] Provider specific setup
[i] Creating new workload cluster
[i] Installing networking on workload cluster
[i] Installing cluster-api providers on workload cluster
[i] Moving cluster management from bootstrap to workload cluster
[i] Installing EKS-A custom components (CRD and controller) on workload cluster
[i] Creating EKS-A CRDs instances on workload cluster
[i] Installing AddonManager and GitOps Toolkit on workload cluster
[i] GitOps field not specified, bootstrap flux skipped
[i] Deleting bootstrap cluster
[v] Cluster created!

您创建工作负载集群后,KUBECONFIG 文件将存储在您的管理员计算机上,并具有工作负载集群的管理员权限。您可以将该文件与 kubectl 一起使用来设置和部署工作负载。

$ export KUBECONFIG=${PWD}/${CLUSTER_NAME}/${CLUSTER_NAME}-eks-a-cluster.kubeconfig
$ kubectl get ns
NAME                                STATUS   AGE
capd-system                         Active   21m
capi-kubeadm-bootstrap-system       Active   21m
capi-kubeadm-control-plane-system   Active   21m
capi-system                         Active   21m
capi-webhook-system                 Active   21m
cert-manager                        Active   22m
default                             Active   23m
eksa-system                         Active   20m
kube-node-lease                     Active   23m
kube-public                         Active   23m
kube-system                         Active   23m

您可以创建一个简单的测试应用程序,以验证集群是否可以正常运作。部署并查看集群中运行的新 Pod,然后使用以下命令将部署端口转发到本地计算机:

$ kubectl apply -f "https://anywhere.eks.amazonaws.com/manifests/hello-eks-a.yaml"
$ kubectl get pods -l app=hello-eks-a
NAME                                     READY   STATUS    RESTARTS   AGE
hello-eks-a-745bfcd586-6zx6b   1/1     Running   0          22m
$ kubectl port-forward deploy/hello-eks-a 8000:80
$ curl localhost:8000
⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢

Thank you for using

███████╗██╗  ██╗███████╗
██╔════╝██║ ██╔╝██╔════╝
█████╗  █████╔╝ ███████╗
██╔══╝  ██╔═██╗ ╚════██║
███████╗██║  ██╗███████║
╚══════╝╚═╝  ╚═╝╚══════╝

 █████╗ ███╗   ██╗██╗   ██╗██╗    ██╗██╗  ██╗███████╗██████╗ ███████╗
██╔══██╗████╗  ██║╚██╗ ██╔╝██║    ██║██║  ██║██╔════╝██╔══██╗██╔════╝
███████║██╔██╗ ██║ ╚████╔╝ ██║ █╗ ██║███████║█████╗  ██████╔╝█████╗  
██╔══██║██║╚██╗██║  ╚██╔╝  ██║███╗██║██╔══██║██╔══╝  ██╔══██╗██╔══╝  
██║  ██║██║ ╚████║   ██║   ╚███╔███╔╝██║  ██║███████╗██║  ██║███████╗
╚═╝  ╚═╝╚═╝  ╚═══╝   ╚═╝    ╚══╝╚══╝ ╚═╝  ╚═╝╚══════╝╚═╝  ╚═╝╚══════╝

You have successfully deployed the hello-eks-a pod hello-eks-a-c5b9bc9d8-qp6bg

For more information check out
https://anywhere.eks.amazonaws.com

⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢

EKS Anywhere 还支持用于生产集群的 VMWare vSphere 7.0 或更高版本。要创建生产集群,请参阅 VMware vSphere 部署要求,并遵循 EKS Anywhere 文档中的创建生产集群流程。这几乎与在计算机上创建测试集群的流程相同。

生产级 EKS Anywhere 集群应在 vSphere 上至少包含三个控制面板节点和三个 Worker 节点,以实现高可用性和滚动升级。有关扩展、更新和删除集群等常见操作任务的更多信息,请参阅 EKS Anywhere 文档中的集群管理

EKS Connector – 公开预览版
EKS Connector 是一项新功能,允许您将任何 Kubernetes 集群连接到 EKS 控制台。您可以将任何 Kubernetes 集群连接到 EKS 控制台,包括 EC2 上的自托管集群、本地运行的 EKS Anywhere 集群以及在 AWS 之外运行的其他 Kubernetes 集群。它可让您轻松地集中查看所有连接的集群。

要连接 EKS Anywhere 集群,请访问 EKS 控制台中的集群部分,然后在 Add cluster(添加集群)下拉菜单中选择 Register(注册)。

为集群定义一个名称,然后选择 Provider(提供商);如果找不到合适的提供商,请选择 Other(其他)。

完成集群注册后,您将被重定向到 Cluster Overview(集群概览)页面。选择 Download YAML file(下载 YAML 文件)以获取 Kubernetes 配置文件,以便部署所有必要的基础设施,从而将集群连接到 EKS。

在我们的文档中应用从 EKS Connector 下载的 eks-connector.yaml 和角色绑定 eks-connector-binding.yaml 文件。EKS Connector 充当代理,并将 EKS 控制台请求转发到集群上的 Kubernetes API 服务器,因此您需要将连接器的服务账户与 EKS Connector 角色关联起来,该角色授予模拟 AWS IAM 实体的相关权限。

$ kubectl apply -f eks-connector.yaml
$ kubectl apply -f eks-connector-binding.yaml

完成注册后,集群应处于活动状态。

$ eks describe-cluster --name "my-first-registered-cluster" --region ${AWS_REGION}

以下是预期的输出:

{
    "cluster": {
    "name": "my-first-registered-cluster",
    "arn": "arn:aws:eks:{EKS-REGION}:{ACCOUNT-ID}:cluster/my-first-registered-cluster",
    "createdAt": 1627672425.765,
    "connectorConfig": {
    "activationId": "xxxxxxxxACTIVATION_IDxxxxxxxx",
    "activationExpiry": 1627676019.0,
    "provider": "OTHER",
     "roleArn": "arn:aws:iam::{ACCOUNT-ID}:role/eks-connector-agent"
    },
  "status": "ACTIVE", "tags": {}
  } 
}

现已面向 Amazon EKS 可用的所有 AWS 区域提供了 EKS Connector 公开预览版。请选择离集群位置最近的区域,以最大限度地减少延迟。要了解详情,请访问 Amazon EKS 用户指南中的 EKS 连接器

注意事项
对于 EKS Anywhere,需要注意以下几点:

连接:有三种连接选项:完全连接、部分断开连接和完全断开连接。对于完全连接和部分断开连接,您可以通过 EKS Connector 将 EKS Anywhere 集群连接到 EKS 控制台,然后查看集群配置和工作负载状态。您可以通过适用于 Kubernetes 的 AWS 控制器 (ACK) 利用 AWS 服务。您可以使用 AWS System Manager 代理连接 EKS Anywhere 基础设施资源,然后使用 SSM 控制台查看这些资源。

安全模式:AWS 遵循责任共担模式,其中 AWS 负责云安全性,而客户则负责云的安全性。但是,EKS Anywhere 是一种开源工具,责任分配与 Amazon EKS 这样的托管云服务的分配方式不同。AWS 负责构建和交付安全工具。此工具将预置一个最初安全的 Kubernetes 集群。要了解详情,请参阅 EKS Anywhere 中的安全最佳实践文档。

AWS Support:AWS Enterprise Support 是购买 Amazon EKS Anywhere 支持订阅的先决条件。如果您想为 EKS Anywhere 集群寻求业务支持,请联系您的技术客户经理 (TAM) 以了解详细信息。此外,EKS Anywhere 受开源社区的支持。如果您有问题,请创建一个问题,会有人尽快回复您。

现已发布
Amazon EKS Anywhere 现已正式发布,可将 EKS 功能与您的本地基础设施结合使用,通过合作伙伴集成、托管附加组件和精选开源工具加快采用速度。

要参加现场演示和问答以了解详情,请在 9 月 13 日加入我们的 Containers from the Couch。您可以看到完整的创建集群的演示,以及用于扩展、升级集群版本和 GitOps 管理的管理员工作流。

请通过您平常的 AWS Support 联系人,在 Amazon EKS 的 AWS 论坛 或 Github 上的容器路线图上向我们发送反馈。

Channy