K8s job /cronjob 和 Networkpolicy

一、Job 核心要点

  • 用途:确保指定数量的 Pod 成功终止(完成),适用于一次性任务(如计算、批处理)。

  • 失败重试 :Pod 失败时会自动重试,直到达到 backoffLimit 或成功次数要求。

  • 关键参数

    • completions:需要成功完成的 Pod 数量。

    • parallelism:并发运行的 Pod 数量。

    • backoffLimit:最大失败重试次数(默认6次)。

    • activeDeadlineSeconds:Job 最长运行时间,超时则终止。

    • ttlSecondsAfterFinished:Job 完成后自动清理的等待时间。

  • 重启策略

    • Never:Pod 失败后,Job 控制器会启动 Pod。

    • OnFailure:Pod 留在原节点,仅重启容器

  • 删除行为:删除 Job 会清除其创建的所有 Pod。


二、CronJob 核心要点

  • 用途:基于时间表(Cron 表达式)周期性地创建 Job,适用于定时任务(如备份、报告)。

  • 关键参数

    • schedule:Cron 格式调度时间,如 "* * * * *" 表示每分钟。

    • jobTemplate:定义每次触发时要创建的 Job 模板。

    • successfulJobsHistoryLimit:保留已完成 Job 的历史数量(默认3)。

  • 重启策略 :通常设为 OnFailure,避免重复创建 Pod。

  • 注意:CronJob 本身不执行任务,只负责按计划创建 Job。


三、实践验证

  • Job 生命周期Pending → ContainerCreating → Running → Completed,完成后 Pod 保留一段时间(由 ttlSecondsAfterFinished 控制)后自动清理。

  • CronJob 运行 :每分钟创建一个 Job,Job 再创建 Pod 执行命令(如输出时间+Hello信息),Pod 状态变为 Completed,历史 Job 保留限定数量。


四、配置模板重点

  • 镜像拉取策略imagePullPolicy: IfNotPresent(优先使用本地镜像)。

  • 私有仓库 :可通过 imagePullSecrets 配置拉取密钥。

  • 命名空间 :建议显式指定 namespace,避免默认冲突。

一、NetworkPolicy 是啥?

简单说,它就是 Kubernetes 里的"防火墙规则" 。你可以用它来控制哪些 Pod 可以跟哪些 Pod 说话,或者禁止某些通信。

比如:你不想让"前端"Pod 直接访问"数据库"Pod,只让"后端"Pod 去访问,就可以用它来限制。

二、它是怎么工作的?

  • 先给 Pod 打上标签(比如 app: backend)。

  • 然后写一个规则:入站(Ingress) 允许谁进来,出站(Egress) 允许出去找谁。

  • 规则里可以指定:允许的 IP 段、端口、协议(TCP/UDP),或者只允许某个命名空间里的 Pod。

三、几个常见例子(大白话版)

1. 只允许同一个项目(命名空间)内的 Pod 互聊

  • 比如你有个 myapp Pod,只允许同命名空间下打了 project: myproject 标签的 Pod 访问它,其他命名空间的不行。

2. 禁止 Pod 访问外部网络

  • 比如某个敏感 Pod 只能跟集群内的其他 Pod 通信,不能上网,也不能访问外部服务。

3. 只允许访问特定端口

  • 比如前端 Pod 只接受 80 端口的 TCP 流量和 53 端口的 UDP 流量,其他端口一律拒绝。

4. 限制只有本命名空间的 Pod 才能访问

  • 比如你有个 Pod 叫 alpine,只允许同一个命名空间内的 Pod 访问它,其他命名空间的 Pod 没门。

5. 既能访问同命名空间的 Pod,又能上网,但不能访问其他命名空间

  • 比如 alpine Pod:

    • 可以跟同命名空间的 Pod 聊天 ✅

    • 可以上百度、谷歌 ✅

    • 不能访问别的命名空间的 Pod ❌

    • 注意:要上网得先放行 DNS(53 端口),并且要排除集群内部的 IP 段,不然会误拦。

四、高级玩法(了解一下就行)

  • 策略继承:可以定义父策略、子策略,子策略会继承父策略的规则。

  • 更灵活的标签匹配:不只是"等于",还可以用"属于某几个值之一"这类条件来选 Pod。


一句话总结:NetworkPolicy 就是 Kubernetes 里控制 Pod 之间、Pod 和外部之间能不能通信的一套规则,帮你把网络权限管得死死的,提升安全性。

相关推荐
AAA@峥21 小时前
容器数据不丢失:Docker 分层存储 + Volume 共享、备份迁移完整指南
运维·docker·容器
十年磨一剑~1 天前
docker 为何每次 docker tag才能 docker push
docker·容器·eureka
gs801401 天前
记一次多 Agent 架构在单节点 K8s 触发的 PID 耗尽与 Pod 驱逐(Evicted)大摸排
容器·架构·kubernetes
bukeyiwanshui1 天前
20260701 k8s Metric Server
容器·贪心算法·kubernetes
江湖有缘1 天前
基于Docker环境部署tillywork开源工作管理工具
docker·容器·开源
鸿儒5171 天前
MR-50国产化GPU docker配置方法
docker·容器·mr
Zhu7581 天前
在k8s集群部署ApacheHadoop单节点单数据副本
云原生·容器·kubernetes
Akamai中国1 天前
Akamai收购安全企业浏览器提供商LayerX
人工智能·云原生·云计算·云服务
摇滚侠1 天前
云原生 Java 架构师的第一课 K8s+Docker+KubeSphere+DevOps 51-60
java·云原生·kubernetes