在亚马逊云科技 re:Invent 2020峰会中上,我们公布了在您自己数据中心内部署Amazon Elastic Container Service (Amazon ECS) Anywhere和Amazon Elastic Kubernetes Service (Amazon EKS) Anywhere的全新部署选项。
公布
https://aws.amazon.com/cn/blogs/aws/reinvent-2020-preannouncements-for-tuesday-december-1/
Amazon Elastic Container Service (Amazon ECS) Anywhere
https://aws.amazon.com/ko/blogs/aws/getting-started-with-amazon-ecs-anywhere-now-generally-available/
Amazon Elastic Kubernetes Service (Amazon EKS) Anywhere
https://aws.amazon.com/cn/eks/eks-anywhere/
今年9月8日,Amazon EKS Anywhere宣布可用。Amazon EKS的这一全新部署选项可供您在本地使用VMware vSphere轻松创建并运维Kubernetes集群。Amazon EKS Anywhere提供了一个可安装的软件包,借此即可在本地创建并运维Kubernetes集群,同时可通过自动化工具为集群的生命周期提供支持。
以Amazon EKS所用的开源Kubernetes发行版(Amazon EKS Distro)为基础,Amazon EKS Anywhere让您可以在自己的数据中心内获得与亚马逊云科技平台一致的管理体验。
Amazon EKS Distro
https://aws.amazon.com/eks/eks-distro/
Amazon EKS Anywhere也是开源的。借此,您无需通过复杂的过程购买或构建自己的管理工具,即可创建Amazon EKS Distro集群,配置运维环境并更新软件。Amazon EKS Anywhere可帮您实现集群的自动化管理,降低支持成本,消除使用多种开源或第三方工具运维Kubernetes集群的繁重负担。Amazon EKS Anywhere完全由亚马逊云科技提供支持,此外您还可以通过EKS控制台查看自己在任何位置运行的所有Kubernetes集群。
开源
https://github.com/aws/eks-anywhere/
我们为您的Kubernetes集群提供了多种部署选项:
Amazon EKS Anywhere能与合作伙伴的各种产品相集成,借此帮助客户充分利用Amazon EKS Anywhere并获得更多功能。例如用于集群更新的Flux、用于GitOps的Flux Controller、在Amazon EKS上创建并管理集群的简单CLI工具eksctl,以及用于实现网络和安全性的Cilium。
Flux
https://fluxcd.io/
eksctl
https://eksctl.io/
Cilium
https://cilium.io/
我们还为客户提供了更高灵活性,帮助客户将其与自己选择的其他领域的工具相集成。若要为您的Amazon EKS Anywhere集群集成其他功能,请参阅推荐的第三方工具列表。
推荐的第三方工具列表
https://anywhere.eks.amazonaws.com/docs/tasks/cluster/cluster-integrations/
Amazon EKS Anywhere上手
若要上手使用Amazon EKS Anywhere,您可以在自己的计算机上创建一个Bootstrap集群并将其用于本地开发和测试用途。目前该技术支持您在VMware vSphere环境中创建用于生产工作负载的集群。
首先使用eksctl在您的桌面计算机中创建一个集群!在Mac上,您可以使用homebrew安装eksctl和eksctl-anywhere。或者您也可以为自己的Amazon EKS Anywhere集群安装需要使用的其他工具,例如kubectl。
如需进一步了解在Linux下的操作方法,请参阅Amazon EKS Anywhere文档中的 安装指南 。homebrew
http://homebrew.sh/
安装指南
https://anywhere.eks.amazonaws.com/docs/tasks/cluster/cluster-integrations/
$ brew install aws/tap/eks-anywhere
$ eksctl anywhere version
v0.5.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
⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢
Amazon EKS Anywhere还支持将VMware vSphere 7.0或更高版本用于生产集群。若要创建生产集群,请参阅VMware vSphere部署文档中的前提要求,并按照Amazon EKS Anywhere文档中的创建生产集群一文的指示进行操作。具体过程与在您自己计算机上创建测试集群的步骤几乎完全相同。
前提要求
https://anywhere.eks.amazonaws.com/docs/reference/clusterspec/vsphere/
创建生产集群
https://anywhere.eks.amazonaws.com/docs/getting-started/production-environment/
为实现高可用性及滚动更新的能力,生产级Amazon EKS Anywhere集群应在vSphere中包含至少三个控制平面节点和三个工作节点。有关扩展、更新、删除集群等常见运维任务的详情,请参阅Amazon EKS Anywhere文档中的集群管理一文。
集群管理
https://anywhere.eks.amazonaws.com/docs/tasks/cluster/
Amazon EKS Connector —— 公开预览
Amazon EKS Connector是一项新功能,可帮您将任意Kubernetes集群连接至Amazon EKS控制台。您可以将任意Kubernetes集群(包括在Amazon EC2上自行管理的集群,在本地运行的Amazon EKS Anywhere集群,以及在亚马逊云科技平台之外运行的其他Kubernetes集群)连接至Amazon EKS控制台。随后即可轻松地在一个位置查看所有已连接集群。
若要连接Amazon EKS Anywhere集群,请在Amazon EKS控制台中访问Clusters选项,并在Add cluster下拉菜单中选择Register。
Amazon EKS控制台
https://console.aws.amazon.com/eks/home?#/clusters
为您的集群输入名称并选择Provider(如果没找到适合的Provider,请选择Other)。
集群注册完毕后,您将被重定向至Cluster Overview页面。请选择Download YAML file以生成Kubernetes配置文件,借此即可部署所有必要的基础架构并将您的集群连接至 Amazon EKS。
根据文档中Amazon EKS Connector一文的介绍应用下载的eks-connector.yaml文件和角色绑定文件eks-connector-binding.yaml。Amazon EKS Connector充当了代理的作用,可将Amazon EKS控制台请求转发至您集群中的Kubernetes API服务器,因此您需要为连接器的服务帐户关联一个Amazon EKS Connector角色,借此提供模拟Amazon IAM实体的权限。
Amazon EKS Connector
https://docs.aws.amazon.com/eks/latest/userguide/eks-connector.html
eks-connector-binding.yaml
https://amazon-eks.s3.us-west-2.amazonaws.com/eks-connector/manifests/eks-connector-roles-example/latest/eks-connector-roles-example.yaml
$ kubectl apply -f eks-connector.yaml
$ kubectl apply -f eks-connector-binding.yaml
注册完成后,集群应处于ACTIVE状态。
$ 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 Connector目前在所有提供了Amazon EKS服务的亚马逊云科技区域均处于公开预览状态。为尽可能降低延迟,请选择距离您的集群位置最接近的区域。详情请访问Amazon EKS用户指南中的Amazon EKS Connector一文。
Amazon EKS Connector
https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html
注意事项
关于Amazon EKS Anywhere,有如下这些注意事项需要留意:
连接性:目前有三种连接选项:完全连接,部分断开,以及完全断开。对于完全连接和部分断开的连接方式,您可以通过Amazon EKS Connector将自己的Amazon EKS Anywhere集群连接至Amazon EKS控制台,并查看集群配置和工作负载状态。您可以通过Amazon Controllers for Kubernetes(ACK)使用亚马逊云科技提供的其他服务。您还可以使用Amazon System Manager Agents连接Amazon EKS Anywhere基础架构资源并使用SSM控制台查看。
Amazon Controllers for Kubernetes
https://github.com/aws-controllers-k8s/
Amazon System Manager Agents
https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent.html
安全模型:亚马逊云科技遵循了责任共担模型,在该模型中,亚马逊云科技负责云本身的安全性,云上运行的内容的安全性则由客户来负责。然而Amazon EKS Anywhere是一款开源工具,其责任的分担方式与诸如Amazon EKS等托管云服务的分担方式有所差异。亚马逊云科技负责构建并交付一个安全工具,该工具可预配处于初始安全状态的Kubernetes集群。详情请参阅Amazon EKS Anywhere文档中的安全性最佳实践一文。
责任共担模型
https://aws.amazon.com/compliance/shared-responsibility-model/
安全性最佳实践
https://anywhere.eks.amazonaws.com/docs/reference/security/
亚马逊云科技的支持:若要购买Amazon EKS Anywhere支持订阅,首先需要具备Amazon Enterprise Support。如果您希望自己的Amazon EKS Anywhere集群能够获得商业支持,请联络Technical Account Manager(TAM)以了解详情。此外Amazon EKS Anywhere还可由开源社区提供支持。如果您遇到任何问题,请提交issue,随后会有人尽快联系您。
Amazon EKS Anywhere支持订阅
http://aws.amazon.com/eks/eks-anywhere/pricing
issue
https://github.com/aws/eks-anywhere/issues
现已可用
Amazon EKS Anywhere现已能够借助您的本地基础架构提供EKS功能,并能通过合作伙伴集成、托管的加载项以及量身定制的开源工具加速您的采用过程。
您可以通过常规的Amazon Support合约、亚马逊云科技论坛的Amazon EKS板块,或GitHub上的容器路线图向我们提交反馈。
亚马逊云科技论坛
https://forums.aws.amazon.com/forum.jspa?forumID=303
容器路线图
https://github.com/aws/containers-roadmap
本篇作者
Channy Yun
亚马逊云科技
首席开发者布道师
热衷于帮助开发者借助亚马逊云科技的最新服务构建现代化应用程序。作为一名务实的开发者和博客作者,他热爱社区驱动的技术学习和分享活动,并借此将更多开发者聚集到亚马逊云科技全球用户社区中。他主要研究开源、容器、存储、网络和安全性以及IoT等领域。您可以通过Twitter关注他:@channyun。
听说,点完下面4个按钮
就不会碰到bug了!