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

相关推荐
Harvy_没救了1 小时前
【容器技术-Docker】Docker镜像
运维·docker·容器
hyunbar1 小时前
ZooKeeper 未授权访问漏洞:你做的 ACL 加固可能只是“假动作”
分布式·zookeeper·云原生
汪汪大队u2 小时前
从 Docker Compose 到 Kubernetes:物联网管理系统迁移实战
物联网·容器·kubernetes
秋饼2 小时前
kubernetes (K8S)组件介绍以及原理
云原生·容器·kubernetes
lpfasd1232 小时前
Docker Compose删除服务后,docker compose down无法关闭的问题解决
docker·容器·eureka
小新同学^O^2 小时前
简单学习 --> Docker容器
学习·docker·容器
阿里-于怀2 小时前
Nacos Skill Registry: 面向个人场景的Skill中心实践
阿里云·云原生·nacos·agent·skills
emiya_saber2 小时前
docker标签
运维·docker·容器
AI精钢2 小时前
AI 正在重构所有 App:要么消失,要么原生于智能体框架之上
人工智能·python·云原生·重构·aigc