Kubernetes Pod 内存与 cgroup

2023-12-30

我在 Kubernetes pod 中运行 apache,并且对 apache 进程的随机 OOM 终止感到困扰,并且我不确定原因。

Pod 有 600M 内存限制,即使 PHP 每次运行有 128 MB 限制,它似乎也可以很容易地消耗它。观察时dmesg -w我经常可以看到:

[4019392.626796] Memory cgroup out of memory: Kill process 4178127 (apache2) score 1137 or sacrifice child
[4019392.636520] Killed process 4178127 (apache2) total-vm:143960kB, anon-rss:22856kB, file-rss:10472kB, shmem-rss:28228kB
  1. 我如何确定此 OOM 终止与机器或 pod 限制有关?
  2. 有几个 apache pod,我不知道如何识别该进程所属的 pod。有办法吗?
  3. 如果这些可以在 pod 内访问,那就太好了,这样人们就可以看到实际上属于 pod 的被杀死的线程(最好是在错误输出中)。是否可以?

以相同的顺序回答您的问题:

  1. kubectl get events在运行 pod 的命名空间中。您将看到 Kubernetes OOM 事件等。如果什么都没有——那就是内核本身。

  2. 有一个项目名为pid2pod https://github.com/heptiolabs/pid2pod,但它只 grep 仍在运行的内容。另一种选择是将 dmesg 路由到 stdout(在容器操作系统级别)并实施通过 Kubernetes 元数据丰富进行集中式日志收集 https://github.com/helm/charts/blob/d339305a27326a98681e654eb5f4f9bd6882f3aa/stable/fluent-bit/templates/config.yaml#L82。然后每个日志事件都会在元数据中包含 pod id。

  3. 不确定你想在这里解决什么问题。通常,一个 pod(我假设是一个容器)是一个进程。一旦它被 OOM 杀死,pod 内就没有其他东西可以对此采取行动。这是控制器的(Deployment) 负责对此事件做出反应并重新创建 pod。

    如果你只是想观察剩余 Pod 中的 OOM,你可以实现类似库贝手表 https://github.com/bitnami-labs/kubewatch。不幸的是,我没有一个项目可以让您直接在 Pod 内订阅,但这可以用作示例。或者,如果是集中式日志记录,您可以订阅 Pod 内的日志流。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Kubernetes Pod 内存与 cgroup 的相关文章

  • 如何重用现有的持久卷声明

    我已经删除了我的 Elasticsearch 集群 但现在在部署新集群后 我需要访问存储在 3 个持久卷 PV 上的旧数据 如下所述 NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS
  • Kubernetes:无法创建存储库

    我正在跟进Kubernetes 入门指南 http kubernetes io docs hellonode 一切都很顺利 直到我跑步 gcloud docker push gcr io
  • 使用 zeppelin 在 kubernetes 上 Spark

    我按照本指南在使用 minikube 设置的本地 kubernetes 集群中运行 zeppelin 容器 https zeppelin apache org docs 0 9 0 SNAPSHOT quickstart kubernete
  • 无法设置“sbt start”的内存设置

    我正在尝试奔跑sbt start在用 Scala 编写的 Play Framework 应用程序中 在一台机器上ec2 t2 microAWS 上的实例 但我不能因为内存不足 Java 运行时环境无法继续运行 该机器有 1GB 内存 但实际
  • 将代码/文件直接注入 Google Cloud Engine 上的 Kubernetes 容器中

    如何将代码 文件直接注入 Google Cloud Engine 上的 Kubernetes 容器中 类似于使用 Docker 挂载主机文件 目录的方式 例如 docker run d name nginx p 443 443 v ngin
  • Jenkinsfile 泊坞窗

    我正在 docker 容器内的 GCE 上运行一个 jenkins 实例 并希望从此 Jenkinsfile 和 Github 执行多分支管道 我正在使用GCE詹金斯 https cloud google com solutions con
  • Kubernetes 1.8 支持的 Docker 版本

    我要将我的 Kubernetes 集群升级到该版本1 8 7 有谁知道哪个 docker 版本与其最兼容 这是我在 Kubernetes 官方页面上找到的 但我想它可能是针对最新的 k8s 版本的 1 9 在每台计算机上安装 Docker
  • 运行 istio-proxy 后启动容器/pod

    我正在尝试使用 Istio 和 Envoy 通过 Kubernetes 实现服务网格 我能够设置服务和 istio proxy 但无法控制容器和 istio proxy 的启动顺序 我的容器是第一个启动的 并尝试通过 TCP 访问外部资源
  • 使用 numpy 数组时出现内存错误 Python

    我原来的list 函数有超过 200 万行代码 当我运行计算 的代码时出现内存错误 有什么办法可以绕过它吗 这list 下面是实际 numpy 数组的一部分 熊猫数据 import pandas as pd import math impo
  • Kubernetes Pod 动态环境变量

    我需要能够将自定义环境变量分配给 Pod 的每个副本 一个变量应该是一些随机的 uuid 另一个唯一的数字 怎么可能实现呢 我更愿意继续使用带有副本的 部署 如果这不是开箱即用的 如何通过自定义复制控制器 控制器管理器来实现 有没有可用的钩
  • kubectl 运行本地 docker 镜像 - ImagePullBackOff 状态

    我在本地计算机上构建 docker 映像 并尝试使用 kubectl 拉取 docker 映像 但它没有启动 docker 容器 图像以 docker 命令开头 REPOSITORY TAG IMAGE ID CREATED SIZE to
  • Spring OAuth2 Keycloak Kubernetes 内部/外部访问

    我在 Kubernetes 集群内配置了 Keycloak 10 0 3 服务器 keycloak 服务器必须处理外部用户的身份验证 使用外部 url 并处理用于 Spring 微服务通信的 oauth2 令牌 然后Web应用程序Sprin
  • 将非平凡函数应用于 data.table 的有序子集

    Problem 我正在尝试使用我新发现的 data table 功能 永久 来计算一堆数据的频率内容 如下所示 Sample Channel Trial Voltage Class Subject 1 1 1 196 82253 1 1 1
  • Spring Cloud Kubernetes + Spring Cloud Gateway:无法找到 k8s 服务的实例

    我正在使用 Spring Cloud Kubernetes Spring Cloud Gateway SCG 但在 GKE 上部署应用程序时遇到一些问题 SCG 找不到 k8s 服务 我仍然收到此错误 There was an unexpe
  • Android进程调度

    我试图更好地理解 以便在创建 Android 应用程序 服务时确定潜在的互操作性问题对可靠性的影响 我想弄清楚进程优先级是如何确定的 服务和活动之间优先级的差异以及调度程序是否以不同方式对待它们的优先级 基本上 我试图深入了解某个活动或服务
  • 允许 Kubernetes 用户列表/获取命名空间

    我有以下用户清单 我希望允许 myapp user 获取集群内所有命名空间的列表 根据我的查找 我应该创建一个 ClusterRole 但我无法真正找到足够的详细信息 是否有所有 apiGroup 以及相应资源和动词的列表 apiVersi
  • Kubernetes WatchConnectionManager:执行失败:HTTP 403

    我遇到错误Expected HTTP 101 response but was 403 Forbidden 在我使用以下命令设置新的 Kubernetes 集群之后Kubeadm当我提交下面遇到的 pyspark 示例应用程序时 只有一个主
  • 入口和 SSL 直通

    我最近一直在使用 nginxdemo nginx ingress 控制器 据我了解 该控制器无法执行 SSL 直通 我的意思是 将客户端证书一直传递到后端服务进行身份验证 因此我一直通过标头传递客户端主题 DN 最终 我更喜欢 SSL 直通
  • 匹配同一端口上不同路径的 Istio 虚拟服务路由

    我想知道如何在同一端口上匹配 gRPC 路由 以下是我希望通过 VirtualService 实现的目标的示例 apiVersion networking istio io v1alpha3 kind VirtualService meta
  • 通过 kubernetes 标签或注释对 prometheus 目标进行分组?

    我有两个关于普罗米修斯的问题 我使用这个舵图 https artifacthub io packages helm prometheus community prometheus modal values https artifacthub

随机推荐

  • Debezium Postgres Kafka 连接器心跳未提交 LSN

    我在 AWS RDS 上有一个 Postgres Db 并且有一个 kafka 连接器 Debezium Postgres 正在监听表 连接器的配置 name my connector config connector class io d
  • C# 原始数组是易失性的吗?

    我这样声明数组private double array new double length 在一个线程中更新此数组项并在另一个线程中读取是否安全 我会有最新的价值吗 注意我不枚举数组 我仅通过索引访问其项目 数组不是线程安全的 从MSDN
  • gcc 找不到模板专门化

    我的网络代码使用模板专门化来序列化不能简单复制的类型 我定义了一个通用模板 template
  • 如何为 IntelliJ 社区版添加 hibernate 支持?

    我是 Hibernate 框架的新手 主要熟悉 IntelliJ IDE 据我了解 IntelliJ 社区版默认不提供 Hibernate 框架支持 还有另一种方法可以将 Hibernate 单独包含到 IntelliJ 项目中吗 None
  • scikit-learn k-means:预测方法的真正作用是什么?

    当我使用 scikit learn 的 k means 实现时 我通常只调用fit 方法 这足以获得聚类中心和标签 这predict 方法用于计算标签 甚至fit predict 方法是为了方便起见 但如果我只能使用fit 目的是什么pre
  • 如何修复 PyCharm 上的 vcvarsall 错误? [复制]

    这个问题在这里已经有答案了 我使用的是 64 位 Windows 7 SP1 我有 PyCharm 社区版 4 0 4 和 Python 3 4 2 我想在 PyCharm 中安装新包 在 PyCharm 中 当我去File gt Sett
  • HTML5离线认证

    我正在寻求有关如何最好地控制对主要离线使用的 HTML5 应用程序的访问的建议 批评 该应用程序使用 IndexedDB 本地和会话存储的组合来存储数据 以便可以离线使用 数据 页面通过 HTTPS 提供 目的是最大限度地降低平板电脑 个人
  • 如何制作可移植的 isnan/isinf 函数

    我一直在使用isinf isnanLinux 平台上的功能完美运行 但这在 OS X 上不起作用 所以我决定使用std isinf std isnan它可以在 Linux 和 OS X 上运行 但英特尔编译器无法识别它 我猜这是英特尔编译器
  • 重新启动以循环迭代列表python3

    蟒蛇 3 6你好 我试图用 for 循环迭代列表 只要条件得到确认 我就必须重新启动循环 在C中我会这样做 for i 0 i lt 10 i if list i something i 0 在这里我试图这样做 for x in listP
  • Android 应用程序因 Vitamio 库而崩溃

    我已经为 Android 应用程序上的流媒体视频编写了一个简单的代码 我使用了 Vitamio 库 遵循了所有必要的步骤来集成到项目中 视频无法播放并且应用程序在加载时崩溃 package com test bufferapp import
  • 获取wordpress父模板名称

    我需要获取页面父模板名称 我知道我可以对当前页面使用 get page template 但似乎没有办法获取父页面 是否也可以只获取模板名称而不是其路径 是的 get page template 只能返回当前页面的文件路径 请改用 get
  • 为什么我应该在 mobx 中使用动作装饰器

    即使在阅读了文档之后 我也试图了解 mobx 中动作装饰器的有用性 https mobx js org refguide action html https mobx js org refguide action html 仍然想知道为什么
  • 函数内 ddply 未找到对象错误

    这确实挑战了我调试R代码的能力 我想用ddply 将相同的函数应用于按顺序命名的不同列 例如 a b c 为此 我打算重复将列名称作为字符串传递并使用eval parse text ColName 以允许函数引用它 我从另一个答案中获取了这
  • 更改 ASP.NET Core 中的控制器路由

    所以我有一个HomeController 访问它Actions我必须输入url com home action 是否可以将其更改为其他类似的东西url com anothernamethatpointstohomeactually acti
  • 如何从类 ID 中识别 Axapta 类名称?

    请问有人可以帮我理解批量疯狂吗 我正在尝试调试具有大约 50 个批处理作业的 Axapta 3 0 实现 大多数批处理类没有实现description 方法 所以当你查看批次清单表单 基本 gt gt 查询 gt gt 批次列表 描述字段为
  • 测试中未使用自定义的ObjectMapper

    我使用的是 Spring 框架 版本 4 1 6 带有 Spring Web 服务 但没有 Spring Boot 为了学习该框架 我正在编写一个 REST API 并进行测试以确保从命中端点收到的 JSON 响应是正确的 具体来说 我正在
  • 正则表达式 - 排除名称的单词列表

    我正在尝试制作一个接受此内容的正则表达式 仅限 a z 0 9 字符 最小长度为 3 admin static my 和 www 被拒绝 对于第一部分 我已经设法做到了 a zA Z0 9 3 但我不知道如何排除前面列出的单词 例如 这意味
  • Java 日历/日期 2010 年 10 月 2 日有错误吗?

    我不确定我做错了什么 但我有一段代码可以计算两个日期之间的天数 如下所示 final Calendar first new GregorianCalendar 2010 Calendar OCTOBER 1 final Calendar l
  • 如何使用 nanosleep 随机睡眠时间?

    我正在尝试使用 nanosleep 函数让我的进程休眠 1 10 秒之间的随机时间 我使用 srand 为我的随机数生成器提供种子 并带有进程 ID 即我调用 srand getpid 然后使用 struct timespec delay
  • Kubernetes Pod 内存与 cgroup

    我在 Kubernetes pod 中运行 apache 并且对 apache 进程的随机 OOM 终止感到困扰 并且我不确定原因 Pod 有 600M 内存限制 即使 PHP 每次运行有 128 MB 限制 它似乎也可以很容易地消耗它 观