在ECS容器服务上使用EFS文件服务提供持久化存储

一、背景

EFS文件系统可以提供可靠的、持续的文件系统给多种服务,这其中也包括ECS容器服务。在容器场景上使用EFS的主要优势是可以简化管理,借助托管服务快速部署无须复杂运维,让ECS容器镜像的构建只需要关心应用程序本身,不需要将配置文件、数据文件打包到容器中。由此可实现容器的运行时和数据的分离。ECS Fargate和Fargate Spot都支持使用EFS文件系统,其中在Fargate Spot服务上搭配EFS,更可以借助EFS的持久化,避免Spot中断时候的数据持久保存问题。

Continue reading “在ECS容器服务上使用EFS文件服务提供持久化存储”

在ECS Fargate使用Session Manager登录到容器内的SSH进程

一、背景

之前介绍过使用System Manager套件中的Session Manager免密钥登录EC2,可参考这篇文章。针对ECS容器服务,因为开发、调试和运维的需要,也希望能登录到容器内部的shell上进行操作。此场景可使用ECS服务的exec功能在容器上执行shell命令的功能。

本文档适用于ECS Fargate和ECS Fargate spot,并在中国区测试通过。

Continue reading “在ECS Fargate使用Session Manager登录到容器内的SSH进程”

实验九、为私有NLB使用指定的、固定的内网IP地址

EKS动手实验合集请参考这里

EKS 1.30 版本 @2024-07 AWS Global区域测试通过

一、背景

在一些情况下,EKS部署的服务需要使用私有的NLB方式对VPC内的其他应用暴露服务,但是又不需要暴露在互联网上。这些场景可能包括:

Continue reading “实验九、为私有NLB使用指定的、固定的内网IP地址”

查询EKS创建的NLB所使用的IP地址

一、背景

AWS Elastic Load Balancer(简称ELB)有Application Load Balancer(简称ALB)和Network Load Balancer(简称NLB)两种。其中NLB是四层负债均衡器,常用于TCP/UDP协议的转发。又因为NLB支持使用固定的EIP或者内网IP作为流量入口,所以在特定场景下也会使用NLB转发HTTP和HTTPS流量。

NLB有两种类型,别分是Internet-facing和Internal NLB。前者用于直接对外提供互联网入口,对内连接到VPC内的内网资源;后者用于完全在VPC内的场景,其流量入口和目标组(Target Group)都是内网资源。

本文介绍如何查询NLB使用的IP地址。

Continue reading “查询EKS创建的NLB所使用的IP地址”

实验八、为VPC扩展IP地址并配置EKS Pod使用独立的IP地址段

EKS动手实验合集请参考这里

EKS 1.30 版本 @2024-07 AWS Global区域测试通过

一、背景及网络场景选择

1、关于EKS的默认CNI

AWS EKS默认使用AWS VPC CNI(了解更多点这里),所有的Pod都将自动获得一个本VPC内的IP地址,从外部网络看Pod,它们的表现就如同一个普通EC2。这是AWS EKS默认的网络模式,也是强烈推荐的使用模式。

Continue reading “实验八、为VPC扩展IP地址并配置EKS Pod使用独立的IP地址段”

实验六、将IAM用户或角色授权为EKS集群管理员

EKS动手实验合集请参考这里

EKS 1.30 版本 @2024-07 AWS Global区域测试通过

使用EKS服务过程中,经常出现创建EKS集群和管理EKS集群的不是一个人。由此会导致在AWS控制台上显示EKS服务不正常,无法获取有关配置。在AWS控制台上访问EKS服务时候,会提示错误信息如下:

Your current IAM principal doesn’t have access to Kubernetes objects on this cluster.
This might be due to the current IAM principal not having an access entry with permissions to access the cluster.
Continue reading “实验六、将IAM用户或角色授权为EKS集群管理员”

EKS 101 动手实验(五)使用私有子网创建EKS

EKS动手实验合集请参考这里

一、背景

在EKS教程和实验手册中,使用eksctl工具创建集群可以在几分钟内配置好一个EKS集群。但是默认情况下,eksctl将会通过Cloudformation创建一个全新的VPC,使用192.168.0.0/16的子网掩码,且Nodegroup位于Public Subnet公有子网。Nodegroup和pod并未能落在现有VPC内,也未能使用Private Subnet。这样很可能不符合架构要求。

因此,在这种场景下,可在使用eksctl创建集群时候,增加参数使用EKS的Nodegroup创建在某几个私有子网。

二、操作方法

本文的内容已经在EKS 101 动手实验(一)创建EKS集群的章节三中第2个小标题做了介绍,因此这里不再赘述。请跳转阅读。

EKS 101 动手实验(四)在ARM架构上构建应用并使用ALB Ingress部署应用

EKS动手实验合集请参考这里

EKS 1.30 版本 @2024-07 AWS Global区域测试通过

一、关于多架构支持

前文的实验中,分别创建了两个Nodegroup,一个Nodegroup是使用X8664架构Intel处理器的t3.xlarge(或m5.xlarge/m6i.xlarge)机型,另一个Nodegroup是使用Graviton处理器的ARM机型t4g.xlarge或m6g.xlarge。由于ARM架构的容器景象和X8664架构的容器镜像并不通用,因此本文会重新构建一个ARM版本的image,并上传到ECR镜像仓库中,再部署到节点组。

注意,如果您希望将一个应用同时运行在两种架构的节点上,则需要对同一个应用作两种架构的编译和构建。可参考本文配置。

Continue reading “EKS 101 动手实验(四)在ARM架构上构建应用并使用ALB Ingress部署应用”

EKS 101 动手实验(三)启用CloudWatch Container Insight、新建Nodegroup节点组以及调整节点组机型配置

EKS动手实验合集请参考这里

一、启用CloudWatch Container Insight

2023年11月之后发布的新版CloudWatch Container Insight支持对EKS的EC2节点采集多种运行参数用于监控和诊断,建议在2023年11月之前安装的旧版本升级到新版本。升级方法见本文末尾的参考文档。

以往的CloudWatch Container Insight部署需要手工拉起FluentBit的部署和服务,如今可通过EKS Addon功能直接安装,大大简化了部署。本文将讲解EKS Addon方式安装。如果需要参考以前的FluentBit部署方式,请见本文末尾的参考文档。

Continue reading “EKS 101 动手实验(三)启用CloudWatch Container Insight、新建Nodegroup节点组以及调整节点组机型配置”

EKS 101 动手实验(二)部署AWS Load Balancer Controller

EKS动手实验合集请参考这里

EKS 1.30 版本 @2024-07 AWS Global区域测试通过

一、部署AWS Load Balancer Controller

1、为EKS生成IAM的OIDC授权

执行如下命令。请注意替换集群名称和区域为实际操作的环境。

eksctl utils associate-iam-oidc-provider --region ap-southeast-1 --cluster eksworkshop --approve
Continue reading “EKS 101 动手实验(二)部署AWS Load Balancer Controller”

使用为ECS Fargate使用Spot实例

一、背景

ECS Fargate极大的简化了集群的管理,通过提供无服务器方式的容器,用户可专心关注在应用本身,而无需花费过多时间精力去管理容器运行所在的EC2。使用Fargate虽然简化运维但成本相对EC2的手工管理方式成本较高,因此针对互联网方式的无状态应用,可使用Spot实例来大幅降低成本。如果应用程序本身是传统的有状态方式,或者需要维护长链接的额,那么还应该继续使用普通Fargate方式而不是Spot实例。

此外,ECS Fargate Spot模式不支持与CodeDeploy集成,因此不能直接使用CodeDeploy做蓝绿发布,由此需要用户自行管理发布流水线来发布多版本,并自行做调度和切换。因此如果是计划直接采用CodeDeploy,那么Fargate Spot也是不适用的。

下面开始实验。

Continue reading “使用为ECS Fargate使用Spot实例”