在EC2上的简化Graviton2实例

亚马逊网络服务(AWS)和Kubernetes(美丽)已被证明是一个强大的组合,与更多的k8用户也使用Amazon Elastic Kubernetes服务(的)比其他任何Kubernetes管理服务。的,用户可以从中受益的敏捷性和可伸缩性Kubernetes AWS无需管理k8飞机控制。与海洋的地方,用户可以抽象基础设施管理。海洋平面提供了一个完整的数据管理平台创建一个serverless容器的经验。

推动这一切AWS的EC2实例配置,逐步提供新一代的EC2引力子情况下,允许更多的应用程序运行不需要更多的CPU内核和内存,快速扩展应用程序提供一个理想的环境。

EC2重子

自定义构建的AWS,专门为云,这些EC2实例运行在Arm架构处理器(而非X86架构)。Arm架构是越来越受欢迎,有许多企业,包括苹果曾计划采用的新一代macbook。这些基于arm的情况下,A1实例的第一代家庭是两年前了,AWS Graviton2将权力M6g, C6g和R6g实例的家庭类型。这些实例承诺更好的价格/性能与M5实例类型相比,和当测试CPU密集型工作负载导致更快的性能和更少的成本。与这些计算选择,用户能够更好更有效地利用他们的资源和匹配正确的类型的计算正确的工作负载,使这些实例特别有益Kubernetes和的用户。雷竞技rabet官网事实上,的手臂实例提供支持修改的AWS-VPC-CNI、CoreDNS kube-proxy组件。

建筑multi-architecture码头工人的图片

一旦手臂EC2实例被添加到集群的,需要做一些修改码头工人的构建过程,以利用工人节点上运行这些新的实例。构建码头工人的图像时,图像应构建并标记每个硬件架构正在运行(例如my-docker-image: arm-v1 my-docker-image: x86-v1, my-docker-image: arm-v1.1)。对于海洋用户来说,这意味着他们所有的码头工人的图片(与海洋k8控制器)需要配置为运行在Gravition基于arm的实例。

多个部署文件/架构也需要创建运行“正确”的形象(构建的体系结构)在目标实例。幸运的是,码头工人公布了一套新的构建工具,让用户创建一个码头工人形象与多个架构在里面。码头工人守护进程运行时容器从这个形象,这个守护进程将只需要根据实例架构层,码头工人形象。

海洋的地方

完全自动化的解决方案来管理Kubernetes数据平面(例如Kubernetes工作者节点),海洋的实现和自动化容器驱动伸缩的概念,基础设施被扩展以满足吊舱的要求。通过其k8控制器、海洋不断监测和报告pod资源请求和分配指标,随后尺度基础设施到合适的大小和配置。

使海洋用户能够利用新的EC2引力子实例在他们的集群,现货已经把下面的指导方针。

  1. 建立一个与一个节点的集群中描述以下指南:https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html
    • 要确保您已经启动了一个实例,它连接到您的集群,这arm64建筑的实例。
    • 使用以下命令将返回“arm64”指定实例的值是基于arm64:
      kubectl得到节点- o jsonpath = {. items [*] .status.nodeInfo.architecture}”
  2. 示例应用程序与一个连拱的形象。一个简单的python瓶使用HTTP应答器和multi-architecture码头工人创建图像。看到https://github.com/tsahiduek/flask-http的更多信息
  3. 连接你的AWS账户发现SaaS平台

连接海洋的集群

为了美丽控制器在海洋上运行一个重子基于arm的实例中,“码头工人buildx”工具用于生成multi-architecture码头工人的形象。码头工人的图像可以发现在tduek / kubernetes-cluster-controller: multiarch码头工人的中心。

创建自己的海洋EC2引力子实例集群:

创建海洋登录到您的控制台,搬到海洋→云团选项卡并按创建集群:

kubernetes, aws的重子ec2

选择“工人节点迁移”选项。

kubernetes, aws的重子ec2

集群名称“arm-cluster”以及集群标识符字段。

选择的区域集群已经创建。

的导入的字段,选择“实例”和类型的实例ID创建上述的创建过程的一部分。

在接下来的部分,我们只需要选择EC2引力子实例。单击“自定义”按钮下的机器类型和un-select所有实例类型除了A1实例。

所有其他配置(VPC,子网,AMI、用户数据等…)自动进口从正在运行的实例。

kubernetes, aws的重子ec2

下一步是安装Ocean-Kubernetes-Controller如上所述。而不是使用在UI中显示的脚本,使用下面的自定义脚本。占位符替换为适当的值(令牌和现货账户——这可以从UI)。这一修改的原因是由于手臂支持部署的形象。

kubernetes, aws的重子ec2

这个脚本的输出应该是这样的:

kubernetes, aws的重子ec2

几秒钟后,您可以点击“测试连接”按钮,并验证控制器正常运行和所有配置成功创建了。

kubernetes, aws的重子ec2

单击create按钮,并验证集群成功创建

kubernetes, aws的重子ec2

大约一分钟后,你可以看到一个新的实例被创建的海洋,是现货的生命周期和A1实例类型的家庭的一部分。

从这里,你可以成功的排单需节点,让海洋管理所有基础设施(数据平面)的基于arm的集群。

kubernetes, aws的重子ec2

部署示例应用程序

如上所述,一个超级简单的瓶使用python应用程序。码头工人形象构建使用新工具(见“码头工人buildx”Makefile在回购)。使用以下命令文件在您的集群部署这个应用程序:

kubectl应用- f https://raw.githubusercontent.com/tsahiduek/flask-http/master/K8s/deployment.yaml

正如您可以看到的,我们有一个豆荚在运行状态,与集群中的一个节点。

让我们模拟的规模应用。使用以下命令来模拟对我们的部署规模

kubectl规模部署flask-http——副本= 4

运行kubectl得到豆荚表明有豆荚挂起状态,因为没有足够的Cpu集群中:

海洋瞬间监控悬而未决的豆荚和自动缩放事件作出反应。

kubernetes, aws的重子ec2

大约45秒后,新工人集群节点启动和注册,现在可以利用的新改进的引力子的实例,用户继续关注他们的应用程序在海洋管理的基础设施。

反馈是受欢迎的,联系我:

tsahi.duek@www.drvrless.com

https://www.linkedin.com/in/tsahiduek/

https://twitter.com/tsahiduek

观察点播:的研讨会——如何自动化和优化你的k8基础设施

Baidu
map