您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
28、资源控制器 - Daemonset、Job、CronJob
发布时间:2022-12-18 21:22:55编辑:雪饮阅读()
Step1
创建daemonset模板
[root@k8s-master01 ~]# cat daemonset.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: deamonset-example
labels:
app: daemonset
spec:
selector:
matchLabels:
name: deamonset-example
template:
metadata:
labels:
name: deamonset-example
spec:
containers:
- name: daemonset-example
image: wangyanglinux/myapp:v3
创建daemonset
[root@k8s-master01 ~]# kubectl create -f daemonset.yaml
daemonset.apps/deamonset-example created
发现之前创建的pod以及这次创建的daemonset貌似从来没有出现过在master节点上,都是在节点1或者节点2上
[root@k8s-master01 ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
deamonset-example-28jk5 1/1 Running 0 58s
deamonset-example-zr2dj 1/1 Running 0 58s
nginx-deployment-5df65767f-28v7g 1/1 Running 0 3h7m
nginx-deployment-5df65767f-c74cg 1/1 Running 0 3h7m
nginx-deployment-5df65767f-n4gl9 1/1 Running 0 3h7m
[root@k8s-master01 ~]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE RE ADINESS GATES
deamonset-example-28jk5 1/1 Running 0 75s 10.224.1.73 k8s-node01 <none> <n one>
deamonset-example-zr2dj 1/1 Running 0 75s 10.224.2.58 k8s-node02 <none> <n one>
nginx-deployment-5df65767f-28v7g 1/1 Running 0 3h7m 10.224.1.72 k8s-node01 <none> <n one>
nginx-deployment-5df65767f-c74cg 1/1 Running 0 3h7m 10.224.2.57 k8s-node02 <none> <n one>
nginx-deployment-5df65767f-n4gl9 1/1 Running 0 3h7m 10.224.1.71 k8s-node01 <none> <n
好像是与污点有关。
Step2
就算我把这里例如这个节点1的这个daemonset的删除
[root@k8s-master01 ~]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE RE ADINESS GATES
deamonset-example-28jk5 1/1 Running 0 75s 10.224.1.73 k8s-node01 <none> <n one>
deamonset-example-zr2dj 1/1 Running 0 75s 10.224.2.58 k8s-node02 <none> <n one>
nginx-deployment-5df65767f-28v7g 1/1 Running 0 3h7m 10.224.1.72 k8s-node01 <none> <n one>
nginx-deployment-5df65767f-c74cg 1/1 Running 0 3h7m 10.224.2.57 k8s-node02 <none> <n one>
nginx-deployment-5df65767f-n4gl9 1/1 Running 0 3h7m 10.224.1.71 k8s-node01 <none> <n one>
[root@k8s-master01 ~]#
[root@k8s-master01 ~]#
[root@k8s-master01 ~]# kubectl delete pod deamonset-example-28jk5
pod "deamonset-example-28jk5" deleted
[root@k8s-master01 ~]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
deamonset-example-k7rrx 1/1 Running 0 9s 10.224.1.74 k8s-node01 <none> <none>
deamonset-example-zr2dj 1/1 Running 0 3m4s 10.224.2.58 k8s-node02 <none> <none>
nginx-deployment-5df65767f-28v7g 1/1 Running 0 3h9m 10.224.1.72 k8s-node01 <none> <none>
nginx-deployment-5df65767f-c74cg 1/1 Running 0 3h9m 10.224.2.57 k8s-node02 <none> <none>
nginx-deployment-5df65767f-n4gl9 1/1 Running 0 3h9m 10.224.1.71 k8s-node01 <none> <none>
然后为了保证副本数,仍旧还是不会出现在master节点上,这里还是出现在了节点1上。
Step2
创建job模板
[root@k8s-master01 ~]# cat job.yaml
apiVersion: batch/v1
kind: Job
metadata:
name: pi
spec:
template:
metadata:
name: pi
spec:
containers:
- name: pi
image: perl
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
restartPolicy: Never
创建job
[root@k8s-master01 ~]# kubectl create -f job.yaml
job.batch/pi created
由于是包含的这个镜像perl是从国外网络下载,所以比较慢
[root@k8s-master01 ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
deamonset-example-k7rrx 1/1 Running 0 7m33s
deamonset-example-zr2dj 1/1 Running 0 10m
nginx-deployment-5df65767f-28v7g 1/1 Running 0 3h17m
nginx-deployment-5df65767f-c74cg 1/1 Running 0 3h17m
nginx-deployment-5df65767f-n4gl9 1/1 Running 0 3h17m
pi-7nmxt 0/1 ContainerCreating 0 77s
可以看到当前的批处理列表(个人认为是一个列表,多个job就是多个条目)
[root@k8s-master01 ~]# kubectl get job
NAME COMPLETIONS DURATION AGE
pi 0/1 2m13s 2m13s
这里有刚才建立的这个批处理,该批处理的任务就一个(0/1),只需要完成那个perl镜像的加载或者下载或者载入之类(怎么说都好,就是那个意思了)
也可以自己查看下是否有下载报错
[root@k8s-master01 ~]# kubectl describe pod pi-7nmxt
Name: pi-7nmxt
Namespace: default
Priority: 0
Node: k8s-node02/192.168.66.21
Start Time: Sun, 18 Dec 2022 20:55:02 +0800
Labels: controller-uid=6b78787e-c6be-48d6-8285-6d015b544785
job-name=pi
Annotations: <none>
Status: Pending
IP: 10.224.2.59
Controlled By: Job/pi
Containers:
pi:
Container ID:
Image: perl
Image ID:
Port: <none>
Host Port: <none>
Command:
perl
-Mbignum=bpi
-wle
print bpi(2000)
State: Waiting
Reason: ImagePullBackOff
Ready: False
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-d8kh2 (ro)
Conditions:
Type Status
Initialized True
Ready False
ContainersReady False
PodScheduled True
Volumes:
default-token-d8kh2:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-d8kh2
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 4m42s default-scheduler Successfully assigned default/pi-7nmxt to k8s-node0 2
Warning Failed 2m35s kubelet, k8s-node02 Failed to pull image "perl": rpc error: code = Unkn own desc = context canceled
Warning Failed 2m35s kubelet, k8s-node02 Error: ErrImagePull
Normal BackOff 2m34s kubelet, k8s-node02 Back-off pulling image "perl"
Warning Failed 2m34s kubelet, k8s-node02 Error: ImagePullBackOff
Normal Pulling 2m22s (x2 over 4m40s) kubelet, k8s-node02 Pulling image "perl"
看来确实拉取镜像出错了。
实在不行就手动下载,然后手动给master和节点1以及节点2载入该镜像。
Step3
手动安装perl镜像
我这里是用老师的这个压缩包(包中有包)
[root@k8s-master01 ~]# tar -zxvf perl.tar.gz
perl.tar
[root@k8s-master01 ~]# docker load -i perl.tar
660314270d76: Loading layer [==================================================>] 119.2MB/119.2MB
6d5a64ea8f37: Loading layer [==================================================>] 17.11MB/17.11MB
74e2ede3b29c: Loading layer [==================================================>] 17.83MB/17.83MB
97e8dd85db4e: Loading layer [==================================================>] 149.8MB/149.8MB
6e302bbcacce: Loading layer [==================================================>] 520.7MB/520.7MB
c636bd55ab5a: Loading layer [==================================================>] 3.072kB/3.072kB
3a73b338e8fc: Loading layer [==================================================>] 55.47MB/55.47MB
Loaded image: perl:latest
除了master节点要执行这两个操作,节点1和节点2同样也要操作。
关键字词:资源控制器,Daemonset,Job,CronJob