Board logo

标题: 工作流workflow任务调度工具argo(1) [打印本页]

作者: look_w    时间: 2019-5-16 14:35     标题: 工作流workflow任务调度工具argo(1)

argo简介和原理

argo是一个基于 kubernetes CRD(自定义资源) 实现的一个 Workflow(工作流) 开源工具,基于 kubernetes 的调度能力实现了工作流的控制和任务的运行。

argo官网
github源码地址

一种资源就是Kubernetes API中的一个端点,它存储着某种API 对象的集合。
例如,内建的pods资源包含Pod对象的集合。
自定义资源CRD是用来扩展kubernetes的功能的,可以自定义一些api的实现。
在一个运行中的集群内,自定义资源可以通过动态注册出现和消失,集群管理员可以独立于集群本身更新自定义资源。
一旦安装了自定义资源,用户就可以通过kubectl创建和访问他的对象,就像操作内建资源pods那样。
如下就是一个自定义资源的例子:

例如,如果将以下的CRD保存到resourcedefinition.yaml中:
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  # name must match the spec fields below, and be in the form: <plural>.<group>
  name: crontabs.stable.example.com
spec:
  # group name to use for REST API: /apis/<group>/<version>
  group: stable.example.com
  # version name to use for REST API: /apis/<group>/<version>
  version: v1
  # either Namespaced or Cluster
  scope: Namespaced
  names:
    # plural name to be used in the URL: /apis/<group>/<version>/<plural>
    plural: crontabs
    # singular name to be used as an alias on the CLI and for display
    singular: crontab
    # kind is normally the CamelCased singular type. Your resource manifests use this.
    kind: CronTab
    # shortNames allow shorter string to match your resource on the CLI
    shortNames:
    - ct


创建它:

kubectl create -f resourcedefinition.yaml

    1

然后一个新的区分命名空间的RESTful API 端点被创建了:

/apis/stable.example.com/v1/namespaces/*/crontabs/...

    1

然后可以使用此端点URL来创建和管理自定义对象。 这些对象的kind就是你在上面创建的CRD中指定的CronTab对象。

自定义资源是对Kubernetes API的扩展,kubernetes中的每个资源都是一个API对象的集合,例如我们在YAML文件里定义的那些spec都是对kubernetes中的资源对象的定义。

Kubernetes1.6版本中包含一个内建的资源叫做CRD(CustomResourceDefinition),可以用它来创建自定义资源,但该资源在kubernetes1.7中版本已被TRD(ThirdPartyResource)取代。在1.8版本中又启用了CustomResourceDefinition。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0