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 和外部之间能不能通信的一套规则,帮你把网络权限管得死死的,提升安全性。

相关推荐
java_logo34 分钟前
2026 Docker 国内镜像加速配置教程
运维·docker·容器·docker镜像·docker镜像源·docker镜像加速·docker镜像国内库
IT策士1 小时前
Docker从0到1再到 Kubernetes 实战:第15篇Compose 中的服务依赖、健康检查与启动顺序
docker·容器·kubernetes
Waay1 小时前
K8s Deployment 滚动更新与回滚深度详解(含踩坑实录+生产选型原理)
云原生·容器·kubernetes
顾默@2 小时前
双系统Ubuntu18.04升级22.04,安装docker进行openclaw安装
运维·docker·容器
蜀道山老天师3 小时前
Docker Compose 多容器编排实战:LNMP、Tomcat 集群、云桌面、Portainer、Zabbix 一键部署
运维·docker·容器·tomcat·zabbix
见牛羊4 小时前
docker理解
java·docker·容器
ん贤4 小时前
Higress 详细笔记
笔记·云原生·higress
IT策士6 小时前
Docker 从 0 到 1 再到 Kubernetes 实战:第18篇 从 Docker Compose 到 Kubernetes 的思考
docker·容器·kubernetes
linmengmeng_13147 小时前
【总结】Docker 容器重建后 Nginx 502 问题排查与解决
nginx·docker·容器
qq_356408667 小时前
Kubernetes Rook-Ceph 高可用存储部署文档
ceph·容器·kubernetes