【转载】利用Amazon ECR和ECS部署容器应用
众所周知现在容器的技术越来越火,很多企业已经将整个业务架构容器化,利用容器的灵活性、可移植性、轻量等优势为企业开发和运维带来很大的优势,目前整个容器编排服务中最吃香的当然是Kubernetes (简称K8S),亚马逊发现60%以上的k8s用户都跑在AWS云上,所以去年AWS推出了名为EKS (Elastic Container Service for kubernetes)的托管K8s集群服务,那当然除了K8s还有很多容器编排服务比如 Mesos、Swarm、Amazon ECS等等,今天想和大家分享的是AWS自己的容器编排服务ECS(Elastic Container Service)
Amazon ECS是一种高度可扩展的高性能容器编排服务,支持 Docker 容器,让您可以在 AWS 上轻松运行和扩展容器化应用程序使用 Amazon ECS,您不需要安装和操作自己的容器编排软件,不需要管理和扩展虚拟机集群,也不需要在这些虚拟机上调度容器。
通过各种简单的 API 调用,您可以启动和停止支持 Docker 的应用程序、查询应用程序的完整状态,并使用 IAM 角色、安全组、负载均衡器、Amazon CloudWatch Events、AWS CloudFormation 模板和 AWS CloudTrail 日志等多种常用功能。
而Amazon ECR (Elastic Container Registry) 是AWS 上提供的一个托管的容器镜像仓库服务,它和ECS做集成简化了我们开发运维的工作流程,也不需要我们自己去维护和管理镜像仓库,接下来我们简单来看下ECR和ECS的使用。
ECR 镜像仓库的使用:
首先我们来创建属于自己的容器镜像仓库ECR,打开我们的AWS Console,在服务列表中选择ECR服务,选择 “创建存储库”
就这么简单你就可以创建属于自己的容器镜像仓库
接着选中刚刚所创建的镜像仓库,点击查看“推送命令”,你会看到相关的docker 命令,如果用过docker的童鞋肯定比较熟悉,同样的方法需要我们login一下,然后打tag指向我么刚刚创建的镜像仓库, 然后push。当然前提是你已经安装好了AWS CLI 并且登录了相关凭证,如果你还没有AWS CLI 可以参考这里(AWS CLI 安装)
那么接下来我们试着向我们刚刚创建的ECR仓库推送镜像
Get-login 我们的仓库,显示“Login Succeeded”
我们可以通过AWS CLI来查看我们的仓库信息
目前仓库里没有任何镜像
接下来我们试着推送一个镜像到仓库,这里我本地已经有了一个Jenkins的容器镜像,我们试着将他推送到仓库,待会正好用它来部署我们的ECS。
回到我们ECR Console 里查看,当然也可以通过刚刚我们的CLI命令来查看
做到这里,我们已经可以向自己的镜像仓库中推送容器镜像了,接下来我们用刚刚推送的Jenkins镜像快速简单通过ECS进行部署。
ECS的简单部署:
在服务列表里选择ECS服务,首先我们要先创建我们的“集群”,因为容器是基于操作系统的的虚拟化,所以它还是需要运行在我们的实例上,而ECS就是在实例上安装了相应的Agent,你也可以将现有的实例注册到集群当中来,这里我们新创建一个集群并选择一台较小的实例来演示
启动的时候你可以看到两个运行选项,这里我们选择Linux,而国外还有一个选项Fargate。Fargate是一个不需要管理服务器或群集即可运行容器的无服务器服务,有兴趣的可以看下官方关于Fargate的介绍, 国内目前还不支持,这里就先不给大家演示了。
这里需要配置我们“集群名称” 还有实例类型以及VPC等等一些信息,我们选择一个实例(t2.micro),集群数量选择“1” , 实例启动除了一个根卷以外还需要一个存储容器数据的EBS卷,。 然后配置安全组、密钥(用来登录容器实例)、VPC 等信息,然后点击“创建”
稍等几秒就可以看到集群启动成功
查看集群选择“ECS实例”,你会看到已经有一个实例运行,你也可以通过EC2 服务Console看到正在运行的一台实例
这样我们的容器集群就运行起来了(虽然只有一台实例~~~),接下来我们需要部署我们的容器上去,需要我们创建一个 Task Difinition (任务定义),如果之前用过Docker 的肯定知道Dockerfile, 任务定义就相当于Dockerfile,你可以通过console创建,也可以通过JSON格式的文本来定义,
选择“任务定义” 创建新的任务定义
这里需要注意的是网络模式,默认以Bridge模式,,不同的网络模式定义了你访问容器的方式,可以参考这里,我们选择 “默认”。
接下来需要配置我们的容器信息,点击“添加容器”:
这里将配置我们运行容器的一些参数(相当于通过鼠标写一个JSON文本),而容器镜像我们选择我们自己ECR仓库中推送的镜像,然后配置容器内存及端口映射,点击“添加”。
我们可以点击‘JSON配置’ 来看下json格式下我们刚刚配置的信息,所以你也可以通过json格式来配置
点击“创建”,这样我们的任务就创建好了,接下来需要把它运行起来。
点击我们刚刚创建的任务,在“操作”中选择“运行任务”,选择运行任务的集群及任务数(这里我们只有一台实例所以选择一个任务数演示),关于容器置放策略可以参考这里
我们可以运行成功后你就可以看到状态已经是“RUNNING”,这时候我们的jenkins容器已经运行了起来,
最后我们需要创建一个“服务“,用来定义容器的副本数保持副本数量以及和ELB负载均衡器访问我们的容器,包括Autoscaling 。
点击“创建“,
添加ELB到集群,这里我已经提前创建好了ELB,选择添加到ELB
这里需要设置一个评估顺序,用来定义规则的优先级
最后通过ELB的DNS域名我们来访问我们的Jenkins服务。
做到这里我们已经成功的在AWS 上通过ECR/ECS服务部署了属于我们自己的Jenkins 容器服务!
Amazon ECS是AWS 自己的容器编排服务,它很好的和AWS其他服务进行了集成,而如果企业当中目前没有使用过容器编排服务,你可以尝试使用AWS 的ECS服务,相反,如果你已经使用了其他容器编排服务,例如K8s,你可以选择使用Amazon EKS,因为它是完全兼容k8s。
————————————————
原文链接:https://blog.csdn.net/SinnetCloud/article/details/100231237
遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
【转载】利用Amazon ECR和ECS部署容器应用的更多相关文章
- Azure Terraform(七)利用Azure DevOps 实现自动化部署基础资源(补充)
一,引言 之前一篇文章有讲解到利用 利用Azure DevOps 实现自动化部署基础资源,当时 TF 代码没有针对 Azure 各个资源的封装,所有的资源代码全部写在一个 main.tf 文件中.然后 ...
- 阿里云服务器 ECS 部署lamp:centos+apache+mysql+php安装配置方法 (centos7)
阿里云服务器 ECS 部署lamp:centos+apache+mysql+php安装配置方法 (centos7) 1.效果图 1 2. 部署步骤 1 1. mysql安装附加(centos7) 7 ...
- 利用Helm简化Kubernetes应用部署(1)
目录 利用Helm简化Kubernetes应用部署 Helm基础 安装Helm 使用Visual Studio 2019为Helm编写一个简单的应用 利用Helm简化Kubernetes应 ...
- 利用Helm简化Kubernetes应用部署(2)
目录 定义Charts 使用Helm部署Demo Helm常用操作命令 定义Charts 回到之前的“charts”目录,我们依次进行解读并进行简单的修改. Chart.yaml 配置示例: a ...
- Azure Terraform(五)利用Azure DevOps 实现自动化部署基础资源
一,引言 上一篇我们结合学习 Azure Traffic Manger 的内容,做了一个负载均衡的基础设施架构.通过 Terraform 部署执行计划,将整个 Azure Traffic Manage ...
- 用阿里云ecs部署kubernetes/K8S的坑(VIP、slb、flannel、gw模式)
1 阿里云ecs不支持keepalived vip 1.1 场景描述 本来计划用keepalived配合nginx做VIP漂移,用以反代多台master的apiserver的6443端口,结果部署了v ...
- Windows 2003】利用域&&组策略自动部署软件
Windows 2003]利用域&&组策略自动部署软件 转自 http://hi.baidu.com/qu6zhi/item/4c0fa100dc768613cc34ead0 ==== ...
- 利用Ambari平台安装与部署Hadoop
* 本篇是利用Ambari平台安装与部署Hadoop,如果需要原生部署Hadoop,请点击以下地址: https://www.cnblogs.com/live41/p/15467263.html 一. ...
- 云服务器ECS部署和卸载RabbitMQ
云服务器ECS部署RabbitMQ RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件,用于在分布式系统中存储转发消息,有良好的易用性.扩展性和高可用性.本文介绍如何通过ECS实例 ...
随机推荐
- 定时器 延时调用setTimeout
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 使用jQuery快速高效制作网页交互特效----jQuery中的事件与动画
jQuery中的事件 和WinForm一样,在网页中的交互也是需要事件来实现的,例如tab切换效果,可以通过鼠标单击事件来实现. 事件在元素对象与功能代码中起着重要的桥梁作用. 在JQuery中,事件 ...
- 008——MATLAB-xlswrite的使用方法
(一)参考文献:https://blog.csdn.net/liangjiubujiu/article/details/80455753 以矩阵A=[1 2 3 4;5 6 7 8]为例进行介绍 例1 ...
- Laravel 项目架构 弹性、可维护性
公司项目可能需要对架构进行重建,老大给了我一个视频让我学习里面的思想,看完后觉得收获很大,主讲人对laravel项目各个层次有很清晰的理解,力求做到职责单一分明,提高可维护性.下面是我看完视频对其内容 ...
- 六十一.常用组件 、 Kafka集群 、 Hadoop高可用
1.Zookeeper安装搭建Zookeeper集群并查看各服务器的角色停止Leader并查看各服务器的角色 1.1 安装Zookeeper1)编辑/etc/hosts ,所有集群主机可以相互 pin ...
- 三十六.MHA集群概述 、 部署MHA集群 测试配置
1.准备MHA集群环境 准备6台虚拟机,并按照本节规划配置好IP参数 在这些虚拟机之间实现SSH免密登录 在相应节点上安装好MHA相关的软件包 使用6台RHEL 7虚拟机,如图-1所示.准备集群环 ...
- xml介绍+xml创建+xml读取
1.xml介绍:(URL:https://blog.csdn.net/weixin_37861326/article/details/81082144) xml是用来传输内容的,是w3c推荐的 2.使 ...
- 差分约束 【bzoj2330】[SCOI2011]糖果
/*[bzoj2330][SCOI2011]糖果 2014年3月5日1,2761 Description 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖 ...
- Django系列(一):前期准备
1.web应用 Web应用程序是一种可以通过web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件.应用程序有两种模式C/S.B/S.C/S是客户端 ...
- git命令如何删除文件或文件夹
拉取远程仓到本地 git clone ×× cd ××× 查看分支 git branch -a 切换到想要操作的分支 git checkout 想要操作的分支 在本地仓库删除文件 git rm 我的文 ...