本文介绍了如何从专线或VPN内网通过ECR Endpoint向ECR上传镜像。
Continue reading “从专线或VPN内网通过ECR Endpoint向ECR上传镜像”Category: Container
EKS, ECS, Docker, and etc.
EKS使用预加载机制加速EC2 Nodegroup上大镜像的启动速度
EKS动手实验合集请参考这里。
目录
- 一、背景
- 二、测试环境准备
- 三、应用Yaml是否打开缓存开关的对比
- 四、使用EventBridge构建预加载
- 五、验证预缓存机制生效
- 六、参考文档
一、背景
在机器学习等场景下,需要在EKS上运行较大体积的Pod,其Image体积可能达到数个GB。此时在第一次启动Pod时候,会遇到所谓的冷启动问题,也就是EC2 Nodegroup需要从ECR容器镜像仓库去拉取较大尺寸的镜像,然后才能启动Pod。后续启动相同镜像即可利用缓存无须重复下载。此时,可以使用本文介绍的方法优化冷启动时间长。
Continue reading “EKS使用预加载机制加速EC2 Nodegroup上大镜像的启动速度”使用Kubecost管理EKS成本
EKS动手实验合集请参考这里。
一、简介
Kubecost是基于OpenCost的云原生的成本管理工具。在不使用Kubecost情况下,管理EKS的cost一般是基于预留实例的EC2 Node,并人为划分服务资源进行分割,某些情况下还需要搭配Cost and Usage Reports(CUR)详单。
使用Kubecost,可以在相对直观的看到各Deployment/Service对应的相应费用,并根据服务的运行时长显示对应成本。Kubecost免费版可通过Helm在EKS上快速部署。如果需要更多功能,还需要使用商业版的Kubecost。本文介绍如何部署免费版的Kubecost。
Continue reading “使用Kubecost管理EKS成本”使用EKS Fargate创建无服务器容器服务
EKS动手实验合集请参考这里。
本文介绍如何使用EKS Fargate服务创建混合集群,分别在EC2 Nodegroup和Fargate上运行应用程序。
Continue reading “使用EKS Fargate创建无服务器容器服务”测试EKS服务上Pod使用VPC CNI对网络吞吐性能的影响
EKS动手实验合集请参考这里。
一、背景
在EC2的网络优化机型上,例如c6in.8xlarge(32vCPU/64GB),其网络带宽达到50Gbps。在没有容器环境下,使用iperf2测试,其带宽可以49.7Gbps的吞吐,相当于标称值的99.4%,考虑统计差异,这个速度可认为几乎没有损耗。测试过程和方法参考这篇博客。
那么当场景来到EKS上,Pod的所有流量都是通过Node节点上的VPC CNI进行转发,此时压力测试的其中一端是非容器化的EC2,另一端是Pod容器,会发生什么情况?
Continue reading “测试EKS服务上Pod使用VPC CNI对网络吞吐性能的影响”使用EKS控制台的Addon功能升级EKS VPC CNI
将EC2手工加入EKS集群成为托管节点
EKS动手实验合集请参考这里。
一、背景
1、EKS服务使用EC2的两种模式
EKS服务使用EC2的两种模式
- 使用EKS自动生成的托管节点组:在EKS服务控制台或者通过eksctl命令完成,EKS会自动使用最新镜像,全自动创建,并使用Autoscaling缩放;如果是通过eksctl脚本,还会自动创建合适的IAM角色;这时候EC2会在托管节点组内。
- 使用EKS提供的AMI以托管节点方式自行加入集群:使用EKS官方提供的基础镜像,手工创建一个EC2,并手工配置IAM角色,然后使用bootstrap.sh脚本,将本EC2加入EKS集群;这时候EC2会成为托管节点,但不会进入上一步的托管节点组。
以上两种方式,都是EKS托管节点,意味着EKS可有效进行版本升级等管理。不过不在节点组中的EC2不能参与缩放,当节点不够用时候,需要手工拉起新的节点。
本文介绍第二种方式的使用。
Continue reading “将EC2手工加入EKS集群成为托管节点”收集EKS Node节点日志用于Support排查
EKS动手实验合集请参考这里。
一、背景
当遇到EKS问题时候,可能需要创建Support Case并与Support一起排查问题。此时需要采集EKS运行环境的日志,主要是Node节点的日志。此时可使用EKS log collector脚本采集日志。
Continue reading “收集EKS Node节点日志用于Support排查”在没有外部网络权限的内部子网使用EKS服务时需要额外配置的VPC Endpoint
EKS动手实验合集请参考这里。
本文介绍如何在没有外部网络连接的内部子网使用EKS服务。
Continue reading “在没有外部网络权限的内部子网使用EKS服务时需要额外配置的VPC Endpoint”复制ECR上的镜像并指定新的Tag标签
一、背景
ECR上的镜像仓库有个选项叫做Tag immutability
,可以要求指定唯一的标签,以避免版本冲突。有时候需要对当前镜像新生成一个新的标签做测试,且生成新的标签的过程不希望下载、构建、打包、上传等过程,只是希望复制一份,重新生成一个标签。此时可以用本文的方法操作。
EKS 101动手实验(十二)使用Karpenter+HPA实现EKS集群扩展
EKS 1.27版本 & Karpenter 0.29版本 @2023-07 AWS Global区域测试通过
EKS动手实验合集请参考这里。
注:本实验操作难度稍高,需要时间约2小时,请事先完成之前的所有基础实验,包括集群创建、管理、容器构建、NLB等主题后,再开始本实验。
一、背景
EKS的扩容有两种方式:
- 1、单个应用的Deployment的replica扩容,Pod数量增加,Node不变
- 2、Node节点的扩容,Node增加,Pod不变
实验十一、为NodeGroup使用EC2 Spot实例
EKS动手实验合集请参考这里。
EKS 1.27版本 @2023-07 AWS Global区域测试通过
一、规划使用Spot实例
1、使用Spot类型的优势
EC2 Spot是云端当前Region和AZ内闲置的计算资源对外低价提供短期用途的一种商务模式。成本测算如下:
Continue reading “实验十一、为NodeGroup使用EC2 Spot实例”升级EKS托管节点组的AMI到最新版镜像
EKS节点EC2推荐采用Managed Node托管节点组,其使用的操作系统AMI清单参考这里:
https://docs.aws.amazon.com/zh_cn/eks/latest/userguide/eks-linux-ami-versions.html
由于操作系统需要定期升级更新,因此对EKS节点升级可通过刷新Node Group对应的AMI来进行版本升级。
Continue reading “升级EKS托管节点组的AMI到最新版镜像”ECS服务相关汇总
注:本文这套操作文档是按照2022年的AWS ESC容器服务的Console体验编写,2023年新的ECS Console已经推出。截图和文字有待更新。
容器基础1:构建Apache+PHP镜像DockerFile (更新了Amazon Linux 2023模版)
容器基础2:构建容器镜像并上传到ECR (更新了AWSCLI的ECR认证)
容器基础3:复制ECR上的镜像并指定新的Tag标签
ECS 201 Workshop(一)准备工作:配置IAM和任务定义
ECS 201 Workshop(二)发布ECS服务
ECS 201 Workshop(三)弹性扩展
ECS 201 Workshop(四)通过CodeDeploy实现蓝绿发布
ECS 201 Workshop(五)使用CLI发起CodeDeploy部署新的ECS版本
构建基于 Amazon Linux 2/2023系统的Apache2+PHP 7.4/8 环境的容器Dockerfile文件
2024-07 更新了Amazon Linux 2023操作系统Apache+PHP8的模版
一、背景
1、启动脚本问题
构建容器用于AWS ECS服务和AWS EKS服务的时候,由于容器服务的启动endpoint只能是唯一的启动进程,而且必须处于前台,因此会面临无法同时启动php-fpm和httpd的问题。为了解决这个问题,可增加一个启动服务脚本,然后让容器调用这个单一脚本。
Continue reading “构建基于 Amazon Linux 2/2023系统的Apache2+PHP 7.4/8 环境的容器Dockerfile文件”