You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tekton Pipelines启动的Pod因临时存储超限被K8s驱逐的解决方法

解决Tekton Pod因临时存储限制为0被驱逐的问题

即使你没有主动使用临时存储,Tekton运行的Pod也会产生隐性临时数据(比如镜像拉取缓存、容器运行时临时文件、日志文件等),Kubernetes会将这些计入临时本地存储用量。当集群默认临时存储限制为0时,少量使用就会触发驱逐,可通过以下方式解决:

1. 为单个Tekton Task/PipelineRun配置临时存储资源

直接在Task的步骤容器中显式定义临时存储的请求和限制值,示例:

apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
  name: example-task
spec:
  steps:
    - name: build-step
      image: your-build-image:latest
      resources:
        requests:
          ephemeral-storage: "1Gi"  # 初始申请的临时存储量
        limits:
          ephemeral-storage: "2Gi"  # 允许使用的最大临时存储量

2. 设置Tekton全局默认临时存储配置

通过修改Tekton的config-defaults ConfigMap,为所有TaskRun的Pod设置全局默认临时存储资源,避免逐个配置:

  1. 编辑ConfigMap:
kubectl edit configmap config-defaults -n tekton-pipelines
  1. 在data字段下添加或修改default-resources配置:
data:
  default-resources: |
    requests:
      ephemeral-storage: "1Gi"
    limits:
      ephemeral-storage: "2Gi"

3. 检查并调整集群LimitRange配置

如果集群中存在LimitRange对象,可能会强制给容器设置默认临时存储限制为0。执行以下命令查看所有命名空间的LimitRange:

kubectl get limitrange --all-namespaces

若发现包含ephemeral-storage限制为0的规则,修改对应的LimitRange,设置合理默认值,示例:

apiVersion: v1
kind: LimitRange
metadata:
  name: example-limitrange
spec:
  limits:
    - type: Container
      defaultRequest:
        ephemeral-storage: "512Mi"
      default:
        ephemeral-storage: "1Gi"

4. 排查临时存储实际占用来源

在Pod被驱逐前,查看容器内临时存储占用情况,定位具体耗存储路径:

# 查看/tmp目录占用
kubectl exec <pod-name> -- df -h /tmp
# 查看日志目录占用
kubectl exec <pod-name> -- df -h /var/log

如果是日志占用过高,可配置日志轮转策略;如果是镜像缓存问题,可考虑使用镜像清理工具或调整缓存大小。

内容的提问来源于stack exchange,提问作者BugsBuggy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 18:20:48