v2.1
v2.0
v1.0
  1. Release Notes
    1. Release Notes - 2.1.1最新
    1. Release Notes - 2.1.0
    1. Release Notes - 2.0.2
    1. Release Notes - 2.0.1
    1. Release Notes - 2.0.0
  1. 产品介绍
    1. 什么是 KubeSphere
    1. 平台功能
    1. 为什么选择 KubeSphere
    1. 架构说明
    1. 应用场景
    1. 名词解释
  1. 安装指南
    1. 安装说明
      1. 概览
      2. 网络防火墙配置
      3. 集群其它参数配置
    1. 在 Linux 快速安装 KubeSphere
      1. All-in-One 模式
      2. Multi-Node 模式
      3. 完整安装(开启所有功能组件)
    1. 在 Kubernetes 安装 KubeSphere
      1. 准备工作
      2. 在 Kubernetes 安装 KubeSphere
    1. 安装可插拔的功能组件
      1. 可插拔功能组件概览
      2. 安装应用商店
      3. 安装内置的 DevOps 系统
      4. 安装内置的日志系统
      5. 安装微服务治理组件(Service Mesh)
      6. 安装告警通知系统
      7. 安装 Metrics-server 开启 HPA
      8. 验证可插拔功能组件的安装
    1. 集群高可用配置安装
      1. 在青云安装 HA 集群
      2. 在华为云安装 HA 集群
      3. 持久化存储配置说明
    1. 相关工具与插件
      1. 安装内置 Grafana
      2. 访问 SonarQube 和 Jenkins 服务端
      3. 安装 Porter 负载均衡器插件
      4. 安装 QingCloud 负载均衡器插件
    1. 认证配置
      1. 接入 LDAP / AD 域账号(Beta)
    1. 集群运维
      1. 安装后添加新的存储类型
      2. 集群节点扩容
      3. 卸载
  1. 升级指南
    1. 升级必读
    1. All-in-One 升级
    1. Multi-node 升级
  1. 快速入门
    1. 入门必读
    1. 1. 多租户管理快速入门
    1. 2. 应用路由与服务示例
    1. 3. 创建 Wordpress 应用并发布至 K8s
    1. 4. 一键部署应用
    1. 5. 创建简单任务
    1. 6. 设置弹性伸缩 (HPA)
    1. 7. Source-to-Image
    1. 8. Binary-to-Image
    1. 9. 基于Spring Boot项目构建流水线
    1. 10. 图形化构建流水线
    1. 11. Bookinfo 微服务的灰度发布
    1. 12. 使用 Ingress-Nginx 进行灰度发布
    1. 13. 应用商店
  1. 管理员指南
    1. 多租户管理
      1. 多租户管理概述
      2. 角色权限概览
    1. 平台管理
      1. 企业空间管理
      2. 账号管理
      3. 平台角色
    1. 基础设施
      1. 服务组件
      2. 主机管理
      3. 存储类型
    1. 监控中心
      1. 监控概述
      2. 如何利用监控定位问题
      3. 集群状态监控
      4. 应用资源监控
      5. 监控策略 - 节点级别
      6. 监控消息 - 节点级别
    1. 平台设置
      1. 应用仓库
      2. 基于本地仓库搭建应用仓库部署Redis
      3. 上传应用到 KubeSphere 官方仓库
      4. 基于 GitHub 搭建自有应用仓库
      5. 邮件服务器
      6. 日志收集
      7. 添加 Fluentd 作为日志接收者
      8. 添加 Kafka 作为日志接收者
    1. 工具箱
      1. Web Kubectl
      2. 日志收集
    1. DevOps 配置
      1. 系统配置修改
      2. 上传镜像至 Harbor
      3. 流水线配置邮件服务器
      4. Jenkins 系统设置
    1. FAQ
      1. DevOps 运维FAQ
  1. 用户指南
    1. 应用
      1. 应用模板
      2. 自制应用
      3. 流量治理
      4. 熔断
    1. 工作负载
      1. 工作负载概述
      2. 部署
      3. 有状态副本集
      4. 守护进程集
      5. 任务
      6. 定时任务
      7. 设置健康检查器
      8. 工作负载管理
      9. 落盘日志收集
    1. 存储
      1. 存储概述
      2. 存储卷
      3. Local Volume 使用方法
    1. 网络与服务
      1. 服务管理
      2. 灰度发布
      3. 应用路由
    1. 监控告警
      1. 告警策略 - 工作负载级别
      2. 告警消息 - 工作负载级别
    1. 配置中心
      1. 密钥
      2. 配置
      3. 镜像仓库
    1. 项目设置
      1. 基本信息
      2. 成员角色
      3. 项目成员
      4. 外网访问
    1. DevOps 工程
      1. DevOps 工程概述
      2. 管理 DevOps 工程
      3. 流水线
      4. 凭证管理
      5. 添加代码仓库
      6. 访问 SonarQube 并创建 Token
      7. 设置自动触发扫描
      8. Jenkins Agent 说明
      9. 流水线常见问题
  1. 开发者指南
    1. Helm 应用开发
      1. 开发模板规范
      2. Helm 应用开发入门
    1. Source to Image(S2I) 自定义模版开发
      1. S2I 原理及流程介绍
      2. 自定义 S2I 模版
  1. API 文档
    1. API 文档
    1. 如何调用 API
    1. API 常用术语对照
    1. 监控指标说明
  1. 常见问题
    1. 安装常见问题
    1. 存储常见问题
    1. 控制台使用常见问题
    1. DevOps 常见问题
  1. 附录
    1. 部署 Ceph 存储服务端
    1. 部署 GlusterFS 存储服务端
    1. 安装 OpenEBS 创建 LocalPV 存储类型
    1. 云平台配置端口转发和防火墙
KubeSphere®️ 2020 All Rights Reserved.

创建任务计算圆周率

编辑

实际工作中,我们经常需要进行批量数据处理和分析,以及按照时间执行任务。可以在 KubeSphere 中使用容器技术完成,也就是使用 Job (任务) 和 CronJob (定时任务) 来执行。这样方便维护较为干净的执行环境,减少不同任务工具的相互干扰。同时可以在集群上按照任务要求和资源状况进行动态伸缩执行。

Job 负责批处理任务,即仅执行一次的任务。任务具有并发的特性,可以抽象成一个任务中的多个 Pod 并行运行,保证批处理任务的一个或多个 Pod 成功结束。平时也存在很多需要并行处理的场景,比如批处理程序,每个副本(Pod)都会从任务池中读取任务并执行,副本越多,执行时间就越短,效率就越高,类似这样的场景都可以用任务来实现。

目的

本文档以创建一个并行任务去执行简单的命令计算并输出圆周率到小数点后 2000 位作为示例,说明任务的基本功能。

前提条件

已创建了企业空间、项目和普通用户 project-regular 账号(该已账号已被邀请至示例项目),并开启了外网访问,请参考 多租户管理快速入门

视频教程

预估时间

约 15 分钟。

创建任务

  1. 以项目普通用户 project-regular 登录 KubeSphere 控制台,在所属项目的左侧菜单栏,选择 应用负载 → 任务,点击 创建任务

  1. 参考如下提示填写任务的基本信息,完成后点击 下一步
  • 名称:为创建的任务起一个简洁明了的名称,便于用户浏览和搜索,如 job-demo。
  • 别名:别名可以由任意字符组成,帮助您更好的区分资源,并支持中文名称。
  • 描述:简单介绍应用仓库的任务,让用户进一步了解该任务。

  1. 任务设置页中,通过设置 Job Spec 的四个配置参数来设置 Job 的任务类型,完成后点击 下一步

  2. Back Off Limit:输入 5,失败尝试次数,若失败次数超过该值,则 Job 不会继续尝试工作;如此处设置为 5 则表示最多重试 5 次。

  3. Completions:输入 4,标志任务结束需要成功运行的 Pod 个数,如此处设置为 4 则表示任务结束需要运行 4 个 Pod。

  4. Parallelism:输入 2,标志并行运行的 Pod 的个数;如此处设置为 2 则表示并行 2 个 Pod。

  5. Active Deadline Seconds:输入 300,指定 Job 可运行的时间期限,超过时间还未结束,系统将会尝试进行终止,且 ActiveDeadlineSeconds 优先级高于 Back Off Limit;如此处设置 300 则表示如果超过 300s 后 Job 中的所有 Pod 运行将被终止。

说明: 重启策略 (RestartPolicy) 指通过同一节点上的 kubelet 重新启动容器,支持 Never 或 OnFailure。RestartPolicy 表示当任务未完成的情况下:

  • Never:任务会在容器组出现故障时创建新的容器组,且故障容器组不会消失。
  • OnFailure:任务会在容器组出现故障时在其内部重启容器,而不是创建新的容器组。
  1. 下一步点击 添加容器镜像,镜像名输入 perl,然后按回车键或点击 DockerHub。

  1. 勾选 启动命令,依次添加如下四段命令(每一段命令以 "," 隔开),即让每一个 Job 执行输出圆周率小数点后 2000 位。如下设置完成后点击 ,然后选择 下一步
# 命令
perl,-Mbignum=bpi,-wle,print bpi(2000)

  1. 本示例暂不需要设置存储卷,可以跳过此步骤,点击 下一步,无需挂载存储,点击 下一步 → 创建,任务创建成功,可在任务列表页查看。

验证任务结果

  1. 点击该任务 job-demo 查看执行记录,可以看到任务执行的结果状态是 "已完成(4/4)",并且一共运行了 4 个 Pod,这是因为在第二步 Completions 设置为 4。

提示:若提示 “失败 (3/4)” 这是由于镜像创建较慢导致在指定的 "Active Deadline Seconds" 时间内没有完全创建,可点击重新执行继续该计算任务。

  1. 在任务详情页的 资源状态,可以查看任务执行过程中创建的容器组。由于 Parallelism 设置为 2,因此任务将预先并行地创建 2 个容器组,然后再继续并行创建 2 个容器组,任务结束时将创建 4 个容器组,

提示:在事件(Events)中也可以通过创建时间来验证以上 4 个容器组是在两个不同的时间点,两两并行开始执行创建任务的。

  1. 资源状态 页,展开其中任意一个容器组(Pod),点击 容器日志,即可进入容器查看 pi 容器中命令计算圆周率到小数点后 2000 位的输出结果。

至此,您已经熟悉了任务 (Job) 的基本功能使用,关于任务的各项参数释义详见 任务