出现问题后,没有找到问题根源,所以先修改了kube-apiserver的静态pod yaml文件,位于/etc/kubernetes/manifests/kube-apiserver.yaml,添加resources.limits.memory 为32g(本机内存为64g)。这样现在kube-apiserver的内存,使它消耗内存到32g的时候就oom kill自动重启, 大内存方案可行,如果内存较小,很快就会重启。 问题分析 ...
出现问题后,没有找到问题根源,所以先修改了kube-apiserver的静态pod yaml文件,位于/etc/kubernetes/manifests/kube-apiserver.yaml,添加resources.limits.memory 为32g(本机内存为64g)。这样现在kube-apiserver的内存,使它消耗内存到32g的时候就oom kill自动重启, 大内存方案可行,如果内存较小,很快就会重启。 问题分析 ...
线上master的apiserver组件内存报警,内存使用量持续增长,监控如下 排查过程 从监控上看和另外一个程序(管理员平台)的内存使用情况吻合,使用率降下来是因为重启了apiserver和管理员平台,且问题只出现在最近两天的晚上,管理员平台中有一段逻辑是定时全量拉取集群数据(设计不合理,后续需要改),管理员平台的日志里显示拉取...
一些DaemonSet 之类的程序里面用到了 Informer,在进行变更,或者故障重启的时候,随着集群规模的增加,请求量也随之增加,对 kube-apiserver 内存的压力也增加,在没有任何防护措施(限流)的情况下,很容易造成 kube-apiserver 的 OOM,而且在 OOM 之后,异常连接转移到其他master 节点,引起雪崩。理论上也属于一种容量问题,应...
有两个常见的容易引起 kube-apiserver OOM 的场景: 一些DaemonSet 之类的程序里面用到了 Informer,在进行变更,或者故障重启的时候,随着集群规模的增加,请求量也随之增加,对 kube-apiserver 内存的压力也增加,在没有任何防护措施(限流)的情况下,很容易造成 kube-apiserver 的 OOM,而且在 OOM 之后,异常连接转移到其他...
有两个常见的容易引起 kube-apiserver OOM 的场景: 一些DaemonSet 之类的程序里面用到了 Informer,在进行变更,或者故障重启的时候,随着集群规模的增加,请求量也随之增加,对 kube-apiserver 内存的压力也增加,在没有任何防护措施(限流)的情况下,很容易造成 kube-apiserver 的 OOM,而且在 OOM 之后,异常连接转移到其他...
kubernetes启动kube-apiserver失败,提示Cannot allocate memory无法分配内存,程序员大本营,技术文章内容聚合第一站。
优化序列化过程内存分配 数据压缩在这个场景可能不适用,压缩确实可以降低网络传输带宽,从而提升请求响应速度,但对服务端内存的优化没有太大的作用。kube-apiserver 已经支持基于 gzip 的数据压缩,只需要设置 Accept-Encoding 为 gzip 即可,详情可以参考官网[1]介绍。
当然缓存序列化的结果这个操作本身来说也是会占用一些内存的,如果客户端数量较少,那么这个操作可能收益不大甚至可能带来额外的内存消耗。kube-apiserver watch 请求就与这个场景非常吻合。 下文会就 kube-apiserver 中是如何就这两点进行的优化做一个介绍。 实现...
之前从资源对象的获取方式、序列化、深拷贝的角度分别分析了对 kube-apiserver 内存使用量的影响以及社区是如何进行优化的,这一篇围绕网络连接展开分析其对 kube-apiserver 内存的影响,以及这中间涉及到的其他相关问题。 分析 内存消耗 按照常理理解的话,进程负责了网络连接的管理,理论上连接数多了之后是对进程内存有影...