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

相关推荐
小猿姐1 天前
MySQL Top 10 热点问题 AI 运维实战:从内核诊断到云原生运维
mysql·云原生·aiops
阿里云云原生2 天前
深入内核:拆解 OpenTelemetry eBPF 探针如何优雅地“透视”多语言微服务?
云原生
2601_961875242 天前
决战申论100题2026|最新|范文
linux·容器·centos·debian·ssh·fabric·vagrant
java_cj2 天前
深入kube-apiserver认证机制:从Bearer Token到mTLS的完整认证链解析
linux·运维·服务器·云原生·容器·kubernetes
程序员老赵2 天前
服务器没有桌面?Docker 跑个 Chrome,浏览器就能远程用
docker·容器·devops
正经教主2 天前
【docker基础】 第八周:容器监控与应用更新策略
运维·docker·容器
kiros_wang2 天前
Docker 使用完整指南
运维·docker·容器
正经教主2 天前
【docker基础】第九周:Docker安全与镜像优化
运维·docker·容器
qq_452396232 天前
第十三篇:《K8s 安全基础:RBAC、ServiceAccount、Pod Security》
java·安全·kubernetes
睡不醒男孩0308232 天前
云原生运维实战:高并发架构下的云原生可观测性、韧性降级与自动化干预体系
数据库·kubernetes·高并发·prometheus·devops·sre·缓存调优