前提条件: 从https://cubepaas.com使用微信扫一扫或者GitHub账号登录,并创建一个你的项目。
部署入口
在左侧菜单导航栏中,点击【工作负载】,进入工作负载列表页,点击右上角【部署服务】,如图所示:
第一步:配置基本信息
- 填写基本信息。用户可以根据需求填写部署的基本信息。
名称:为创建的工作负载起一个简洁明了的名称,便于浏览和搜索。名称应包含 1-63个字符,可包含数字、小写英文字符或连字符(-)。
类型:下拉选择工作负载的类型。详见工作负载
命名空间:namespace可以提供独立的命名空间,因此可以实现部分的环境隔离。点击图标按钮可切换下拉选择命名空间或创建新的命名空间。
Docker镜像:镜像的选择操作如下:
(1) 首先下拉选择镜像的来源,有Dockerhub、本项目仓库和镜像地址;
(2) 其次选择镜像,镜像选择有两种方法,一是在输入框输入镜像的完整信息,包括镜像的Tag,例如:nginx:latest ; 二是点击右侧的图标下拉选择镜像,下拉列表如下:
在下拉镜像列表里可搜索镜像,点击即可选中该镜像并查看该镜像的详细信息,该过程会有一段加载时间,请耐心等待。
镜像详情展示了该镜像的描述信息、来源、端口和tag。注意:当镜像来源选择为镜像地址或者自定义输入镜像名时,按回车键可直接搜索该镜像并展示详细信息。
更新策略:更新策略包括滚动更新和删除pod时更新。
● 滚动升级将逐步用新版本的实例替换旧版本的实例,升级的过程中,业务流量会同时负载均衡分布到新老的实例上,因此业务不会中断。
● 删除pod时更新,控制器不会自动更新pod,将会在pod被手动删除时,更新并替换pod实例。镜像拉取策略:为你的镜像更新选择一个操作策略,提供总是拉取、从不、不存在则拉取三种策略,默认的镜像拉取策略是总是拉取。
• 总是拉取:需要每次拉取仓库中的镜像。
• 不存在则拉取:默认使用本地镜像,若本地无该镜像则远程拉取该镜像;
• 从不:只使用本地镜像,若本地没有该镜像将报异常。 - 域选择
选择将你的应用部署在什么地方,我们提供阿里云和IDC两种选择,当你选择自动时,将随机部署到阿里云或者IDC。其次将填写调度策略,设置为“必须”则该应用只能运行在所选择的域;设置为“首选”则该应用优先运行在所选择的域,该域上无法运行时也能转到另一个域。 - 容器规格
为了实现集群的资源被有效调度和分配同时提高资源的利用率,平台采用了 预留和限制两种限制类型对资源进行分配。
• 容器规格:提供2X、4X、8X、16X和32X快捷选择,如不选择默认2X配置;根据实际需要,可自定义容器规格,
• 资源预留:即为该应用预留资源额度,包括 CPU 和内存两种资源,即容器独占该资源,防止因资源不足而被其他服务或进程争占资源,导致应用不可用。
• 资源限制:可指定该应用所能使用的资源上限,包括 CPU 和内存两种资源,防止占用过多资源。 - 端口映射
即设置容器的访问策略,指定容器需要暴露的端口并自定义端口名称,端口协议可以选择 TCP 和 UDP。 - 数据卷
支持添加新的PVC、使用现有PVC、映射节点目录、secret卷、configmap卷。可自定添加多个卷,将对应的挂载源挂载到容器路径中,并为每个容器路径设置权限。点击添加数据卷,选择卷类型填写即可,再次点击卡片可进行卷的编辑和删除。
第二步:监控告警和弹性伸缩
- workload告警
关闭workload告警:告警触发条件和选择告警组处于不可操作状态。
开启workload告警:选择告警触发的条件,选择告警组,如没所需告警组可添加新的告警组。 - 工作负载伸缩/告警
点击添加工作负载伸缩/告警即可,当开启弹性伸缩时,我们为工作负载伸缩告警提供CPU和内存的快速弹性伸缩,会根据第一步的容器规格计算对应的比例值填入选项。注意:当容器规格设置为自定义无限制时,快速弹性伸缩将不可用。
注意:必须为当前集群开启监控,否则工作负载伸缩/告警将不可配置。
以CPU为例,配置如下所示:
弹性伸缩:只有创建的工作负载类型为有状态StatefulSet和无状态Deployment时才有弹性伸缩,其他类型没有弹性伸缩
• 开启弹性伸缩,需填写HPA最大最小副本数,最大副本数必须大于最小副本数,以及在工作负载配置项询问是否加入伸缩;
• 关闭弹性伸缩,将不再询问是否加入伸缩,页面不显示配置伸缩项。
弹性伸缩开启的前提:开启集群监控,且开启弹性伸缩。
监控项:下拉选择告警或伸缩需要监测的监控项。新增工作负载伸缩监控项时不允许重名。
加入伸缩:开启或关闭加入伸缩,并填写触发伸缩阈值。触发伸缩阈值不能是负数和小数。工作负载告警:开启或关闭工作负载告警
• 关闭工作负载告警:告警配置项不显示;
• 开启工作负载告警:下拉选择所需告警组并填写告警组名称(可下拉创建新的告警组,新增的告警组同步【告警】);选择触发的条件并填写触发的阈值;选择持续时间。
注意:新增告警组时,必须先在集群下设置好通知方式。 -
自定义监控/告警
注意:必须为集群开启监控,否则自定义监控/告警不可配置。
ⅰ.未加入伸缩和自定义监控告警的图表如下所示:
图表名称:为图表起一个简洁明了的名称,便于用户浏览和搜索。
集群名称应包含 1-63个字符,可包含数字、小写英文字符或连字符(-),支持中文字符。表达式:默认没有图表数据。
必须先选择workloadID才能workload下的选择表达式,下拉选择来自于同一个namespaease下的workload,可以选择其他workloadID和自己的workloadID,自己的workloadID中文显示:请选择workload;
表达式可以输入和下拉选择,输入支持运算,只能选择同一个workload下的表达式进行运算,选择完表达式后,右边区域将会出现对应表达式的图表数据。出现图表数据的必备条件:
1.同一namespace下的工作负载必须将端口暴露给prometheus以获取监控指标。
2.为工作负载(端口暴露给prometheus)添加CMD命令:-nginx.scrape-uri http://负载名称-nodeport/stub_statusⅱ. 开启加入伸缩后的图标,如下图所示:
开启加入伸缩后,填写触发伸缩阈值,图表出现伸缩图表数据,并在Y轴显示触发阈值。ⅲ. 开启自定义监控告警如下所示:
选择告警组和触发告警阈值以后,图表将在触发告警阈值的地方出现图表数据。容器端口:设置端口暴露给prometheus,支持http和https协议
第三步:自定义配置
- 命令
可自定义容器的启动的运行命令 - 环境变量
环境变量是指容器运行环境中设定的一个变量, 以添加键值对的形式来设置环境变量。
注意:变量名只能包含大小写字母、数字及下划线,并且不能以数字开头。 - 节点调度
• 指定节点运行所有Pods。
下拉选择当前集群节点。
• 为每一个Pod自动选择符合调度规则的节点
通过 Node 节点的 Label 标签进行设置,节点调度支持必须、最好、首选。 -
健康检查
用户可以为容器设置健康检查探针来检查容器的健康状态。因为 kubelet 会根据用户定义的这个健康检查探针的返回值,来决定容器的状态。
• 存活状态检查(liveness):用于检测容器是否存活,kubelet 根据用户定义的周期进行周期性地对容器的健康状态进行检查,如果检查失败,集群会重启,若检查成功则不执行任何操作。
• 就绪状态检查(readiness):用于检测结果的成功与否,检测容器是否准备好开始处理用户请求。监测到容器实例不健康时,将工作负载设置为未就绪状态,业务流量不会导入到该容器中。HTTP请求
即向容器发送一个 HTTPget 请求,支持的参数包括:
- 路径:访问 HTTP server 的路径
- 端口:容器暴露的访问端口或端口名,端口号必须介于 1~65535。
HTTPS请求
即向容器发送一个 HTTPSget 请求,支持的参数包括:
- 路径:访问 HTTPS server 的路径
- 端口:容器暴露的访问端口或端口名,端口号必须介于 1~65535。
TCP端口检查
即向容器发送一个 TCP Socket,kubelet 将尝试在指定端口上打开容器的套接字。 如果可以建立连接,容器被认为是健康的,如果不能就认为是失败的。支持的参数包括:
- 端口:容器暴露的访问端口或端口名,端口号必须介于 1~65535。
状态码检查
通过在容器中执行探针检测命令,来检测容器的健康情况。支持的参数包括:
- 命令行:用于检测容器健康情况的探测命令。
- 标签/注释
为工作负载设置标签,可通过标签来识别、组织和查找资源对象,selector 可以根据标签的键值对来调度资源。 - 启用共享命名空间
选择是否将命名空间共享。
第四步:完成部署
点击【部署】完成工作负载的创建。