job资源对象

Job资源对象
服务类的Pod容器:RC、RS、DS、Deployment.
工作类的Pod容器:Job--->执行一次,或者批量执行处理程序,完成之后推出容器。
[[email protected] ~]# cat job.yaml
kind: Job
apiVersion: batch/v1
metadata:
name: test-job
spec:
template:
metadata:
name: test-job
spec:
containers:

  • name: hello
    image: busybox
    command: ["echo","hello k8s job!"]
    restartPolicy: Never
    [[email protected] ~]# kubectl get pod
    NAME READY STATUS RESTARTS AGE
    test-job-qgc6p 0/1 Completed 0 55s
    [[email protected] ~]# kubectl logs test-job-qgc6p
    hello k8s job!
    PS:注意,如果容器内执行任务有误,会根据容器的重启策略操作容器,不过这里的容器重启策略只能是:Never、OnFailure
    提高Job的执行效率
    我们可以在Job.spec字段下加上parallelism选项。表示同时运行多少个Pod执行任务
    我们可以在Job.spec字段下加上completions选项。表示总共需要完成Pod的数量。
    [[email protected] ~]# cat job.yaml
    kind: Job
    apiVersion: batch/v1
    metadata:
    name: test-job
    spec:
    completions: 8 //总共需要完成多少个Pod
    parallelism: 2 //同时运行几个pod
    template:
    metadata:
    name: test-job
    spec:
    containers:
  • name: hello
    image: busybox
    command: ["echo","hello k8s job!"]
    restartPolicy: OnFailure
    如何定时执行Job
    kind: CronJob
    apiVersion: batch/v1beta1
    metadata:
    name: hello
    spec:
    schedule: "/1 *"
    jobTemplate:
    spec:
    template:
    spec:
    containers:
    • name: hello
      image: busybox
      command: ["echo","hello cronjob!"]
      restartPolicy: OnFailure
      [[email protected] ~]# kubectl apply -f cronjob.yaml
      [[email protected] ~]# kubectl get cronjobs.batch
      NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
      hello /1 * False 0 47s 51s
      [[email protected] ~]# kubectl logs hello-1579053480-vpm6t
      hello cronjob!
      此时查看Pod的状态,会发现,每分钟都会运行一个新的Pod来执行命令规定的任务。
      练习:
      规定2020年1月15号上午十点五分运行上面的crontab任务。
      [[email protected] ~]# cat cronjob.yaml
      kind: CronJob
      apiVersion: batch/v1beta1
      metadata:
      name: hello
      spec:
      schedule: "5 10 15 1 3"
      jobTemplate:
      spec:
      template:
      spec:
      containers:
    • name: hello
      image: busybox
      command: ["echo","hello cronjob!"]
      restartPolicy: OnFailure
      这时会发现,如果规定具体时间,可能并不会执行任务。
      [[email protected] ~]# kubectl api-versions //查看api版本
      添加apiVersion库。
      [[email protected] ~]# vim /etc/kubernetes/manifests/kube-apiserver.yaml

//在yaml文件中添加

  • --runtime-config=batch/v2alpha1=true

然后重启kubelet服务,重新识别api yaml文件内容即可。
//查看api版本库
[[email protected] ~]# kubectl api-versions
PS:注意,此时任然不能正常运行指定时间的job,这时因为k8s官方在cronjob这个资源对象的支持中还没有完善此功能。还待开发。
跟job资源一样在cronjob.spec.jobTemplate.spec下同样支持并发Job参数:parallelism,也支持完成Pod的总数参数:completions

原文地址:https://blog.51cto.com/13997536/2467111

时间: 2024-11-01 14:30:27

job资源对象的相关文章

U3D 场景切换时 脚本对象,GO对象,资源对象的问题

脚本对象:在LUA中写了一个actor类,它封装了角色逻辑,引用了一个GO. GO对象:通过 GameObject.Instantiate(资源对象)生成的. 资源对象:制作好的模型prefab. 在场景切换时: actor是逻辑控制的,可以销毁也可以不销毁.销毁时可以手动销毁它使用的GO,也可以不手动销毁而坐等U3D在场景切换时销毁. GO对象是挂在场景上的(也即hierachy层级),如果不设置为 dontdestroyonload,则GO会在场景切换时被U3D销毁.这时我们的actor只剩

资源对象的池化, java极简实现,close资源时,自动回收

在java程序中对于资源,例如数据库连接,这类不能并行共享的资源对象,一般采用资源池的方式进行管理. 资源池一般要实现 1)获取资源对象 getObject():   从资源池中取出对象 2) returnObject() :   资源用完以后,将资源放回对象池 3) 资源对象(代理)调用close()方法时, 资源返回对象池.  对于有close方法的资源,一般是采用此方式. 以下是一个非常简单的资源对象池的实现 public class SimplePool<T> { // 回收资源的方法

Kubernetes 资源对象的理解和定义

Kubernetes里的所有资源对象都可以采用yaml或者JSON格式的文件来定义或描述,下面是一个简单的Pod资源定义文件: apiVersion: v1 kind: Pod metadata: name: myweb labels: name: myweb spec: containers: - name: myweb image: kubeguide/tomcat-app: v1 ports: - containerPort: 8080 env: - name: MYSQL_SERVICE

Kubernetes 资源对象

概述 我将它们简单的分类为以下几种资源对象: 类别 名称 资源对象 Pod.ReplicaSet.ReplicationController.Deployment.StatefulSet.DaemonSet.Job.CronJob.HorizontalPodAutoscaling.Node.Namespace.Service.Ingress.Label.CustomResourceDefinition 存储对象 Volume.PersistentVolume.Secret.ConfigMap 策

k8s资源对象的升级、回滚、扩容、缩容

一.资源创建的方式之一,命令的方式创建资源,理解命令运行之后的动作,通过查看资源的方式,总结Pod名称的由来. 当我们执行创建资源的命令后,deployment这个控制器会通过replicaset控制器去管理pod,下面通过一个实例来分析,当我们执行创建资源的命令后,k8s都做了些什么(通过其NAME即可发现规律)? 运行一个deployment [[email protected] ~]# kubectl run test01 --image=nginx:latest --replicas=2

k8s核心资源对象& NameSpace(指定版本回滚)

k8s核心的资源对象: Pod:是运行以及调度的原子单位,也就是k8s中最小的资源单位,同一个pod可以同时运行多个container,多个container之间共享:(UTS(主机名和域名),IPC(消息队列和共享内存),NET(网络栈,端口等),namespace(名称空间)),但USR(用户和组),MNT(挂载点),PID(进行编号)是相互隔离的.pod有两种类型的pod:一类是由控制器控制的pod,一类是自主式pod(不受控制器管理,自己管理自己) Deployment:最常见的pod控

Kubernetes 资源对象之DaemonSet

DaemonSet是在Kubernetes1.2 版本新增的一种资源对象 DaemonSet能够让所有(或者一些特定)的Node节点仅运行一份Pod.当节点加入到kubernetes集群中,Pod会被(DaemonSet)调度到该节点上运行,当节点从kubernetes集群中被移除,被(DaemonSet)调度的Pod会被移除,如果删除DaemonSet,所有跟这个DaemonSet相关的pods都会被删除. 在使用kubernetes来运行应用时,很多时候我们需要在一个区域(zone)或者所有

k8s之Labels,Daemonset,Job资源对象

Label(标签) 我们为什么要使用label呢?当相同类型的资源对象越来越多,为了更好的管理,才按照标签分为一个小组,为的是提升资源的管理效率. lable是附着到object上(例如pod)的键值对.可以在创建object的时候指定,也可以在object创建后随时指定.Labels的值对系统本身并没有什么含义,只是对用户才有意义. "labels": { "key1" : "value1", "key2" : "

K8s资源对象的基本管理(升级、回滚、扩容、缩容)

博文大纲:一.资源创建二.解决客户端无法访问k8s内部pod所运行的服务三.搭建私有仓库,并自定义镜像四.版本扩容.缩容五.服务的升级与回滚 一.资源创建 本次博文主要介绍如何使用命令行的方式创建资源! [[email protected] ~]# kubectl run test --image=nginx:latest --replicas=5 //基于httpd的镜像创建一个deployment类型的控制组,名称为test,并指定副本数量为5 [[email protected] ~]#

Pod资源对象

Deployment,Service,Pod是k8s最核心的3个资源对象. Deployment:最常见的无状态应用的控制器,支持应用的扩缩容,滚动更新等操作. Service:为弹性变动且存在生命周期的Pod对象提供了一个固定的访问接口,用于服务发现和服务访问. Pod:是运行容器以及调度的最小单位.同一个Pod可以同时运行多个容器,这些容器共享NET,UTS,IPC.除此之外还有USER,PID,MOUNT. ReplicationController:用于确保每个Pod副本在任意时刻都能满