写点什么

AWS Fargate 上的 Amazon EKS 现已全面推出

  • 2019-12-12
  • 本文字数:6308 字

    阅读完需:约 21 分钟

AWS Fargate 上的 Amazon EKS 现已全面推出

从今天开始,我们可以开始使用 Amazon Elastic Kubernetes ServiceAWS Fargate 上运行 Kubernetes Pod。使用 Amazon EKS 和 Fargate 将不需要为 Pod 预置和管理基础设施,因此可以在 AWS 上直接运行基于 Kubernetes 的应用程序。


使用 AWS Fargate,客户不需要成为 Kubernetes 运营专家也能运行经成本优化的高可用性集群。借助 Fargate,客户不再需要为其 Amazon EKS 集群创建或管理 EC2 实例。


客户在云中运行 Kubernetes 应用程序时,不必担心 EC2 实例集群的补丁、扩展或安全问题。使用 Fargate,客户可以定义并为 Pod 级的资源付费。这样可以为每个应用程序轻松调整资源利用大小,并让客户清楚地看到每个 Pod 的成本。


下面,我将通过此博文的余下部分进一步探索这一新功能,并使用 Fargate 上的 Amazon EKS 部署一个简单的基于 Kubernetes 的应用程序。


我们来构建一个集群


设置集群的最简单方法是使用 eksctl,这是适用于 EKS 的官方 CLI 工具。下面的命令将创建一个名为 demo-newsblog 且不含工作节点的集群。


Bash


eksctl create cluster --name demo-newsblog --region eu-west-1 --fargate
复制代码


这个单一命令在后台进行了很多操作。它不仅为我创建了集群,除此之外,它还创建了一个 Fargate 配置文件。


通过这个 Fargate 配置文件,我可以指定我希望在 Fargate 上运行的 Kubernetes Pod,我的 Pod 运行所在的子网,而且这个配置文件还提供了 Kubernetes 代理将容器镜像下载到 Pod 并代表我执行其他操作时所用的 IAM 执行角色。


了解 Fargate 配置文件是了解此功能工作原理的关键。因此,我打算删除自动为我创建的 Fargate 配置文件,并手动重新创建该配置文件。


要创建 Fargate 配置文件,我将前往 Amazon Elastic Kubernetes Service 控制台并选择集群 demo-newsblog。在详细信息中的 Fargate 配置文件下,选择添加 Fargate 配置文件



然后,我需要配置我的新 Fargate 配置文件。对于名称,输入 demo-default


在 Pod 执行角色中,只会显示具有 eks-fargate-pods.amazonaws.com 服务主体的 IAM 角色。eksctl 将创建名为 AmazonEKSFargatePodExecutionRole 的 IAM 角色,文档显示如何从头开始创建此角色。


子网部分中,我的集群 VPC 中的所有子网默认为全部选中。然而,由于 Fargate Pod 只支持私有子网,我取消选择了两个公共子网。



点击下一步,我将进入 Pod 选择器屏幕。在此处,系统要求我输入一个命名空间。我添加了默认,这表示我希望默认 Kubernetes 命名空间中创建的任何 Pod 都在 Fargate 上运行。重要的是要知道,我不必修改 Kubernetes 应用程序就能让 Pod 在 Fargate 上运行,我只需要一个 Fargate 配置文件 – 如果我的 Kubernetes 应用程序中的 POD 匹配我的配置文件中定义的命名空间,则该 Pod 将会在 Fargate 上运行。


这里还有一个匹配标签功能,但我没有使用这个功能。通过此功能,您可以指定您希望选择的 Pod 的标签,因此,您可以具体了解此配置文件上运行了哪些 Pod。



最后,点击下一步,然后点击创建。创建并使配置文件变为活跃状态需要一分钟时间。


在此演示中,我还希望一切都在 Fargate 上运行,包括属于 Kubernetes 一部分的 CoreDNS Pod。要使它们在 Fargate 上运行,我将为 kube-system 命名空间中的一切添加第二个 Fargate 配置文件。这一次,为了给演示增添一些变化,我将使用命令行创建配置文件。


从技术上来看,我不需要为此创建第二个配置文件。我可以在第一个配置文件中额外增加一个命名空间,但通过此方式,我开始探索创建配置文件的另一种方法。


首先,我创建下面的文件并将其另存为 demo-kube-system-profile.json


Json


{    "fargateProfileName": "demo-kube-system",    "clusterName": "demo-news-blog",    "podExecutionRoleArn": "arn:aws:iam::xxx:role/AmazonEKSFargatePodExecutionRole",    "subnets": [        "subnet-0968a124a4e4b0afe",        "subnet-0723bbe802a360eb9"    ],    "selectors": [        {            "namespace": "kube-system"        }    ]}
复制代码


然后,我导航至包含上述文件的文件夹,并在我的终端中运行 create-fargate-profile 命令。


Bash


aws eks create-fargate-profile --cli-input-json file://demo-kube-system-profile.json
复制代码



现在,我可以在我的集群中部署容器。为了保持简单,我使用下面的 **kubectl** 命令部署一个 **nginx** 实例。
Bash

复制代码


kubectl create deployment demo-app --image=nginx



然后,我通过运行 `get pods` 命令查看我的 Pod 状态。
Bash

复制代码


kubectl get pods


NAME READY STATUS RESTARTS AGE


demo-app-6dbfc49497-67dxk 0/1 Pending 0 13s



如果我运行 `get nodes`,将会有三个节点(两个为 coreDNS 的节点,一个为 nginx 的节点)。这些节点代表我为了运行 Pod 而实例化的计算资源。
Bash

复制代码


kubectl get nodes


NAME STATUS ROLES AGE VERSION


fargate-ip-192-168-218-51.eu-west-1.compute.internal Ready4m45s v1.14.8-eksfargate-ip-192-168-221-91.eu-west-1.compute.internal Ready2m20s v1.14.8-eksfargate-ip-192-168-243-74.eu-west-1.compute.internal Ready4m40s v1.14.8-eks



一段短暂的时间后,我重新运行 `get pods` 命令,我的 **demo-app** 现在处于**运行**状态。这表示,我的容器已成功部署到 [](https://amazonaws-china.com/fargate/) 中。
Bash

复制代码


kubectl get pods


NAME READY STATUS RESTARTS AGE


demo-app-6dbfc49497-67dxk 1/1 Running 0 3m52s



**定价和限制 **使用 [](https://amazonaws-china.com/fargate/ "AWS Fargate"),您只需为您的 Pod 运行所需要的 vCPU 和内存资源量付费。除了在 Pod 旁运行 Kubernetes 组件所需的少量内存外,这还包括 Pod 请求的资源。在 [](https://amazonaws-china.com/fargate/) 上运行的 Pod 遵照现有的定价模型。vCPU 和内存资源从拉取您的 Pod 容器镜像时计算到 Pod 终止时,四舍五入到最近的秒数。最低按 1 分钟收费。此外,您还需要为您运行的每个 EKS 集群支付每小时 0.20 USD 的标准费用。
现在,您应知道下面几点限制:
* 每个 Pod 最多有 4 个 vCPU 和 30Gb 内存。* 目前不支持需要持久卷或文件系统的有状态工作负载。* 您不能运行 Daemonset、Privileged Pod 或使用 HostNetwork 或 HostPort 的 Pod。* 您可以使用的唯一一个负载均衡器是 [](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html "alb")。
**立即开始使用 **如果您想要自己探索 [](https://amazonaws-china.com/fargate/ "AWS Fargate") 上的 Amazon EKS,您可以通过转至 [](https://console.aws.amazon.com/eks/home#/clusters.)在以下区域立即进行试用:美国东部(弗吉尼亚北部)、美国东部(俄亥俄)、欧洲(爱尔兰)和亚太地区(东京)。
从今天开始,我们可以开始使用 [](https://amazonaws-china.com/eks/) 在 [](https://amazonaws-china.com/fargate/ "AWS Fargate") 上运行 Kubernetes Pod。使用 Amazon EKS 和 [](https://amazonaws-china.com/fargate/) 将不需要为 Pod 预置和管理基础设施,因此可以在 AWS 上直接运行基于 Kubernetes 的应用程序。
使用 [](https://amazonaws-china.com/fargate/ "AWS Fargate"),客户不需要成为 Kubernetes 运营专家也能运行经成本优化的高可用性集群。借助 [](https://amazonaws-china.com/fargate/),客户不再需要为其 Amazon EKS 集群创建或管理 [](https://amazonaws-china.com/ec2/) 实例。
客户在云中运行 Kubernetes 应用程序时,不必担心 EC2 实例集群的补丁、扩展或安全问题。使用 [](https://amazonaws-china.com/fargate/),客户可以定义并为 Pod 级的资源付费。这样可以为每个应用程序轻松调整资源利用大小,并让客户清楚地看到每个 Pod 的成本。
下面,我将通过此博文的余下部分进一步探索这一新功能,并使用 [](https://amazonaws-china.com/fargate/) 上的 Amazon EKS 部署一个简单的基于 Kubernetes 的应用程序。
**我们来构建一个集群** 设置集群的最简单方法是使用 [](https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html),这是适用于 EKS 的官方 CLI 工具。下面的命令将创建一个名为 **demo-newsblog** 且不含工作节点的集群。
Bash

复制代码


eksctl create cluster --name demo-newsblog --region eu-west-1 --fargate



这个单一命令在后台进行了很多操作。它不仅为我创建了集群,除此之外,它还创建了一个 [](https://amazonaws-china.com/fargate/) 配置文件。
通过这个 [](https://amazonaws-china.com/fargate/) 配置文件,我可以指定我希望在 [](https://amazonaws-china.com/fargate/) 上运行的 Kubernetes Pod,我的 Pod 运行所在的子网,而且这个配置文件还提供了 Kubernetes 代理将容器镜像下载到 Pod 并代表我执行其他操作时所用的 IAM 执行角色。
了解 [](https://amazonaws-china.com/fargate/) 配置文件是了解此功能工作原理的关键。因此,我打算删除自动为我创建的 [](https://amazonaws-china.com/fargate/) 配置文件,并手动重新创建该配置文件。
要创建 **Fargate 配置文件,**我将前往 [](https://amazonaws-china.com/eks/) 控制台并选择集群 **demo-newsblog。**在详细信息中的 **Fargate 配置文件**下,选择**添加 Fargate 配置文件**。
![](https://d2908q01vomqb2.awsstatic-china.com/da4b9237bacccdf19c0760cab7aec4a8359010b0/2019/12/03/1-4_v2.jpg)
然后,我需要配置我的新 **Fargate 配置文件。对于**名称,输入 **demo-default**。
在 Pod 执行角色中,只会显示具有 **eks-fargate-pods.amazonaws.com** 服务主体的 IAM 角色。eksctl 将创建名为 **AmazonEKSFargatePodExecutionRole** 的 IAM 角色,[](https://docs.aws.amazon.com/eks/latest/userguide/pod-execution-role.html)显示如何从头开始创建此角色。
在**子网**部分中,我的集群 VPC 中的所有子网默认为全部选中。然而,由于 Fargate Pod 只支持私有子网,我取消选择了两个公共子网。
![](https://d2908q01vomqb2.awsstatic-china.com/da4b9237bacccdf19c0760cab7aec4a8359010b0/2019/11/29/2-4.jpg)
点击下一步,我将进入 **Pod 选择器**屏幕。在此处,系统要求我输入一个命名空间。我添加了**默认**,这表示我希望**默认** Kubernetes 命名空间中创建的任何 Pod 都在 [](https://amazonaws-china.com/fargate/) 上运行。重要的是要知道,我不必修改 Kubernetes 应用程序就能让 Pod 在 [](https://amazonaws-china.com/fargate/) 上运行,我只需要一个 [](https://amazonaws-china.com/fargate/) 配置文件 – 如果我的 Kubernetes 应用程序中的 POD 匹配我的配置文件中定义的命名空间,则该 Pod 将会在 [](https://amazonaws-china.com/fargate/) 上运行。
这里还有一个**匹配标签功能**,但我没有使用这个功能。通过此功能,您可以指定您希望选择的 Pod 的标签,因此,您可以具体了解此配置文件上运行了哪些 Pod。
![](https://d2908q01vomqb2.awsstatic-china.com/da4b9237bacccdf19c0760cab7aec4a8359010b0/2019/11/29/3-4.jpg)
最后,点击**下一步**,然后点击**创建**。创建并使配置文件变为活跃状态需要一分钟时间。
在此演示中,我还希望一切都在 [](https://amazonaws-china.com/fargate/) 上运行,包括属于 Kubernetes 一部分的 CoreDNS Pod。要使它们在 [](https://amazonaws-china.com/fargate/) 上运行,我将为 **kube-system** 命名空间中的一切添加第二个 [](https://amazonaws-china.com/fargate/) 配置文件。这一次,为了给演示增添一些变化,我将使用命令行创建配置文件。
从技术上来看,我不需要为此创建第二个配置文件。我可以在第一个配置文件中额外增加一个命名空间,但通过此方式,我开始探索创建配置文件的另一种方法。
首先,我创建下面的文件并将其另存为 `demo-kube-system-profile.json`。
Json

复制代码


{


“fargateProfileName”: “demo-kube-system”,


“clusterName”: “demo-news-blog”,


“podExecutionRoleArn”: “arn:aws:iam::xxx:role/AmazonEKSFargatePodExecutionRole”,


“subnets”: [


“subnet-0968a124a4e4b0afe”,


“subnet-0723bbe802a360eb9”


],


“selectors”: [


{


“namespace”: “kube-system”


}


]


}



然后,我导航至包含上述文件的文件夹,并在我的终端中运行 `create-fargate-profile` 命令。
Bash

复制代码


aws eks create-fargate-profile --cli-input-json file://demo-kube-system-profile.json



```
现在,我可以在我的集群中部署容器。为了保持简单,我使用下面的 **kubectl** 命令部署一个 **nginx** 实例。
Bash
```kubectl create deployment demo-app --image=nginx```
然后,我通过运行 `get pods` 命令查看我的 Pod 状态。
Bash
```kubectl get podsNAME READY STATUS RESTARTS AGEdemo-app-6dbfc49497-67dxk 0/1 Pending 0 13s```
如果我运行 `get nodes`,将会有三个节点(两个为 coreDNS 的节点,一个为 nginx 的节点)。这些节点代表我为了运行 Pod 而实例化的计算资源。
Bash
```kubectl get nodesNAME STATUS ROLES AGE VERSIONfargate-ip-192-168-218-51.eu-west-1.compute.internal Ready <none> 4m45s v1.14.8-eksfargate-ip-192-168-221-91.eu-west-1.compute.internal Ready <none> 2m20s v1.14.8-eksfargate-ip-192-168-243-74.eu-west-1.compute.internal Ready <none> 4m40s v1.14.8-eks```
一段短暂的时间后,我重新运行 `get pods` 命令,我的 **demo-app** 现在处于**运行**状态。这表示,我的容器已成功部署到 [](https://amazonaws-china.com/fargate/) 中。
Bash
```kubectl get podsNAME READY STATUS RESTARTS AGEdemo-app-6dbfc49497-67dxk 1/1 Running 0 3m52s```
**定价和限制 **使用 [](https://amazonaws-china.com/fargate/ "AWS Fargate"),您只需为您的 Pod 运行所需要的 vCPU 和内存资源量付费。除了在 Pod 旁运行 Kubernetes 组件所需的少量内存外,这还包括 Pod 请求的资源。在 [](https://amazonaws-china.com/fargate/) 上运行的 Pod 遵照现有的定价模型。vCPU 和内存资源从拉取您的 Pod 容器镜像时计算到 Pod 终止时,四舍五入到最近的秒数。最低按 1 分钟收费。此外,您还需要为您运行的每个 EKS 集群支付每小时 0.20 USD 的标准费用。
现在,您应知道下面几点限制:
* 每个 Pod 最多有 4 个 vCPU 和 30Gb 内存。* 目前不支持需要持久卷或文件系统的有状态工作负载。* 您不能运行 Daemonset、Privileged Pod 或使用 HostNetwork 或 HostPort 的 Pod。* 您可以使用的唯一一个负载均衡器是 [](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html "alb")。
**立即开始使用 **如果您想要自己探索 [](https://amazonaws-china.com/fargate/ "AWS Fargate") 上的 Amazon EKS,您可以通过转至 [](https://console.aws.amazon.com/eks/home#/clusters.)在以下区域立即进行试用:美国东部(弗吉尼亚北部)、美国东部(俄亥俄)、欧洲(爱尔兰)和亚太地区(东京)。
**本文转载自AWS技术博客。**
**原文链接:https://amazonaws-china.com/cn/blogs/china/amazon-eks-on-aws-fargate-now-generally-available/**
复制代码


2019-12-12 14:25857

评论

发布
暂无评论
发现更多内容

Java面试常问问题,图灵科技学院,十分钟带你看懂Netty如何实现C-S

Java 程序员 后端

Java项目视频百度云,vue做视频教程,dubbo面试题总结

Java 程序员 后端

Java面试常见笔试题,java基础入门传智播客图书,被逼无奈开始狂啃底层技术

Java 程序员 后端

Java面试java基础,java基础语法菜鸟教程,腾讯Java社招面试

Java 程序员 后端

Java面试常问问题,java入门电子书百度网盘,直接上干货

Java 程序员 后端

Java面试技巧和注意事项,java开发实例教程,阿里巴巴Java编程笔试题

Java 程序员 后端

Java面试秘籍,java调用百度地图接口,含面试题+答案

Java 程序员 后端

Java零基础自学书籍,尚硅谷spring视频,BAT大厂面试总结

Java 程序员 后端

Java面试问题及答案,java实用教程第五版课后答案,Java重要知识点

Java 程序员 后端

Java项目实战网盘资源分享,千锋java课程大纲,含小米、腾讯、阿里

Java 程序员 后端

Java面试必备的集合源码详解,小白勿进

Java 程序员 后端

Java面试带答案,合买咕泡学院vip,全面展示线程内存模型的能力

Java 程序员 后端

Java面试问题大全及答案大全下载,java高级教程百度云,已有千人收藏

Java 程序员 后端

Java面试题大全,尚硅谷dubbo下载,面试经历分享

Java 程序员 后端

Java项目视频百度云盘,java视频百度云盘,【一步教学,一步到位】

Java 程序员 后端

Java面试回忆录,任小龙java笔记百度云,Java社招面经分享

Java 程序员 后端

Java面试题总结及答案,牛客网竞赛中复制别人的答案,Java工程师面试题

Java 程序员 后端

Java高级工程师进阶学习,2021Java高频精选面试题讲解

Java 程序员 后端

Java面试官,springboot教程百度云,Java编程教程视频

Java 程序员 后端

Java面试知识点总结,mongodb权威指南pdf网盘,SpringBoot

Java 程序员 后端

Java面试题集2021版,2万字20个项目实例

Java 程序员 后端

Java项目视频,千锋java百度云,附赠课程+题库

Java 程序员 后端

Java高级工程师面试题目,尚硅谷kafka文档,和腾讯大牛的技术面谈

Java 程序员 后端

Java面试基础知识点,mysql编程入门教程,Java知识总结

Java 程序员 后端

Java面试题jvm调优,牛客刷题指南,Java面试题

Java 程序员 后端

Java高级工程师必看系列,Java程序员面试常问的问题

Java 程序员 后端

Java面试视频教学,java视频黑马,linux运维视频教程全集

Java 程序员 后端

Java面试知识点总结宝典助你通关,Java校招笔试面试题目

Java 程序员 后端

Java高级互联网架构师,java韩顺平最新教程,程序人生

Java 程序员 后端

Java高级工程师每日面试题精选,最新大厂Java校招面试经验汇总

Java 程序员 后端

Java面试手写算法,极客时间数据结构算法地图,Java岗面试12家大厂成功跳槽

Java 程序员 后端

AWS Fargate 上的 Amazon EKS 现已全面推出_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章