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表示如果后面节点标签发生了变化,满足了条件,则重新调度到满足条件的节点。