kubernetes - kubernetes 作业中存储了什么以及如何检查旧作业的资源使用情况?

标签 kubernetes

今天早上,我了解到 kubernetes 中所有先前运行的 cronjobs 作业实例的(不幸的)默认情况都保留在集群中。我很抱歉没有阅读文档中的详细信息。我还注意到删除作业( kubectl delete job [<foo> or --all] )需要相当长的时间。此外,我注意到,即使系统中只有大约 750 个这样的旧作业(加上一些其他事件容器,否则这些旧作业),即使是具有三个大型节点的合理配置的 kubernetes 集群也会失败(尝试使用 kubectl 时会出现各种超时)。没有带来重负载)[更正:还有大约 7000 个与那些旧作业相关的 Pod 也被保留了:-o]。 (我确实了解 the configuration settings 来限制/避免存储来自 cronjobs 的旧作业,所以这对我来说将来不会成为问题。)

因此,由于我找不到有关此问题的 kubernetes 文档,我的(相关)问题是:

  1. 当 kubernetes 保留旧作业时,到底存储了什么? (大概是相关 Pod 的日志和一些元数据,但这并不能解释为什么它们似乎在集群上放置了这样的负载。)
  2. 有没有办法查看资源(我认为仅是磁盘,但也许 还有一些其他资源)个人或集体的旧工作 正在使用?
  3. 为什么删除 Kubernetes 作业需要大约一分钟的时间?

最佳答案

我不知道 k8s 是否提供了有关哪些作业消耗了多少磁盘空间的详细信息,但您可以尝试一下。

尝试查找与作业关联的 Pod:

kubectl get pods --selector=job-name=<job name> --output=jsonpath={.items..metadata.name}

一旦您知道了 Pod,就可以找到与其关联的 docker 容器:

kubectl describe pod <pod name>

在上面的输出中查找 Node & Container ID 。现在继续该节点并在该节点中转到路径 /var/lib/docker/containers/<container id found above>您可以在这里进行一些调查以找出问题所在。

关于kubernetes - kubernetes 作业中存储了什么以及如何检查旧作业的资源使用情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43119769/

相关文章:

kubernetes - kubectl如何检测GCE中的配置?

linux - kubernetes 工作空间中的持久卷和声明

Python Celery 自动缩放 Kubernetes

kubernetes - matchExpressions 如何在 NetWorkPolicy 中工作

kubernetes - 如何添加外部 Helm 作为我 Helm 的一部分?

kubernetes - kubectl --token=$TOKEN 没有使用 token 的权限运行

kubernetes - 如何将 kubernetes 部署/副本集的名称传递给容器?

kubernetes - 在POD中使用服务的ClusterIP地址

kubernetes - 如何将GKE的群集自动缩放器日志导出到外部日志服务?

kubernetes - kubernetes Deployment 是否像 openshift DeploymentConfig 那样自动创建服务?