Skip to main content

容器服务

镜像部署

本文将会介绍一种基于Docker镜像快速部署应用,并配置集群外访问的最佳实践。

导入镜像

例如本地有镜像 tomcat:v7.0 ,可通过 push命令推送到平台镜像仓库中或者上传镜像文件到平台镜像仓库。如果已有该镜像,可以跳过此步骤。

note

平台部署后,默认镜像仓库会内置system_containers/tomcat镜像。

创建应用

(1) 镜像上传成功,导航进入[容器服务/容器应用]页面,单击<创建应用>,进入应用新增页面。

(2) 填写应用名称和服务基础信息,点击“容器组配置”,配置容器组信息。

(3) 在容器组配置页面,选择介质类型为镜像,在镜像名称处点击选项框进入镜像选择页面,搜索 tomcat即可找到该镜像。

(4) 选择镜像后,配置容器相关参数,配置完成后。点击“高级设置”,用户可按需配置对应高级设置参数。

(5) 选择对应的配置项,设置配置项的对应属性,配置完成后,点击下方<创建>按钮,即可创建应用,应用创建成功之后,返回应用列表。

(6) 应用状态变为“运行中”时,说明服务已经运行起来了。点击列表中路由策略处的“去配置”,进入应用路由页面,配置应用路由后,才可以在集群外访问,如下图所示。

test

配置路由策略

(1) 为新增的应用创建路由策略,导航进入[容器服务/容器应用],切换至[网络管理/应用路由],在服务代理页面新增路由策略,配置页面如下所示。

test

(2) 用户需要集群外访问,所以代理协议选择 HTTP,并填写域名(可以自定义域名或使用集群分配域名)。

(3) 配置完成后,单击<创建>,规则增加成功。

访问应用

使用服务代理创建应用路由,HTTP通过域名访问即可。打开浏览器,手动输入域名,或在应用列表访问地址处复制地址访问,访问结果如下图所示。

test

平台提供的 tomcat镜像模板,没有上传网站文件包时,默认访问tomcat官网,表示tomcat镜像已成功启动。上传网站文件包到 /webapps目录后,显示正常网站。

应用包更新

本文主要介绍传统 Java程序如何快速接入平台,通过 war jar 包的方式上传到平台运行,并正常访问。其中 war 包可以选择 tomcat weblogic或者自定义运行环境。

(1) 准备应用介质,本例中下载了一个“2048游戏war”包。

(2) 上传 war包到应用包管理,单击<上传包文件确定>按钮,上传包文件,如下图所示。

test

(3) 应用包上传完成后,单击<立即提交>按钮,应用包上传成功。

(4) 用上传的应用包部署对应的应用。

(5) 新增路由策略,为新增的应用创建路由策略。

(6) 导航进入[网络管理/应用路由],在服务代理页新增路由策略,配置页面如下图所示。

test

(7) 配置完成后,单击<创建>按钮,规则增加成功。

(8) 应用启动,应用运行状态为运行中后,即可通过公网访问地址访问。

(9) 访问成功后,用户可以看到2048游戏界面,如下图所示。

test

原生资源接入

本文介绍从自建Kubernetes集群接入到平台的应用资源接入和管理实践过程。

tip

前提条件

自建Kubernetes集群已通过集群管理-添加集群导入已有Kubernetes集群的方式导入到平台。

原生资源接入的具体操作步骤如下所示。

(1) 创建租户和授权集群:通过管理员账户登录平台,进入“管理控制台”,点击“创建租户”,填写租户名称、租户管理员、选择“授权集群”(导入的集群),点击确定即可完成租户的创建和集群授权。

(2) 创建项目和选择已有命名空间:进入租户管理模块的项目管理菜单,单击<创建项目>,这里有2种创建方式新建命名空间和关联已有命名空间。本例选择关联已有命名空间方式创建项目,配置如下所示。

info

1.打开[租户管理/项目管理]页面。

2.单击创建项目按钮。创建方式选择关联已有命名空间。

3.在创建项目弹框填写项目名称,选择租户有权限集群后选择已有的命名空间,填写描述和选择项目管理员,点击“创建”即可创建项目。

(3) 工作负载管理操作,进入容器服务模块,选择“工作负载”菜单,这里可以管理已有的Kubernetes原生工作负载负载资源。

(4) 创建应用关联服务,进入容器服务容器应用,点击菜单“创建应用”根据引导完成需要创建的应用。

(5) 点击刚创建的应用名称进入“应用详情”,可以看见刚创建的服务(service资源的服务),这可以把上一步关联到服务的工作负载资源关联进应用。

(6) 点击“关联服务”在弹出框内选择刚添加的服务,点击确定完成操作,在服务实例下可以看见已添加的和关联的服务,通过<操作>按钮可以统一对服务进行对应的操作。

test

(7) 调试并管理启动,进入容器服务容器应用,可以对应用的多个服务进行查看和管理,点击编排文件可以查看全部应用的YAML文件,点击审计日志可以查看应用的操作日志,点击拓扑图可以清晰的查看整体应用的分布情况。

联邦集群RSP模拟容灾

多云容器平台提供多云容灾(多个云同时承载业务流量,当一个故障时,可以快速切换到另一个集群)、秒级流量接管能力,业务应用的实例可以采用多云的形式部署在不同云上的容器服务中,当云单点宕机故障时,多云容器功能模块可以秒级自动完成应用实例的弹性迁移以及流量的切换,业务的可靠性大大提升。

本文介绍使用联邦集群的RSP(ReplicaSchedulingPreference)资源模拟容灾情景。

tip

前提条件

提前搭建好演示所需的集群,本例中包含三个集群,其中一个host集群,两个member集群。

模拟RSP容灾的具体操作步骤如下所示。

(1) 管理员在全局模式下,选择[管理控制台/租户和集群/租户管理]页签,进入租户列表页面。

(2) 单击<新建租户>按钮,进入租户新建页面,配置租户相应的参数,如下图所示。

test

(3) 租户新建完成后,点击新建租户名称链接,进入租户概览页面,切换至“项目管理”页面。

(4) 单击<创建项目>按钮,进入项目新建页面,具体配置如下所示。

info

1.打开“项目管理”页面。

2.单击创建项目按钮。创建方式选择新建命名空间。

3.在创建项目弹框填写项目名称,选择租户有权限的集群,填写描述和选择项目管理员,点击“创建”即可创建项目。

(5) 在新建的租户下,选择刚才创建的集群项目,选择[多云容器服务/联邦应用]页签。

(6) 单击<创建联邦应用>按钮,创建联邦应用,如下图所示。

(7) 创建RSP,点击刚创建的应用,可以看见刚创建的服务(联邦Service资源的服务),点击Service可以看到与Service相关的FederateDeployment,点击进入详情,可以看到目前的Pod分布情况。接下来创建点击“联邦副本”创建RSP。副本总数为“3”;联邦fp-5.1设置权重值为“1”,副本范围为1~5;联邦fp 2设置权重值为“1”,副本范围为1 ~5。

(8) 可以去某个集群修改API-Server的配置文件让其不可用,然后回到平台看Pod的分布情况。可以看到Pod都调度其他集群。

test

(9) 恢复集群,查看Pod的分布情况。在故障集群Pod继续可用,而其他的集群将多余的Pod删除。

test

服务灰度发布

平台提供两种灰度发布方式。

info

基于服务多版本的灰度发布。

基于负载均衡的应用路由策略的灰度发布。

基于服务多版本的灰度发布

此方案只能支持按流量比例的灰度发布。由服务基本概念可知,每个服务提供一个service资源(集群内服务发现)和至少一个版本控制器(应用负载),用户通过service访问服务时,会在多个版本控制器管理的容器组IP(类比服务器)之间轮询。

因此用户可以通过修改新旧版本之间的实例数量,来修改流量比例。当旧版本实例数量变为 0 ,流量就已经全部转移到新版本了。经过一段时间业务验证,即可删除旧版本,完成灰度发布。

test

基于负载均衡的灰度发布

此方案可以支持按流量比例或Header等路由策略的灰度发布。基于负载均衡的灰度发布需要将两个服务版本部署为两个单独服务,然后在[网络管理/应用路由]页面,设置基于负载均衡的路由策略。

test

(1) 如上图,添加一个HTTP路由规则,绑定上述的一个服务,路由规则创建完成后可编辑yaml修改负载均衡路由规则参数。

基于负载均衡创建的路由规则配置完成后,点击路由规则名称链接进入路由规则详情页面,切换至“灰度发布页面”。

在项目敏捷开发的过程中,不可避免需要快速、安全的更新应用,在此前提下衍生除了多种应用发布方式,其中灰度发布可以实现平滑过渡的发布,在实际的生产应用中有比较广泛的应用,灰度发布支持“按权重”、“按内容”进行配置。

按照权重灰度发布配置页面

info

  • 主/监控服务:当前ingress绑定的服务。
  • 替换服务:用于灰度发布使用的替换服务。
  • 按权重:配置主服务、替换服务的流量比例(设置范围 0 ~ 100 %)。
  • 用户按内容配置灰度发布的页面如下图所示。按照内容灰度发布配置页面如下图所示。

    test

    按照服务内容配置路由规则的具体内容是:根据用户绑定后端服务域名的Header、Query、Cookie配置路由匹配规则,其中Header/Cookie匹配方式支持完全匹配、正则匹配对应的键值,使得满足规则的请求可以转发到相应的服务;Cookie规则方式需要用户配置具体的Cookie。

    匹配路由规则的请求将转发到相应的服务中,不匹配规则的请求将转发到该路由规则绑定的其他服务中(按原有权重比例)。

    (2) 通过不断修改路由策略,实现灰度发布。后端服务删除旧版本后,流量就全部转移到新版本了,一段时间验证之后,即可删除旧版本服务,完成一次灰度发布流程。