通过镜像发布 EDAS 自带 Kubernetes 集群应用
更新时间:2020-03-22 09:11:20
用户可以通过使用镜像发布 EDAS 自带 Kubernetes 集群应用,快速获得该镜像中所集成的 Kubernetes 运行环境或软件应用,从而避免发布 Kubernetes 应用的复杂配置等问题。
相对于 ECS 集群应用和 Swarm 集群应用,EDAS 自带 Kubernetes 集群应用无需部署,创建即发布。
前提条件
- 开通 EDAS 服务
- 创建 VPC
- 创建 ECS 实例
- 创建命名空间
- 创建 Kubernetes 集群
- 同步 SLB 到 EDAS:仅当需要配置负载均衡时需完成该配置。
操作步骤
发布 EDAS 自带 Kubernetes 集群应用的流程如下:
登录 EDAS 控制台。
在左侧导航栏中单击应用管理,进入应用列表页面。
在应用列表页面选择地域(Region)和命名空间(可选),然后在右上角单击创建应用。
在应用基本信息页面中设置应用的基本信息和参数。
应用基本信息参数说明:(标*的参数为必选参数。)
- 所在区域:在下拉菜单中选择地域和命名空间。命名空间可以选择默认(命名空间)。
- 部署集群:在下拉菜单中选择一个 Kubernetes 集群。
- 应用类型:应用类型由部署集群决定,选择了 Kubernetes 集群,应用类型则为 Kubernetes 应用,不可配置。
- 应用名称:输入应用名称。
- 应用描述:填写应用的基本情况。
设置完成后,单击下一步:应用配置。
在应用配置页面配置镜像。
应用部署方式选择镜像。
在配置镜像区域选择具体镜像。
镜像包含我的镜像和官方 (镜像) 两种。
我的镜像:根据实际需求,创建并上传到阿里云 Docker registry 的镜像。上传镜像请参考:上传用户镜像。
单击我的镜像,选择地域,然后在该地域中选择具体镜像和版本,单击选择。
注意:
镜像有 PUBLIC 和 PRIVATE 两种类型。当选择 Private 时,会弹出对话框,需要输入登录该私有镜像仓库的用户名和密码。
建议您在创建应用所在的地域内选择镜像。当有特殊需求,需要跨地域选择镜像,镜像选择完成后,会有一个镜像同步的过程,请稍等片刻。
官方镜像:阿里云为您提供多种 ( Nginx、MySQL、Redis、WordPress 和 MongoDB 等) 类型的标准镜像。
单击官方,选择镜像类型和版本。
说明:镜像选择完成后,配置镜像区域会自动折叠。所选的镜像会显示在配置镜像右侧。
设置 Pod。
Pod 是应用最小的部署单元。应用可以有多个 Pod,在负载均衡下,请求会被随机分配给某个 Pod 处理。
设置 Pod 总数。
说明:Pod 在运行失败或出现故障时,可以自动重启或者快速迁移,保证应用的高可用。有状态应用如果使用了持久化存储,能保存实例数据;无状态应用重新部署时不保存实例数据。
设置单 Pod 资源配额。
系统默认不做配额限制,即单 Pod 的 CPU 和 Memory 显示为 0。如果需要限制配额,请填设置数字。
设置启动命令和启动参数。
注意:若不了解原 Dockerfile 镜像的 CMD 和 ENTRYPOINT 内容,不建议修改自定义启动命令和启动参数,错误的自定义命令将导致应用创建失败。
- 启动命令:仅需输入[“”]内的内容,如命令 CMD [“/usr/sbin/sshd”,”-D”] ,仅需填写 /usr/sbin/sshd –D 。
- 启动参数:一个参数写一行。如 args:[“-c”; “while sleep 2”; “do echo date”; “done”] 中包含 4 个参数,需要分为 4 行来填写。
设置环境变量。
在创建应用过程中,将所填环境变量注入到即将生成的容器中,这样可以避免常用环境变量的重复添加。
环境变量参数说明:
假如您使用 MySQL 镜像时,可以参考如下环境变量:
- MYSQL_ROOT_PASSWORD 用于设置 MySQL 的 root 密码,必选项。
- MYSQL_USER 和 MYSQL_PASSWORD 用于添加除 root 之外的账号并设置密码,可选项。
- MYSQL_DATABASE 用于设置生成容器时需要新建的数据库,可选项。
其它类型的镜像,请根据实际需求进行配置。
(适用于有状态应用)设置应用生命周期管理脚本。
EDAS 自带 Kubernetes 集群应用有两种状态:
无状态应用:支持多副本部署。重新部署时不保存实例数据。适用于以下使用场景:
- Web 应用,应用升级或迁移时,实例内数据不保留。
- 需要灵活水平扩展,以应对业务量骤然变化的应用。
有状态应用:区别于无状态应用,有状态应用会存储需要持久化的数据,在应用升级或迁移时,实例内数据不会丢失。适用于以下使用场景:
- 需要频繁通过 SSH 到容器进行操作。
- 数据需要持久化存储(如数据库应用 MySQL 等),或者集群之间有选举特性,服务发现的应用,如 ZooKeeper,etcd等。
有状态应用可以选择设置应用生命周期管理。
生命周期管理脚本说明:
Liveness 脚本:一种探测容器状态的探针,探测应用是否处于健康状态。如果不健康,则删除重建容器。参考文档:https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/
Readiness 脚本:一种探测容器状态的探针,探测应用是否启动完成并且处于正常服务状态。如果不正常,则更新容器的状态。参考文档:https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/
Poststart 脚本:一种容器钩子。该钩子在容器被创建后立刻触发,通知容器它已经被创建。该钩子不需要向其所对应的 hook handler 传入任何参数。如果该钩子对应的 hook handler 执行失败,则该容器会被杀死,并根据该容器的重启策略决定是否要重启该容器。参考文档:https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/
PreStop 脚本:一种容器钩子。该钩子在容器被删除前触发,其所对应的 hook handler 必须在删除该容器的请求发送给 Docker daemon 之前完成。在该钩子对应的 hook handler 完成后不论执行的结果如何,Docker daemon 会发送一个 SGTERN 信号量给 Docker daemon 来删除该容器。参考文档:https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/
(适用于有状态应用)设置持久化存储。
启用持久化存储后,可以保证应用升级或迁移时,实例数据不丢失。
说明:设置持久化存储后,系统会为您购买文件存储服务(NAS),按实际使用量付费,详细收费标准请参考 NAS 价格说明。
- 存储类型:文件存储服务(即 NAS,面向阿里云 ECS 实例、HPC 和 Docker 的文件存储服务)。提供标准的文件访问协议,您无需对现有应用做任何修改,即可使用具备无限容量及性能扩展、单一命名空间、多共享、高可靠和高可用等特性的分布式文件系统。
- 存储服务类型:SSD 性能型。使用 SSD 作为存储介质,为应用的工作负载提供高吞吐量与 I/OPS、低时延的存储性能。
- 挂载目录:选择 NAS 容器的挂载路径,用于对容器里的目录进行持久化存储。
设置完成后,单击下一步:应用访问设置。
(可选)在应用访问设置页面开启负载均衡设置,然后设置私网/公网 SLB 端口、容器端口和网络协议。
负载均衡是 TCP/UDP 设置。可以配置多个端口映射,用于多端口监听。
- 私网负载均衡:保证同 VPC 内都可访问该应用。
- 公网负载均衡:设置公网负载均衡后,系统会为该应用自动购买一个公网 SLB 服务,保证该应用能被公网访问。
说明:负载均衡按使用量计费,购买后的 SLB 信息可以在负载均衡控制台查看。
负载均衡参数说明:
- 负载均衡端口:指的是私网/公网负载均衡前端端口,通过该端口访问应用。如 Nginx 默认端口为 80。
- 容器端口:进程监听的端口。一般由程序定义,例如:Web 服务默认使用 80/8080 端口,MySQL 服务默认使用 3306 端口等。容器端口可以和 SLB 设置相同的端口。
- 网络协议:可选 TCP 或 UDP 协议。
(可选)设置 HTTP 流量转发策略。
当您选择用于创建无状态应用的镜像,例如官方镜像,且符合如下场景时,需要配置 HTTP 流量转发策略。
- 单应用或多应用有相同域名不同路径流量转发需求
- 单应用或多应用有不同域名流量转发的需求(不同域名解析的访问 IP 是同一个)
- 灰度发布的流量转发需求
设置应用发布地址。
- 地址类型:公网或私网。
- 新建/复用发布 IP:如果选择新建,则系统会生成 SLB 的 IP;如果选择复用已有,则在发布 IP列选择一个已有的 SLB IP。
- 发布端口:设置该 SLB 的端口。
- 网络协议:默认为 HTTP,不可配置。
设置应用访问规则。
- 域名:流量转发的匹配域名。由英文字母、数字、中划线“-”和点“.”组成,域名不区分英文大小写,不支持泛域名定义。
- Path:流量转发的匹配路径。长度限制为 1~80 个字符。path 以’/‘开头,后面由字母,数字,’-‘、’/‘、 ‘.’、’%’、‘?’、’#’、’&’、‘_’、这些字符的0个或多个组成。
- 容器端口:应用进程监听的端口。
设置完成后,单击确认创建。
结果验证
应用创建可能需要几分钟,创建过程中,可以通过变更流程问题排查指南跟踪创建的过程。创建完成后,返回应用详情页面查看基本信息中应用状态是否为运行正常。
EDAS 自带 Kubernetes 集群应用无需部署,创建成功即发布成功了。
相关文档
- 创建 Kubernetes 集群
- 通过 WAR/JAR 包发布 Kubernetes 应用
- 发布 Kubernetes 应用案例
- 通过模板发布 Kubernetes 应用
- 上传本地镜像
- 制作应用容器 Docker 镜像
相关产品
-
企业级分布式应用服务 EDAS
企业级分布式应用服务(Enterprise Distributed Application Service, 简称 EDAS)以阿里巴巴中间件团队多款久经沙场的分布式产品作为核心基础组件,面向企业级云计算市场提供高可用分布式解决方案,是阿里巴巴企业级互联网架构解决方案的核心产品。EDAS 充分利用阿里云的资源管理和服务体系,引入阿里巴巴中间件整套成熟的分布式产品,帮助企业级客户轻松构建大型分布式应用服务系统。
-
Serverless 应用引擎
Serverless 应用引擎(Serverless App Engine,简称 SAE) 让您无需管理和维护集群与服务器,即可快速创建应用。使用 SAE,您可以专注于设计和构建应用程序,而不用管理运行应用程序的基础设施。您只需为部署在 SAE 上的应用所实际使用的 CPU 和内存资源量进行按需付费,不用为闲置的资源付费。
-
应用配置管理 ACM
应用配置管理(Application Configuration Management,简称 ACM),是一款在分布式架构环境中对应用配置进行集中管理和推送的工具类产品。基于该产品,您可以在微服务、DevOps、大数据等场景下极大地减轻配置管理的工作量,增强配置管理的服务能力。
以上内容是否对您有帮助?
在文档使用中是否遇到以下问题
-
内容错误
-
更新不及时
-
链接错误
-
缺少代码/图片示例
-
太简单/步骤待完善
-
其他
-
内容错误
-
更新不及时
-
链接错误
-
缺少代码/图片示例
-
太简单/步骤待完善
-
其他
更多建议
匿名提交感谢您的打分,是否有意见建议想告诉我们?
感谢您的反馈,反馈我们已经收到
文档反馈
鼠标选中内容,快速选择问题
选中存在疑惑的文档内容,即可生成 截图进行反馈,我们会跟进处理。
文档反馈