12-常见的控制器02(ds·jobs·cj)

一、ds控制器(DaemonSets)

1.什么是ds

​ ds的全称为DaemonSets,简称ds,表示守护进程。

​ 其特征就是在每个worker节点有且仅有一个Pod。

​ 其应用场景就是一些需要守护进程的案例,比如: zabbix-agent,node-exporter,filebeat等等。

2.实战案例

2.1编写资源清单

[root@master231 daemonsets]# cat 01-ds-xiuxian.yaml 
apiVersion: apps/v1
#控制器类型指定为DaemonSet
kind: DaemonSet
metadata:
  name: ds-xiuxian
spec:
  selector:
    matchLabels:
      apps: xiuxian
  template:
    metadata:
      labels:
        apps: xiuxian
    spec:
      containers:
        - name: c1
          image: registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1
          resources:
            limits:
              memory: 200Mi
            requests:
              cpu: 100m
              memory: 200Mi

2.2创建资源

[root@master231 daemonsets]# kubectl apply -f  01-ds-xiuxian.yaml 
daemonset.apps/ds-xiuxian created

2.3查看验证

设置了DS控制器后,会在每个worker节点创建一个副本

[root@master231 daemonsets]# kubectl get pods -o wide
NAME               READY   STATUS    RESTARTS   AGE   IP               NODE        NOMINATED NODE   READINESS GATES
ds-xiuxian-8bpqb   1/1     Running   0          5s    10.100.203.184   worker232   <none>           <none>
ds-xiuxian-n7zkt   1/1     Running   0          5s    10.100.140.116   worker233   <none>           <none>

二、jobs控制器

1.什么是jobs

官方说明:

https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/job/

​ 所谓的jobs,就是K8S用于完成一次性任务的资源类型。

​ 有点类似于Linux的at命令,表示只执行一次的任务,比如数据的全量备份,全量恢复,定时关机等。

2.实战案例

2.1编写资源清单

[root@master231 jobs]# cat 01-jobs-pi.yaml
apiVersion: batch/v1
#控制器类型指定为Job
kind: Job
metadata:
  name: pi
spec:
  # 定义Pod的模板
  template:
    spec:
      nodeName: worker232
      containers:
      - name: pi
        image: perl:5.34.0
        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: Never
  # 任务执行失败重启的次数
  backoffLimit: 4

2.2创建资源

[root@master231 jobs]# kubectl apply -f 01-jobs-pi.yaml

2.3查看验证

#查看列表
[root@master231 jobs]# kubectl get pods -o wide 
NAME       READY   STATUS      RESTARTS   AGE   IP               NODE        NOMINATED NODE   READINESS GATES
pi-kcbn7   0/1     Completed   0          34s   10.100.203.178   worker232   <none>           <none>

#查看日志
[root@master231 jobs]# kubectl logs pi-kcbn7 
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632788659361533818279682303019520353018529689957736225994138912497217752834791315155748572424541506959508295331168617278558890750983817546374649393192550604009277016711390098488240128583616035637076601047101819429555961989467678374494482553797747268471040475346462080466842590694912933136770289891521047521620569660240580381501935112533824300355876402474964732639141992726042699227967823547816360093417216412199245863150302861829745557067498385054945885869269956909272107975093029553211653449872027559602364806654991198818347977535663698074265425278625518184175746728909777727938000816470600161452491921732172147723501414419735685481613611573525521334757418494684385233239073941433345477624168625189835694855620992192221842725502542568876717904946016534668049886272327917860857843838279679766814541009538837863609506800642251252051173929848960841284886269456042419652850222106611863067442786220391949450471237137869609563643719172874677646575739624138908658326459958133904780275901

#统计字符,去除'.'和'\n'正好2000个 
[root@master231 jobs]# kubectl logs pi-kcbn7 | wc -c
2002

三、cj控制器(CronJobs)

1.什么是cj

官方说明:

https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/cron-jobs/

​ 所谓的cj是CronJobs的简称,底层周期性调用Job控制器。

​ 有点类似于Linux的"crontab"工具。

​ 其应用场景在于周期性任务的情况,比如增量备份,生成报表,周期性周报,日报?

2.实战案例

2.1编写资源清单

[root@master231 cronjobs]# cat 01-cj.yaml 
apiVersion: batch/v1
#控制器类型指定为CronJob
kind: CronJob
metadata:
  name: hello
spec:
#设置周期上报时间
  schedule: "* * * * *"
  # 定义Job模板
  jobTemplate:
    spec:
      # 定义Pod模板
      template:
        spec:
          containers:
          - name: hello
            image: registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1
            imagePullPolicy: IfNotPresent
            command:
            - /bin/sh
            - -c
            - date; echo "oldboyedu linux96 Hello from the Kubernetes cluster ..."
          restartPolicy: OnFailure

2.2创建资源

[root@master231 cronjobs]# kubectl apply -f 01-cj.yaml 
cronjob.batch/hello created

2.3查看验证

[root@master231 cronjobs]# kubectl get cj,job,po -o wide
NAME                  SCHEDULE    SUSPEND   ACTIVE   LAST SCHEDULE   AGE     CONTAINERS   IMAGES                                                      SELECTOR
cronjob.batch/hello   * * * * *   False     0        52s             4m55s   hello        registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1   <none>

NAME                       COMPLETIONS   DURATION   AGE     CONTAINERS   IMAGES                                                      SELECTOR
job.batch/hello-29069436   1/1           3s         2m52s   hello        registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1   controller-uid=4989a8a2-0c81-4d83-b9b3-27db20a2dcb2
job.batch/hello-29069437   1/1           3s         112s    hello        registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1   controller-uid=7568b9e5-8222-4370-99d5-42bbc41702cd
job.batch/hello-29069438   1/1           3s         52s     hello        registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1   controller-uid=7dab8aa4-d244-4a6a-9e5c-c7d83aa7aea3

NAME                       READY   STATUS      RESTARTS   AGE     IP               NODE        NOMINATED NODE   READINESS GATES
pod/hello-29069436-dvdvz   0/1     Completed   0          2m52s   10.100.203.181   worker232   <none>           <none>
pod/hello-29069437-cb2c4   0/1     Completed   0          112s    10.100.203.182   worker232   <none>           <none>
pod/hello-29069438-fqqbh   0/1     Completed   0          52s     10.100.203.183   worker232   <none>           <none>

[root@master231 cronjobs]# kubectl logs hello-29069438-fqqbh
Wed Apr  9 02:38:00 UTC 2025
oldboyedu linux96 Hello from the Kubernetes cluster ...

posted @ 2025-04-09 21:33  丁志岩  阅读(102)  评论(0)    收藏  举报