阿里云容器服务Kubernetes集群支持通过界面创建Job类型的应用。本例中将创建一个Job类型的busybox应用,并演示任务(Job)应用的特性。
前提条件
您已成功创建一个Kubernetes集群。参见创建Kubernetes专有版集群。
背景信息
Job负责批量处理短暂的一次性任务(short-lived one-off tasks),即仅执行一次的任务,它保证批处理任务的一个或多个Pod成功结束。
Kubernetes支持以下几种Job:
-
非并行Job:通常创建一个Pod直至其成功结束。
-
固定结束次数的Job:设置
.spec.completions
,创建多个Pod,直到.spec.completions
个Pod成功结束。 -
带有工作队列的并行Job:设置
.spec.Parallelism
但不设置.spec.completions
,当所有Pod结束并且至少一个成功时,Job就认为是成功。 -
固定结束次数的并行Job:同时设置
.spec.completions
和.spec.Parallelism
,多个Pod同时处理工作队列。
根据.spec.completions
和.spec.Parallelism
的设置,可以将Job划分为以下几种模式:
说明
本例中创建的任务属于固定结束次数的并行Job。
Job类型 |
使用示例 |
行为 |
Completions |
Parallelism |
一次性Job |
数据库迁移 |
创建一个Pod直至其成功结束 |
1 |
1 |
固定结束次数的Job |
处理工作队列的Pod |
依次创建一个Pod运行直至Completions个成功结束 |
2+ |
1 |
固定结束次数的并行Job |
多个Pod同时处理工作队列 |
依次创建多个Pod运行直至Completions个成功结束 |
2+ |
2+ |
并行Job |
多个Pod同时处理工作队列 |
创建一个或多个Pod直至有一个成功结束 |
1 |
2+ |
操作步骤
-
登录容器服务管理控制台。
-
在控制台左侧导航栏,单击集群。
-
在集群列表页面,单击目标集群名称或者目标集群右侧操作列下的详情。
-
在集群管理页左侧导航栏,选择工作负载 > 任务。
-
在任务页面,单击使用镜像创建。
配置项
描述
应用名称
设置应用的名称。
类型
设置类型为任务(Job)。
标签
为该应用添加一个标签,标识该应用。
注解
为该应用添加一个注解(Annotation)。
时区同步
容器与节点是否使用相同的时区。
-
设置容器配置。
说明
您可为应用的Pod设置多个容器。
-
设置容器的基本配置。
配置项
描述
镜像名称
选择所需镜像。
-
您可以单击选择镜像,选择所需的镜像并单击确定。本例中为官方Nginx镜像,可以在搜索页签中,选择Docker镜像,然后在文本框中输入nginx进行搜索。
-
容器镜像服务:在容器镜像服务页签中,可以选择托管在容器镜像服务ACR中的镜像。需要选择镜像所属地域,以及镜像服务实例。关于ACR的更多信息,请参见什么是容器镜像服务ACR。
说明
您可以在容器镜像服务页签,根据名称搜索托管在容器镜像服务ACR中的镜像。
-
Docker官方镜像:在Docker官方镜像页签中,可以选择Docker官方提供的容器镜像。
-
用户收藏:在用户收藏页签中,可以选择您收藏的Docker官方镜像。
-
搜索:在搜索页签中,可以分别在ACR的特定地域和Docker官方镜像中搜索容器镜像。
-
-
您还可以填写私有镜像。填写的格式为
domainname/namespace/imagename:tag
。
镜像Tag
-
您可以单击选择镜像Tag选择镜像的版本。若不指定,默认为最新版。
-
ACK支持以下三种镜像拉取策略(imagePullPolicy):
-
优先使用本地镜像(IfNotPresent):如果本地有该镜像(之前拉取过该镜像至宿主机中),则使用本地镜像,本地不存在时拉取镜像。
-
总是拉取镜像(Always):表示每次部署或扩容都会从容器镜像服务重新拉取镜像,而不会从本地拉取镜像。为了提高效率,容器服务会对镜像进行缓存。部署时,如果发现镜像Tag与本地缓存的一致,则会直接复用而不重新拉取。所以,如果您基于上层业务便利性等因素考虑,在做代码和镜像变更时没有同步修改Tag,就会导致部署时仍然使用本地缓存内旧版本镜像。而勾选该选项后,会忽略缓存,每次部署时重新拉取镜像,确保使用的始终是最新的镜像和代码。
-
仅使用本地镜像(Never):仅使用本地镜像。
说明
当您选中镜像拉取策略时,默认不设置镜像拉取策略。
-
设置镜像密钥
-
单击设置镜像密钥,您可以实现免密拉取镜像。具体操作,请参见使用免密组件拉取容器镜像。
-
若您在使用私有镜像时,您可使用镜像密钥,保障镜像安全。具体配置,请参见使用镜像密钥创建应用。
资源限制
可指定该应用所能使用的资源上限,包括CPU和内存两种资源,防止占用过多资源。其中,CPU资源的单位为millicores,即一个核的千分之一;内存的单位为Bytes,可以为Gi、Mi或Ki。
所需资源
即为该应用预留资源额度,包括CPU和内存两种资源,即容器独占该资源,防止因资源不足而被其他服务或进程抢占资源,导致应用不可用。
容器启动项
-
选择stdin,将控制台输入发送到容器。
-
选择tty将标准输入控制台作为容器的控制台输入。
特权容器
-
选择特权容器,则privileged=true,开启特权模式。
-
不选择特权容器,则privileged=false,关闭特权模式。
初始化容器
勾选该项,表示创建一个Init Container,Init Container包含一些实用的工具,更多信息,请参见Init Container。
端口
设置主机端口和容器端口,支持TCP/UDP协议。
-
可选:配置环境变量。
支持通过键值对的形式为Pod配置环境变量。用于给Pod添加环境标志或传递配置等,更多信息,请参见Pod variable。
-
可选:配置生命周期。
您可以为容器的生命周期配置启动执行、启动后处理和停止前处理。具体参见配置生命周期。
-
启动执行:为容器设置预启动命令和参数。
-
启动后处理:为容器设置启动后的命令。
-
停止前处理:为容器设置预结束命令。
-
可选:配置数据卷信息。
支持配置本地存储和云存储。
-
本地存储:支持主机目录(hostpath)、配置项(configmap)、保密字典(secret)和临时目录,将对应的挂载源挂载到容器路径中。更多信息参见volumes。
-
云存储:支持云盘/NAS/OSS三种云存储类型。
-
-
可选:配置日志服务,您可进行采集配置和自定义Tag设置。
说明
请确保已部署Kubernetes集群,并且在此集群上已安装日志插件。
您可对日志进行采集配置:
-
日志库:即在日志服务中生成一个对应的logstore,用于存储采集到的日志。
-
容器内日志路径:支持stdout和文本日志。
-
stdout:stdout表示采集容器的标准输出日志。
-
文本日志:您可收集容器内指定路径的文本日志,同时支持通配符的方式。
-
您还可设置自定义tag,设置tag后,会将该tag一起采集到容器的日志输出中。自定义tag可帮助您给容器日志打上tag,方便进行日志统计和过滤等分析操作。
-
-
-
完成容器配置后,单击下一步。
-
进行高级设置。
您可进行任务配置。
参数
说明
成功运行的Pod数
即completions,指定job需要成功运行Pods的数量。默认值为1。
并行运行的Pod数
即parallelism,指定job在任一时刻应该并发运行Pod的数量。默认值为1。
超时时间
即activeDeadlineSeconds,指定job可运行的时间期限,超过时间仍未结束,系统将会尝试进行终止。
重试次数
Pod执行失败后,尝试重建Pod的次数。默认是6次,每次失败后重试会有延迟时间,该时间是指数级增长,最长时间是6分钟。
重启策略
仅支持不重启(Never)和失败时(OnFailure)。
-
最后单击创建。
-
创建成功后,默认进入创建完成页面,会列出应用包含的对象。
您可以单击查看应用详情,进入任务详情页面。本例中按照任务定义,一次性并行创建2个Pod。
等待一段时间,所有容器组创建完毕。
-
单击工作负载 > 任务,在任务页面,您可看到该任务已显示完成时间。
说明
若任务未创建完毕所有容器组,任务不会显示完成时间。
相关操作
在左侧导航栏单击集群,单击目标集群名称或目标集群操作列下的详情,选择工作负载 > 任务,单击目标应用名称或目标应用操作列下的详情,在应用详情页面您可以伸缩、查看Yaml、刷新应用。
-
伸缩:在应用详情页面单击伸缩,您可以修改所需容器组数量。
-
查看Yaml:在应用详情页面单击查看Yaml,您可以更新、下载、另存为YAML文件。
-
刷新:在应用详情页面单击
图标,您可以刷新应用。
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家
阿里云企业补贴进行中: 马上申请
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠
转转请注明出处:https://www.yunxiaoer.com/168949.html