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。 |