k8s编写cronjob

1. k8s编写cronjob的知识点:

通过sed对cronjob的yaml文件中的image 属性进行替换:

sed s/old/new/g file 

当 old和new 均为变量的时候,书写方式如下:

sed -i  's#'''$old_image'''#'''$new_image'''#g' quota-cronjob.yaml

 

2. cronjob对应的pod中执行ps -ef ,发现pod共享了宿主机的进程。此问题是因为参数设置: 

 

1 hostIPC: true   
2 hostNetwork: true 
3 hostPID: true

相关解释:

Privileged :不受限制的策略,提供最大可能范围的权限许可。此策略允许已知的特权提升。
hostPID:是否允许Pod共享宿主机的进程空间。
hostPath:是否允许使用宿主机文件系统目录。
hostNetwork:是否允许Pod使用宿主机网络的命名空间。
hostIPC:是否允许Pod共享宿主机的IPC命名空间

在部署cronjob 3天后,发现一个问题,当镜像拉取报错时,会积压很多的ImagePullBackOff的pod . 通过设置参数:activeDeadlineSeconds  的时长,保证pod数量为一个正常值。

 

activeDeadlineSeconds  #表示 Pod 可以运行的最长时间,达到设置的该值后,Pod 会自动停止。

 

3. cronjob的参数说明:

preferredDuringSchedulingIgnoredDuringExecution:软策略 可以不再最好在
requiredDuringSchedulingIgnoredDuringExecution:硬策略 必须在键值运算关系

In:label 的值在某个列表中
NotIn:label 的值不在某个列表中
Gt:label 的值大于某个值
Lt:label 的值小于某个值
Exists:某个 label 存在
DoesNotExist:某个 label 不存在



equiredDuringSchedulingIgnoredDuringExecution
表示pod必须部署到满足条件的节点上,如果没有满足条件的节点,就不停重试。其中IgnoreDuringExecution表示pod部署之后运行的时候,如果节点标签发生了变化,不再满足pod指定的条件,pod也会继续运行。

requiredDuringSchedulingRequiredDuringExecution
表示pod必须部署到满足条件的节点上,如果没有满足条件的节点,就不停重试。其中RequiredDuringExecution表示pod部署之后运行的时候,如果节点标签发生了变化,不再满足pod指定的条件,则重新选择符合要求的节点。

preferredDuringSchedulingIgnoredDuringExecution
表示优先部署到满足条件的节点上,如果没有满足条件的节点,就忽略这些条件,按照正常逻辑部署。

preferredDuringSchedulingRequiredDuringExecution
表示优先部署到满足条件的节点上,如果没有满足条件的节点,就忽略这些条件,按照正常逻辑部署。其中RequiredDuringExecution表示如果后面节点标签发生了变化,满足了条件,则重新调度到满足条件的节点。

 

 

 

posted on 2023-04-21 09:20  会飞的鱼会掉进海里吗  阅读(174)  评论(0编辑  收藏  举报