K8S系列学习之Jobs实战

Kubernetes学习路上的那些事儿,很有必要分享出来

K8S系列学习之Jobs实战_第1张图片

 

什么是Jobs

此Jobs并不是“乔帮主”,也不是“养家糊口的工作”,而是k8s集群中的一种特殊的pod,即创建pod来执行一个具体的任务,可以是在某种情况下触发的任务,比如启动失败再次重新创建,也可以是执行一个具体任务,比如计算圆周率,完成任务后可根据参数设置删除此pod等等。

老习惯,上官网再瞧瞧“原汁原味”的定义,虽说可能有些拗口和理论化,但严谨啊。

K8S系列学习之Jobs实战_第2张图片

 

实验过程

实验准备:

这次实验环境还是选用了移动云云主机,且只有一个Master单节点,用于实验或学习足够了。

 

步骤一:编写Job的yaml文件。该yaml文件就叫job-test.yaml吧,详细代码如下:

apiVersion: batch/v1
kind: Job
metadata:
  name: pi
spec:
  template:
    spec:
      containers:
      - name: pi
        image: perl
        command: ["perl","-Mbignum=bpi","-wle","print bpi(2000)"]
      restartPolicy: Never
  backoffLimit: 3

代码的相关解释如下:

 

K8S系列学习之Jobs实战_第3张图片

步骤二:创建Job,观察Job的运行结果。如果运行正常,会输出圆周率小数点后2000位的运算结果。

kubectl apply -f job-test.yaml   //创建job
kubectl get job    //查看job
kubectl get pod   //查看该job关联的pod信息
kubectl logs pi-9wbnl  //查看job运算结果,pi-9wbnl是具体的pod名称

 

K8S系列学习之Jobs实战_第4张图片

当job任务完成后,pod状态显示为“Completed”,同时查看Job一直存在,实际的使用环境中,我们肯定是希望一个Job任务完成后,就释放资源,这才是Job的真正用武之地,否则使用一个pod也能干。

步骤三:调整Job参数,当任务完成后删除。为了让Job有用武之地,我们不妨来调整调整参数,这个参数就是“activeDeadlineSeconds”

 

 

K8S系列学习之Jobs实战_第5张图片

K8S系列学习之Jobs实战_第6张图片

按照预期的实验结果,Job执行成功后100秒,资源会被释放,至少Job的状态应该是 type: Failed 及 reason: DeadlineExceeded. 算是实验失败了,如果有高手知道原因,还请多多指导。

 

实验总结

此实验只是简单的演示了Job工作原理,其实还有很多更复杂的应用,比如Job的并行执行,处理Pod和容器失效,Job模式等等,在未来学习中争取分享出来。

 

你可能感兴趣的:(技术交流,kubernetes,centos,linux,云计算)