阿里云容器服务-用户指南-D_第1页
阿里云容器服务-用户指南-D_第2页
阿里云容器服务-用户指南-D_第3页
阿里云容器服务-用户指南-D_第4页
阿里云容器服务-用户指南-D_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、容器服务用户指南容器服务/用户指南容器服务/用户指南 PAGE 75 PAGE 75用户指南用户使用流程用户使用流程完整的使用容器服务需要通过4个步骤完成:第一步:创建集群,选择集群的网络环境,设置集群的节点个数和配置信息第二步:选择镜像或编排模板(如果用户的应用由多个镜像组成,可以选择一个编排模板)第三步:创建应用并部署第四步:查看部署后应用的状态和相应的服务、容器信息基本概念和术语表集群:一个集群指容器运行所需要的云资源组合,关联了若干服务器节点、负载均衡、专有网络等云资源.节点:一台服务器,需要安装容器服务的Agent程序并注册到一个集群上.容器:一个通过Docker镜像部署的实例,一个

2、节点可运行多个容器.镜像Registry地址+镜像Repo名称+镜像Tag名称)唯一 确认.编排模板Docker Compose模板,描述了多个镜像的连接关系,用于部署应用.应用:一个应用可通过单个镜像或一个编排模板创建.每个应用可包含1个或多个服务.服务:一组运行相同镜像相同配置的容器,作为一个可伸缩的微服务.关联关系:集群管理集群介绍一个集群(Cluster)指容器运行所需要的云资源组合,关联了若干云服务器节点、负载均衡等云资源。集群创建有多种方式可以创建一个集群:1.创建一个的集群,并同时创建若干云服务器可以通过容器服务直接创建一个包含若干新云服务器的集群。详见:创建集群通过此方式创建的

3、云服务器皆为按量付费,如需要包年包月的云服务器,可以单独购买再通过接下来的方案2操作。2.创建一个零节点的集群,添加已有的云服务器创建一个零节点的集群如果已经在云服务器ECS购买了若干云服务器,可以在容器服务创建一个零节点的集群。操作方式同方式一,只需要设置实例数量为0。添加已有的云服务器重置云服务器的镜像,自动加入集群此种方式会重置云服务器的镜像和系统盘,需要谨慎。但是这种方式加入的服务器比较干净。在云服务器上执行脚本,手动加入集群此种方式适合于不希望重置云服务器的镜像。详见:添加已有云服务器集群管理支持集群扩容、删除、清理、连接等操作。创建集群限制说明目前SLB只支持按流量付费的方式,后续

4、将提供更多选择目前可以选择北京、杭州、深圳的地域,后续会支持更多的地域.用户账户需有100元的余额并通过实名认证,否则无法创建按量付费的ECS与SLB可以在创建集群的时候同时指定云服务器的配置和个数。也可以创建一个零节点的集群,之后再绑定其他云服务 器。操作流程在左侧导航的集群页,点击右上角的创建集群后,跳转到下面的页面设置集群的名称和地域可以设置一个名称用于标示集群.名称要求在同一个用户和同一个地域下唯一. 可以根据用户的服务器分布情况,选择不同的地域和可用区.设置云服务器的重要信息目前支持的操作系统包括Ubuntu 14.04 64位和CentOS 7.0 64位。目前创建集群会默创建一个

5、负载均衡SLB,用户可以通过这个SLB访问集群内的容器应用。 通过容器服务创建的云服务器为按量计费。设置云服务器的网络可以选择集群归属的不同网络类型:经典网络或专有网络VPC.相应的云服务器等云资源会在相应的网络环境下管 理。选择经典网络不需要额外配置经典网络是相对于专有网络VPC的说法,是由阿里云统一规划的公共基础网络,经典网络的网络地址和网络拓扑由 阿里云分配,用户无需特殊配置即可使用。也是阿里云的默认网络环境。选择专有网络需要配置相关信息专有网络VPC支持用户基于阿里云构建一个隔离的网络环境,用户可以完全掌控自己的虚拟网络,包括自由IP地址 范围、划分网段、配置路由表和网关等。专有网络需

6、要用户指定一个VPC、一个VSwitchId和容器的起始网段(Docker容器所属的子网网段,为了便于 IP管理,每个虚拟机的容器属于不同网段,容器容器子网网段不能和虚拟机网段冲突)。建议:防止网络冲突等问题,最好为容器集群建立属于自己的VPC/VSwitchId容器服务会默认给每一个专有网络下的云服务器配置一个EIP。如果不需要可以勾选复选框,但是需要额外配置SNAT网关。设置云服务器的实例规格用户可选择不同的实例规格和数量,并指定数据盘的容量(云服务器默认带有20G大小的系统盘)和登录密码. 注:如果选择了数据盘,它会被挂载到/var/lib/docker目录,用于Docker镜像和容器的

7、存储。从性能和管理考虑,通常我们建议用户在宿主机挂载独立的数据盘,并利用Docker的volume对容器 的持久化数据进行管理。点击创建集群集群创建成功后.如果需要单独配置云服务器或负载均衡,可以去相应的控制台操作.查看集群创建日志在集群列表页点击查看日志,查看集群创建的过程日志.添加已有云服务器可以将已购买的云服务器添加到指定集群(需要云服务器和集群保持相同地域和网络类型)。如果之前没有创 建过集群,可以先创建一个零节点的集群。操作流程1.在集群列表页面,选择一个集群点击更多操作下的添加已有实例2.进入添加云服务器的管理页面一种是自动添加,即重置镜像和系统盘的方式;一种是手动添加,需要在云服

8、务器上执行脚本;上图列出的的实例列表,是根据集群所定义的区域和网络类型,从用户所有云服务器列表筛选后同步过来。3.自动添加可以批量选取多台实例,并点击下一步.进入填写实例信息填写完密码,点击下一步,会弹出确认页面确认后,即显示提交操作成功!点击完成,即可查看集群的状态可以点击查看日志,直到集群状态到运行中。4.手动添加选择手动添加的单选框,并挑选一台云服务器,每次只可以选一台。点击下一步,进入填写实例信息页面点击下一步,获得专属这台云服务器的脚本命令。通过终端登录,并复制上图的命令并执行:等待脚本执行成功,显示success。该云服务器即添加成功。删除集群操作流程1)在集群列表页面,选择要删除

9、的集群,点击删除按钮.2)在弹出的对话框里,点击确认按钮.删除集群时,会将关联的云服务器和负载均衡等云资源一起删除.请谨慎操作.搜索集群操作流程1) 在集群列表页面,输入要搜索的集群名称,点击搜索按钮.搜索规则为:大小写不敏感,只要集群名称包含搜索的内容即可.集群扩容操作流程1)在集群列表页面,选择一个集群,点击更多操作下的添加节点链接.2)在弹出的对话框里,设置新节点的规格。可以选择增加服务器节点的个数和相应的规格:更新集群的Agent集群内的每一台服务器,都会安装容器服务的Agent,用于接收容器服务控制系统的指令下放。 容器服务会定期的增加新的功能,如果用户需要最新的功能,可以选择更新集

10、群的Agent。操作流程1)在集群列表页面,选择要更新Agent的集群,点击升级Agent按钮。2)在弹出的对话框里,点击确认按钮。更新集群的Docker Daemon集群内的每一台服务器,都会安装标准的Docker Daemon,用于管理容器.操作流程在容器服务控制台主界面选择左侧边栏的集群,选择你要升级共享服务的集群,在你选中的集群表项 右侧,选择更多操作,点击选择下拉列表的升级Docker选项,如下图所示在新打开的页面,会列出升级Docker所要完成的一些前置条件,主要是升级Agent。如果目前系统 的Agent版本太旧的话,会有升级提示,根据提示进行相应的操作即可;若Agent已是最新

11、版本,则 可以直接升级Docker。升级Agent操作如下图所示当系统的Agent是最新版本的时候,我们能看到升级Docker的几种操作方式。直接升级和备份快照 升级。建议使用通过备份快照升级(以便于在升级过程中出问题后,可以通过快照恢复),如图所示在升级页面,点击备份快照升级,此时系统会调用ECS OpenApi对集群内的节点打快照。如图所示由于打快照需要一点时间,此时,我们需要耐心等待一会打快照的进度。待所有快照都成功以后,继 续升级或者放弃升级按钮会亮起。点击继续升级,则进入升级DockerEngine的流程6. 此时我们返回集群列表,可以看到刚才操作的进群处于Docker-Engine

12、升级中的状态。由于升级Docker Engine会进行相应的容器数据备份等工作,所以比较耗时,耐心等待一会即可。升级集群的系统服务集群的系统服务用来解决应用需要的通用服务,例如路由服务acslogging,日志服务acsrouting,volume服 务acsvolumedriver。下面介绍这些服务的升级操作流程。请注意,集群的共享服务在升级的过程中会导致用 户的应用或者服务短暂不可访问或者不正常工作,请谨慎升级,建议选择访问低谷或者维护时间进行升级操作流程在容器服务控制台主界面选择左侧边栏的集群,选择你要升级共享服务的集群,在你选中的集群表项 右侧,选择更多操作,点击选择下拉列表的升级系统

13、服务选项,如下图所示在弹出的窗口上,选择要升级的系统服务,例如此处选择的是路由服务(对应acsrouting,注意升级 会短暂影响用户应用的访问),volume服务(对应acsvolumedriver,注意升级可能会短暂影响用户 相关联应用的功能),点击升级按钮,如下图所示。在容器服务控制台主界面选择左侧边栏的应用,会发现系统服务正在更新中,如下图所示。更新完成 后,被影响的服务会恢复正常。清理集群磁盘清理磁盘操作会清理用户集群内每台服务器上的脏数据.脏数据限于: 1.已下载到本地但未使用的Docker镜像;2.曾经挂载到容器,但容器销毁后未清理的卷轴(volumn)目录.操作流程1)在集群列

14、表页面,选择要清理的集群,点击更多操作的链接.2)在弹出的对话框里,点击清理磁盘.连接集群用户可通过下载的证书通过Docker Swarm API或Docker Client连接集群暴露出来的Endpoint.操作流程1)在集群列表页面,选择要连接的集群,点击连接信息的链接.2)在弹出的对话框里,点击下载证书.下载的内容为zip格式.如何解压使用,请参见证书使用.集群的生命周期集群状态说明创建中(Initial):集群正在申请相应的云资源。运行中(Running):集群申请云资源成功。升级中(Updating):集群升级服务端版本。集群规模变更中(Scaling):变更集群的节点数量。创建失败

15、(Failed):集群申请云资源失败。删除中(Deleting):集群删除中。删除失败(DeleteFailed):集群删除失败。已删除(Deleted,该状态用户不可见):集群删除成功。集群状态流转跨可用区节点管理为了提供应用的高可用性,在创建集群的时候,可以选择将多个节点分布在不同的可用区。操作流程在创建集群的时候,可以先创建一个节点的集群(或者直接创建零节点的集群), 待集群创建完成后,通过集群扩容或者添加已有ECS实例的方式来增加不同可用区的节点。在本示例文档中,我们先创建一个零个节点的 集群,然后分别介绍如何通过扩容或者添加已有ECS让节点分布在不同的可用区上。2)创建一个零节点的集

16、群,集群创建完成后的运行效果如下备注:10个节点3)通过扩容方式添加不同可用区的节点在集群列表中,在某一集群上点击更多操作,我们可以看到有集群扩容和添加已有ECS两个操作。备注:1) 集群扩容(系统自动购买按量付费的ECS)2) 添加已有的ECS(可以是包年包月的ECS)选择集群扩容操作后,可以看到如下界面备注:1ECS的可用区目前容器服务器支持的Region基本都会有至少2个可用区供选择,此时我们可以选择其中的一个可用区,然后重复该动作即可完成多个可用区节点的添加。通过添加已有ECS的方式添加多个可用区使用该种方式来添加节点,首先需要通过ECS的售卖页面自行购买ECS。购买的过程中可以将其选

17、择在不同的可 用区内。从步骤3)我们了解到,可以从集群的更多操作中选择添加已有ECS操作。选择以后,会进入如下的界面备注:1)2)35)重复以上的步骤,即可完成集群支持多个可用区的节点设置集群根域名当用户在通过镜像创建Nginx填写web路由规则时,用户只需要填写域名的前缀nginx,我们给用户提供了以结尾的域名给用户使用,用户可以通过设置集群根域名(该示例我们 使用)来替换该域名。当用户重新部署服务nginx时,域名就从变为了,方便用户使用自己的根域名对集群应用进行访问。下面用一个示例来介绍这个作法的 完整流程,为了保证下面的示例能够工作,请先将agent升级到最新版本。绑定SLB登录阿里云

18、容器服务控制台,选择左侧边栏的集群,找到要配置的集群,本示例为test- SLB,请登录阿 里云负载均衡控制台创建一个SLB,回到该页面进行绑定,支持绑定内网的SLB。设置域名在负载均衡管理页面,点击域名设置选项页,填写用户自己购买的根域名,本示例是,如下图所示。点击设置保存将域名解析到绑定的SLB实例在负载均衡管理页面,点击负载均衡设置,点击前往SLB控制台,找到绑定的SLB实例IP,本例为49。 如下图所示。登录阿里云云解析产品页面,添加A记录,将*.解析到SLB的VIP地址49。如下图所示。重新部署web服务重新部署应用wor,应用下的服务web访问端点发生了变化,如下图所示。 HYPE

19、RLINK / 访问最新的访问端点,如下图所示。镜像与模板管理查看镜像列表操作流程1) 在左侧tab镜像和列表下镜像列表页面,查看分类或搜索操作说明:常用镜像:容器服务推荐的一些常用镜像. Docker官方镜像:Docker hub提供的官方镜像.阿里云镜像:阿里云容器Hub提供的镜像,包含了公开和私有镜像。搜索镜像:点击右上角搜索按钮,可按照镜像的名称前缀匹配搜索。创建镜像1.点击镜像列表页面的新建镜像按钮点击完会跳转到容器Hub服务的管理中心. 如果用户是第一次访问,需要先开通容器Hub服务. 申请一个仓库的命名空间,并设置用于push仓库镜像的密码.然后选择右上角的创建镜像仓库,即可进行

20、镜像仓库的创建.用户可以选择通过命令行上传自己的镜像(本地仓库),也可以选择第三方代码仓库进行自动构建(GithubBitbucket).查看编排模板列表操作流程1) 点击编排模板列表页面,查看分类或搜索操作说明:常用编排:显示容器服务推荐的常用编排模板我的编排:显示用户自己创建的编排模板搜索模板:在右上角输入要搜索的编排名称创建编排模板操作流程选择左侧列表镜像与模板下的编排模板页面,点击右上角的创建按钮在创建编排页面填写配置名称:模板的名称,格式为:待补充内容:Docker Compose的yml文件.点击查看Compose File的详细说明.点击创建编排按钮更新编排模板操作流程在编排模板

21、页面选择我的编排下的一个模板,点击详情点击右上角的的编辑编辑模板内容保存模板内容点击右上角的保存按钮下载编排模板操作流程在编排模板页面选择一个模板,点击详情点击右上角的的下载会立即下载后缀为yml格式的模板文件.删除编排模板操作流程在编排模板页面选择一个模板,点击详情点击右上角的的删除在弹出的确认框中点击确认按钮服务编排文档容器编排用户文档概述容器服务支持Docker Compose 编排模板来描述多容器应用。 编排模板允许用户描述一个完整的应用,该应用可以由许多个服务组成。例如:一个门户网站应用,由一个Nginx服务、一个Web服务和一个数据库服务组成。一个服务可能会有多个容器实例,所有容器

22、实例的配置保持一致 例如:上述应用中的Web服务,就可以根据访问量需要启动两个甚至更多的容器。能力容器服务支持通过编排模板文件,自动化地部署和管理一个容器应用。 编排模板文件使用的标签兼容大部分Docker Compose 1.5.x 到 1.7.x 版本实现的标签。 标签说明页中,会描述具体兼容的标签。编排模板文件也支持Compose V1和V2两种不同版本的模板格式,具体信息请参见文档容器服务也在社区版本之上提供了很多扩展能力:与社区的Docker Compose和Swarm不同,阿里云容器服务支持跨节点的容器连接(link),所以用户可以直接的将Docker Compose模板描述的应用

23、部署到分布式集群之上来提供高可用性和可伸缩性。容器服务也在社区Compose模板描述基础之上提供了一系列扩展来简化web、微服务应用的部署和运 维,具体请参见标签说明页示例下面是一个wordpress应用,包含了由wordpress镜像提供web服务和mysql镜像提供的db服务web:web:image: wordpress:4.2 ports:- 80environment:WORDPRESS_AUTH_KEY=changemeWORDPRESS_SECURE_AUTH_KEY=changemeWORDPRESS_LOGGED_IN_KEY=changemeWORDPRESS_NONCE_

24、KEY=changemeWORDPRESS_AUTH_SALT=changemeWORDPRESS_SECURE_AUTH_SALT=changemeWORDPRESS_LOGGED_IN_SALT=changemeWORDPRESS_NONCE_SALT=changeme restart:alwayslinks:db:mysql labels:aliyun.logs: /var/be.url: HYPERLINK http:/container/license.txt http:/container/license.txt be.initial_delay_seconds: 10aliyun

25、.routing.port_80: HYPERLINK / wordpress; aliyun.scale: 3db:image: mysql:5.6 environment:MYSQL_ROOT_PASSWORD: password restart: alwayslabels:aliyun.logs: /var/log/mysql标签说明不予支持的标签标签说明buildbuild标签用于使用当前目录中的Dockerfile文件和其他文档进行容器镜像构建。目前容器服务暂不提供构建镜像功能,推荐用户将构建和部署的动作分开处理:用户可以利用阿里云的镜像仓库,直接从代码源构建镜像,或者将本地构建的镜

26、像推送到镜像仓库;用户可以在编排模板中使用image标签引用镜像仓库(包括私有仓库)中的镜像。dockerfile说明同上env_file容器服务暂不支持以文件方式指定环境变量, 用户可以通过environment标签添加环境变量mac_address暂时不支持Mac地址的设置detach容器服务的所有镜像都是以detach模式启动的,不允许用户指定attach方式执行stdin_open说明同上tty说明同上扩展能力的标签容器服务扩展了编排模板的部署和生命周期管理能力,所有扩展能力都被描述在labels标签下面,作为子标签 使用。probe设置服务的健康性检查通过URL进行检查,支持HTTP

27、协议、TCP协议通过shell脚本检查健康检查会从容器宿主机上发起,每隔一定时间(默认两秒)向容器发起请求或在容器上执行shell脚本命令。 检查成功的判断条件是,HTTP请求的返回码为2XX/3XX;TCP端口可建立连接;shell脚本运行返回值为0检查的字段解释:TCP请求的URL,请注意不需要用户填写自己的域名或者IP地址,只需要 加上container这个单词,最终会被解析成容器相应的IP去进行健康检查,检查结果返回2XX或者 3XX才认为是健康例如容器通过8080端口提供HTTP服务,并提供了/ping作为健康检查的URL,则探测URL的格式为 http:/container:808

28、0/ping,容器服务会自动通过HTTP GET请求检查URL的返回结果,如果返回结果的返回码为2XX或3XX,则说明健康检查成功例如MySQL容器侦听3306端口,探测URL的格式为 tcp:/container:3306,服务会检查容器3306端口是否打开,如果打开则说明健康检查成功be.cmd: 健康检查执行的检查Shell命令,/check.sh; 容器服务会定期在容器内执行该命令,当Shell脚本返回值为0时表明健康检查成功be.timeout_seconds:健康检查的超时时间be.initial_delay_seconds:在容器启动后延迟几秒开始健康检查注意:一个服务中只能包含

29、be.url和be.cmd其中之一如果服务不包含be.url或be.cmd,则容器缺省为健康状态,且其他be.xxx标签会被忽略os:image: my_nginxos:image: my_nginxlabels:labels:be.url: HYPERLINK http:/container/ping http:/container/ping be.timeout_seconds: 10be.initial_delay_seconds: 3os:image: my_app labels:os:image: my_app labels:be.cmd: health_check.sh be.in

30、itial_delay_seconds: 3rolling_updates更新某个服务时,如果该服务包括超过一个以上容器(通过使用scale标签),在第n个容器更新成功且(配合 使用probe标签做健康检查)健康检查显示为健康后,再去做第n+1个容器的更新,以此来最小化停止服务时 间。如果健康检查失败,且超时30s,那么就停止等待健康检查成功,接着去更新第n+1个容器。示例:部署wordpress服务,通过scale标签指定部署2个容器,通过probe标签指定检查的的url为web:image: wordpress ports:- 80restart: always links:- db:my

31、sql labels:aliyun.logs: /var/be.url: web:image: wordpress ports:- 80restart: always links:- db:mysql labels:aliyun.logs: /var/be.url: HYPERLINK http:/container/license.txt http:/container/license.txt be.initial_delay_seconds: 10 aliyun.routing.port_80: HYPERLINK http:/wordpress/ http:/wordpress aliy

32、un.rolling_updates: truealiyun.scale: 2 db:image: mariadb environment:MYSQL_ROOT_PASSWORD: example restart: alwayslabels:aliyun.logs: /var/log/mysqldepends设置服务的依赖关系目前Docker Compose只能控制容器的启动顺序,一个接一个的启动容器。如果前一个容器启动之后,并不能立刻对外提供服务,甚至启动失败。那么可能导致后面的服务启动失败,或是启动之后并不能正常对外服务。结合健康检查的扩展标签,我们可以标记一个服务的依赖关系,这个服务会在

33、其他被依赖的服务的健康检查通 过之后才开始部署。如果被依赖的服务没有健康性检查的标签,则缺省认为当容器启动之后就可以对外提供服 务web:image: wordpress:4.2 ports:web:image: wordpress:4.2 ports:- 80links:labels:aliyun.depends: db db:image: mysql environment:MYSQL_ROOT_PASSWORD=passwordscale设置该服务的容器数量,横向扩展服务现在的Docker Compose只能在每一个服务中启动一个容器,如果需要扩展容器数量,需要在启动后手动进行设置。现在

34、通过scale的扩展标签,支持用户在容器启动的时候进行扩展。而且在容器被删除之后,会自动重启 或新建容器恢复到指定数量。(公测期间暂不支持)web:image: wordpress:4.2 ports:web:image: wordpress:4.2 ports:- 80links:db:mysql labels: aliyun.scale:3 db:image: mysql environment:MYSQL_ROOT_PASSWORD=passwordrouting设置该服务的访问域名绑定域名的选择:如果使用Http协议暴露服务,可以使用容器服务提供内部域名(顶级域为),供用 户测试使用,

35、也可以使用您提供的域名。 HYPERLINK / 如果使用Https协议,那么仅支持配置您提供的域名,例如。你需要修改DNS设置将域名指定到容器集群提供的负载均衡服务之上标签声明的格式要求:容器服务为每一个集群分配了子域名,绑定内部域名只需要给出域名的前缀,域名前缀仅表示域名的 一级,不能使用.进行分割。用户不指定scheme的话,默认使用Http协议。域名的长度不能超过128个字符,contextroot的长度不能超过128个字符。绑定多个域名到服务时,域名之间用;隔开。一个后端服务可以有多个端口,该端口指的是容器暴露的端口,一个端口只能使用一条label进行声 明,带有多个端口的服务需要声

36、明多个label。web:image: wordpress:4.2 links:labels:aliyun.routing.port_80: HYPERLINK /context wordpress;/context db:web:image: wordpress:4.2 links:labels:aliyun.routing.port_80: HYPERLINK /context wordpress;/context db:image: mysql environment:MYSQL_ROOT_PASSWORD=password最 终 用 户 得 到 的 内 部 域 名 示 例 :- web

37、服务起来之后,用户可以通过 HYPERLINK 或者/ URL或者 HYPERLINK /context%E8%AE%BF%E9%97%AE%E7%9B%B8%E5%BA%94%E7%9A%84web%E6%9C%8D%E5%8A%A1%E5%A6%82%E6%9E%9C%E7%94%A8%E6%88%B7%E9%9C%80%E8%A6%81%E6%94%AF%E6%8C%81https%E6%9C%8D%E5%8A%A1 访问相应的web服务如果用户需要支持https服务,需要自行通过阿里云官网 负载均衡服务控制台上传https证书,并绑定相应的集群对外访问SLB端点lbaliyun.lb.

38、port_$container_port:$scheme:/$slb_name|slb_id:$front_port通过自定义阿里云负载均衡slb nat映射的方式来暴露服务端口到公网或者到内网。需要升级到最新版本的agent方能支持该扩展能力标签。标签格式如下,带$的变量为占位符aliyun.lb.port_$container_port:$scheme:/$slb_name|slb_id:$front_port示例web:web:image: wordpress:4.2 ports:image: wordpress:4.2 ports:- 80:80- 9999:9999- 8080:80

39、80- 53:53/udp links:db:mysql labels:aliyun.lb.port_80: http:/slb_example_name:8080 aliyun.lb.port_9999: tcp:/slb_example_name:9999 aliyun.lb.port_8080: https:/14a7ba06d3b-cn-hangzhou-dg-a01:80 aliyun.lb.port_53: udp:/14a7ba06d3b-cn-hangzhou-dg-a01:53 db:image: mysql environment:MYSQL_ROOT_PASSWORD=p

40、assword要使用好自定义负载均衡的lb标签,需要理解请求路由过程中的3个端口,即slb的前端端口,slb的后端端口(也就是ECS vm的端口),最后就是容器的端口. 如上4个lb标签所示,以第一个lb标签aliyun.lb.port_80为例,从左往右看,在key中的80端口指的是容器要暴露的端口,后面的8080端口指的是slb要暴露的前端端口。slb的后端端 口是ECS vm的端口,可从标签ports的主机:容器端口映射中获取到,由此,我们可以查到容器端口80对应的主机端口是80,因此我们确定了slb转发的后端端口是80端口。因此第一个标签说明了当向服务web发起请求时,首先通过slb前

41、端的8080端口进入,转发到后端主机vm的80端口,然后再根据端口映射ports的声明,请求 最终从容器端口80进入,交由容器内的wordpress进程提供服务。接下来的标签以此进行相同的解释。该标签 配置的负责均衡均不经过集群内置的routing服务,请求的路由由用户自己控制。标签声明的格式要求:指明slb实例时,可以使用slb实例的名称或者slb实例的Id。slb实例名称的限制为1-80个字符,允许包含字母、数字、-、/、.、_这些字符。容器端口限制为1-65535。slb前端端口的限制为1-65535。带有自定义slb nat映射的服务部署限制:用户需要自己创建slb实例,对slb实例命

42、名,并创建对应监听端口,然后以扩展标签的方式提供以及要暴露的端口,使用的协议$scheme(可能的值有tcp,http,https,udp),映射的容器端口$container_port,指定slb实例的前端端口$front_port。用户必须指定服务要暴露端口的主机和容器端口的映射,通过Dockerfile标准的标签ports指定,注 意必须指定主机端口,且与其他服务映射的主机端口不能冲突,需要主机的端口用于slb绑定后端的ECSvm机器。一个服务只能使用一个或者多个slb实例进行服务端口的暴露,因多个服务会分布在不同的vm后端,多个服务不能共享使用同一个slb实例。部署了带有slb nat

43、映射的服务的主机使用相同的主机:容器端口映射,因此这些服务在每台vm主机上只有一个实例。支持的slb协议$scheme包括tcp,http,https,udp协议。用户需要自行在阿里云slb官方控制台创建监听的端口。请自行登录slb官方控制台对使用在容器服务中的slb实例进行具体的配置修改,例如带宽限制等配置。lb标签的价值在于用户不需要自行绑定slb后端的ECS vm服务器, 只需要配置好相应的标签, 就会帮助用户完成绑定后端的操作. 因此, 除了绑定slb后端的操作,用户对slb的设置,修改,用户需要自行在阿里云slb控制台上面完成。容器服务会帮助用户生成一个RAM子账户(需要用户开通RA

44、M),使用这个具有部分slb权限(没有创 建和删除slb的权限)的账号帮助用户管理在容器服务中使用的slb,例如绑定集群中某些节点作为服 务的后端。日志mysql: image:mysql: image:mysql ports:- 80labels: aliyun.scale: 1 environment:- MYSQL_ROOT_PASSWORD=passwordwordpress:image: /jiangjizhong/wordpress ports:- 80labels:aliyun.routing.port_80: wordpress-with-log aliyun.log_stor

45、e_dbstdoutstdout- mysql具体可以参考 集成日志服务.global设置该服务为全局服务有一些服务需要在每一个节点部署,例如监控或是日志类的服务。并且在新的节点建立的时候就对这个节点进 行服务的部署。monitor: image: sample labels:aliyun.global: true当一个服务被设置为global时,该服务会在集群中的每一个节点进行部署。当集群中有新增节点时,也会自动 monitor: image: sample labels:aliyun.global: true功能增强的标签服务部署约束(affinity:service)设置该服务的部署约束

46、条件容器服务支持Docker Swarm兼容的容器部署约束条件,我们可以通过 Docker Swarm Filter,控制一个容器的部署。但是在社区版的Docker Compose中,却并没有相关的能力来控制服务直接的部署约束。在容器服务中,我们允许用户在environment中添加相关affinity:service,来约束服务之前的亲和度(Affinity)来,达到控制服务部署策略的功能。支持服务之间的Soft affinity和Hard affinitymaster:image: mysql:5.6 environment:MYSQL_USER=userMYSQL_PASS=testRE

47、PLICATION_MASTER=truemaster:image: mysql:5.6 environment:MYSQL_USER=userMYSQL_PASS=testREPLICATION_MASTER=trueREPLICATION_USER=replREPLICATION_PASS=replports:- 3306slave:image: mysql:5.6 environment:MYSQL_USER=userMYSQL_PASS=testREPLICATION_SLAVE=trueports:- 3306links:master:mysql额外支持的标签external设置该服

48、务直接链接到外部地址扩展字段下有以下字段可以使用host : 设置链接的域名ports : 设置链接的端口示例:不使用external,直接启动一个mysql容器web:image: wordpress:4.2 ports:- 80web:image: wordpress:4.2 ports:- 80links:db:mysql db:image: 60:5000/mysql environment:MYSQL_ROOT_PASSWORD=passwordwordpress:image: wordpress:4.2 ports:wordpress:image: wordpress:4.2 po

49、rts:- 80links:db:mysql WORDPRESS_DB_USER=cloudWORDPRESS_DB_PASSWORD=MYPASSWORDdb:external:host: ports:- 3306变量替换容器服务支持参数化的Docker Compose模板。模板中可以包含环境变量作为参数,当模板部署时会提示输入参数值,并在部署是对模板进行变量替换。db:image: postgres:$POSTGRES_VERSIONdb:image: postgres:$POSTGRES_VERSION容器服务会提示用户输入 POSTGRES_VERSION 参数值,比如9.3。容器服务

50、会根据参数值对Compose模板进行变量替换。在这个例子中会部署一个postgres:9.3的容器容器服务完全兼容Docker Compose的语法,可以在模板中使用$VARIABLE或者$VARIABLE格式的语法。在Compose模板中可以使用$来对需要包含$的字符串进行转义,这样容器服务不会错误地对其作为参数来进 行处理。关于Compose模板支持变量替换的详细信息,可以参考文档容器重新调度容器服务支持对Docker容器的重新调度:当一个节点失效时,容器可以被自动调度到其他可用节点自动运行。 缺省情况下,容器的重新调度策略是关闭的。根据需要可以用如下配置来让重调度策略生效redis: i

51、mage:redisenvironment:redis: image:redisenvironment:- reschedule:on-node-failure或者label方式redis: image:redis: image:redis labels:- com.docker.swarm.reschedule-policy=on-node-failure注:如果重新调度容器之后,需要恢复Docker容器所需的持久化状态,需要配合支持数据迁移或共享的Docker文件卷。高可用性调度为了使应用有更高的可用性,我们支持将同一个服务的容器调度在不同的可用区(availability zone)里。

52、当某个可用区故障时,应用依然能够提供服务。您可以在编排文件中通过环境变量指定对可用区的选择,有两种格式。availability:az=3 服务至少分布在3个可用区中;如果当前集群没有三个可用区,或机器资源不够导致无法分布在三个可用区,容器创建会失败availability:az=33个可用区中;无法满足时依然可以成功创建。nnn: expose:nnn: expose:- 443/tcp80/tcpimage: nginx:latest environment:labels:aliyun.scale:8 restart: always volumes:/var/cache/nginx应用管理

53、创建应用操作流程点击应用列表页面右上角的创建应用按钮跳转到创建应用表单页面开始填写应用信息:填写应用名称和描述应用名称为1-64个字符,可包含数字、汉字、英文字符,或- 应用描述可以不填,字数要求小于1024.填写应用的版本从集群下拉列表里选择集群.点击右下角的使用镜像创建或使用编排模板创建选择使用镜像创建,进入镜像配置页面填写镜像的名称和版本用户可选择容器服务提供的一些推荐镜像,也可以直接填写自己的镜像信息. 填写容器的个数填写端口映射、环境变量、数据卷、路由信息设置容器是否异常自动重启点击高级配置设置设置容器的启动命令(CMDEntrypoint),如果设置了会覆盖镜像的配置.设置容器的L

54、abel.6. 设置完毕后点击创建并部署.选择使用编排模板,进入编排模板配置页面编排模板的内容要求符合Docker Compose的格式. 设置完毕后点击创建并部署。限制容器的资源,cpu、内存、IO等都可以限制。因为这部分设置比较专业,我们没 有在界面上开放,用户可以在编排模板中使用。限制CPU一个cpu核等于100CPU资源。如果机器配置是4核,则总共可用CPU资源是400。在编排模板中,可以通过cpu_shares参数指定。cpu_shares: 50表示使用0.5个核。限制内存通过mem_limit参数限制内存,单位是byte,最小内存是4M字节。如果设置了内存限制,当容器申请的内存超

55、 过限制时,容器会因为OOM而停止运行。为了减小容器因为偶尔内存超标而被停止的风险,可以配合memswap_limit参数,给容器增加一些交换内存。推荐将memswap_limit设置成mem_limit的两倍。n1: expose:n1: expose:- 443/tcp- 80/tcpimage: nginx:latest cpu_shares: 50 #0.5核mem_limit: 500000000 #500MBmemswap_limit: 1000000000 #1GB labels:aliyun.scale:1 restart: always volumes:aliyun.scal

56、e:1 restart: always volumes:- /var/cache/nginx资源调度为了保证容器能获得足量的指定资源,比如上述例子里的0.5核CPU和500MB内存,我们会为容器预留资源。 比如,一台4核的机器,最多会调度8个cpu_shares=50的容器。但是,如果创建容器是不指定cpu_shars和mem_limit,则默认不占资源。限制其他资源其他资源限制请参考docker compose的说明高可用性调度为了使应用有更高的可用性,我们支持将同一个服务的容器调度在不同的可用区(availability zone)里。当某个可用区故障时,应用依然能够提供服务。您可以在编排

57、文件中通过环境变量指定对可用区的选择,有两种格式。availability:az=3 服务至少分布在3个可用区中;如果当前集群没有三个可用区,或机器资源不够导致无法分布在三个可用区,容器创建会失败availability:az=33个可用区中;无法满足时依然可以成功创建。nnn: expose:nnn: expose:- 443/tcp80/tcpimage: nginx:latest environment:labels:aliyun.scale: 8 restart: always volumes:/var/cache/nginx指定节点调度web:image: nginx:latest

58、restart: always environment:- constraint:aliyun.node_index=1 ports:- 80labels: aliyun.scale: 2web:image: nginx:latest restart: always environment:- constraint:aliyun.node_index=1 ports:- 80labels: aliyun.scale: 2我们支持如下表达式constraint:aliyun.node_index=1指定部署到node1constraint:aliyun.node_index!=1不部署到node

59、1constraint:aliyun.node_index=(1|2|3指定部署到node1或者node2或者node3constraint:aliyun.node_index!=(1|2|3部署到除node1,node2,node3的其他机器上affinity:image=redis尽量部署到有redis镜像的机器上affinity:container!=redis尽量不部署到有redis容器的机器上查看应用详情操作流程在应用列表页面选择集群筛选应用,并点击其中一个应用的名称链接跳转到应用的服务列表页面切换tab,查看应用下的所有容器切换tab,查看应用下的日志应用变更启停应用操作流程在应用

60、列表页面选择集群筛选应用,并点击其中一个应用的启动或停止链接在弹出的对话框里,点击确认按钮.变更应用配置操作流程在应用列表页面选择集群筛选应用,并点击其中一个应用的变更配置链接在弹出的对话框里,修改配置推荐修改模板的时候,更新版本信息.删除应用操作流程在应用列表页面选择集群筛选应用,并点击其中一个应用的删除链接在弹出的对话框里,点击确认按钮.服务管理使用说明一个应用由1个或多个服务组成,用户可选择变更应用的配置来升级应用,也可以选择单独变更某个服务的配置来 独立升级.查看服务详情操作流程在服务列表页面选择集群筛选服务,并点击其中一个服务的名称链接跳转到服务的详情页面,查看服务下的所有容器切换t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论