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 ...
本文来自博客园,作者:丁志岩,转载请注明原文链接:https://www.cnblogs.com/dezyan/p/18817399

浙公网安备 33010602011771号