文档章节

在Serverless Kubernetes集群中轻松运行Argo Workflow

阿里云官方博客
 阿里云官方博客
发布于 11/18 11:49
字数 736
阅读 10
收藏 0

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

导读

Argo是一个基于kubernetes实现的一个Workflow(工作流)开源工具,基于kubernetes的调度能力实现了工作流的控制和任务的运行。
目前阿里云容器服务ACK集群中已经支持工作流的部署和调度,这里我们介绍如果在ASK(Serverless Kubernetes)集群中使用Argo,无需预留节点资源池,即可灵活动态的运行工作流任务,并最大化节省用户的计算成本。

前置条件:

部署argo workflow controller

# ags install

# kubectl -n argo get pod
NAME                                   READY   STATUS    RESTARTS   AGE
argo-ui-5c5dbd7d75-hxqfd               1/1     Running   0          60s
workflow-controller-848cf55b64-6pzc9   1/1     Running   0          60s

# kubectl -n argo get configmap
NAME                            DATA   AGE
workflow-controller-configmap   0      4m55s

argo默认使用docker executor api,在serverless集群中我们需要切换成k8sapi才能正常工作。

# kubectl -n argo edit configmap workflow-controller-configmap
apiVersion: v1
kind: ConfigMap
...
data:
  config: |
    containerRuntimeExecutor: k8sapi

运行Hello-World Workflow示例

下面我们运行Hello-World example:https://github.com/argoproj/argo/blob/master/examples/hello-world.yaml

# ags submit https://raw.githubusercontent.com/argoproj/argo/master/examples/hello-world.yaml
Name:                hello-world-l26sx
Namespace:           default
ServiceAccount:      default
Status:              Pending
Created:             Fri Nov 15 14:45:15 +0800 (now)

# kubectl get pod
NAME                READY   STATUS      RESTARTS   AGE
hello-world-l26sx   0/2     Completed   0          88s

# ags list
NAME                STATUS      AGE   DURATION   PRIORITY
hello-world-l26sx   Succeeded   1m    1m         0

当我们需要使用大规格资源来运行workflow时,可以在workflow中给pod指定anntation。

注意此情况不要在container中指定大规格requests/limits,因为argo生成的pod中包含多个container,给单个container指定大规格的requests/limits会导致eci无法给pod分配匹配的资源,进而导致创建失败。我们推荐给pod指定ecs规格或者cpu/mem保证pod正常运行,如下。

apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  generateName: hello-world-
spec:
  entrypoint: whalesay
  templates:
  - name: whalesay
    metadata:
      annotations:
        k8s.aliyun.com/eci-instance-type : "ecs.ic5.3xlarge"
    container:
      image: docker/whalesay:latest
      command: [cowsay]
      args: ["hello world"]

结束

当运行结束后,可以清理workflow资源。

# ags delete hello-world-l26sx
Workflow 'hello-world-l26sx' deleted

# kubectl get pod
No resources found.

我们可以看到,因为ASK集群天然无需管理节点资源池,所有pod按需创建,很好的匹配了Argo工作流的任务形态,灵活动态的按需分配计算资源,更好的节省成本。

 

阅读原文

本文为云栖社区原创内容,未经允许不得转载。

© 著作权归作者所有

阿里云官方博客
粉丝 203
博文 2252
码字总数 5560474
作品 0
杭州
程序员
私信 提问
在Serverless Kubernetes集群中轻松运行Argo Workflow - 知乎

导读 Argo是一个基于kubernetes实现的一个Workflow(工作流)开源工具,基于kubernetes的调度能力实现了工作流的控制和任务的运行。 目前阿里云容器服务ACK集群中已经支持工作流的部署和调度,...

我是程序员
11/18
0
0
容器本地工作流引擎 - Argo

Argo 是一个开源的容器本地工作流引擎,用于在Kubernetes上完成工作。 Argo实现为Kubernetes CRD(自定义资源定义)。 定义工作流中每个步骤都是容器的工作流。 将多步骤工作流建模为一系列任...

匿名
2018/09/14
4.8K
2
云+社区技术沙龙——容器服务最佳部署与应用实践

活动简介: 从去年至今,容器、Kubernetes话题的热度就持续不减,有人说基于容器 +Kubernetes 的新型 PaaS 将会成为云计算的主流;有人说2017年是Kubernetes 的胜利之年。而包括谷歌、Azure...

极客邦Geekbang_Event
2018/06/14
40
0
云+社区技术沙龙——容器服务最佳部署与应用实践

活动简介: 从去年至今,容器、Kubernetes话题的热度就持续不减,有人说基于容器 +Kubernetes 的新型 PaaS 将会成为云计算的主流;有人说2017年是Kubernetes 的胜利之年。而包括谷歌、Azure...

极客邦Geekbang_Event
2018/06/14
19
0
工作流在Kubernetes集群中的实践

本文主要介绍如何在ACK上基于工作流引擎进行大规模基因测序工作。阿里云工作流引擎基于开源项目Argo实现,支持并发、循环、重试等多种执行策略。 1. 创建集群: 拿到集群测试域名;c84e9207b...

阚俊宝
06/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

学习记录 互联网项目---3(Ribben优化)

3.3 负载均衡策略 {服务名称}.ribbon.NFLoadBalancerRuleClassName=具体策略 service:#服务名 ribbon: NFLoadBalancerRuleClassName : com.netflix.loadbalancer.RandomRule ......

Pole丶逐
29分钟前
3
0
redis - 的线程模型

redis 的线程模型 redis 内部使用文件事件处理器 file event handler,这个文件事件处理器是单线程的,所以 redis 才叫做单线程的模型。它采用 IO 多路复用机制同时监听多个 socket,根据 so...

Canaan_
31分钟前
7
0
IT兄弟连 HTML5教程 使用盒子模型的浮动布局

虽然使用绝对定位可以实现页面布局,但由于调整某个盒子模型时其他盒子模型的位置并不会跟着改变,所以并不是布局的首选方式。而使用浮动的盒子模型可以向左或向右移动,直到它的外边缘碰到包...

老码农的一亩三分地
31分钟前
3
0
ubuntu上编译和使用easy_profiler对C++程序进行性能分析

本文首发于个人博客https://kezunlin.me/post/91b7cf13/,欢迎阅读最新内容! tutorial to compile and use esay profiler with c++ on ubuntu 16.04 <!--more--> Guide compile git clone h......

kezunlin
53分钟前
5
0
nginx master-worker进程工作原理

nginx的master-worker进程模型是其能够高性能的处理用户请求的原因之一,而且这里的每个worker进程都只会启动一个线程来处理用户请求。通常我们会将worker进程的数量设置得与我们的CPU数量一...

爱宝贝丶
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部