首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Node.js和Puppeteer对Kubernetes的驱逐管理

Node.js和Puppeteer对Kubernetes的驱逐管理
EN

Stack Overflow用户
提问于 2021-01-22 20:06:08
回答 1查看 367关注 0票数 0

目前,我看到了一个奇怪的问题,我有一个Pod,它一直是库伯内特斯的Evicted

我的集群/应用程序信息:

2vCPU

  • Application:
  • Node size:7.5GB RAM /7.5GB RAM语言:nodejs
  • Use Case:傀儡网站提取(我有加载网站的代码,然后提取一个元素并在Azure Kubernetes Service (AKS)

上每hour)

  • Running重复几次)

我尝试了什么:

  • 检查木偶是否正确关闭,并且我正在删除任何铬实例。在添加了一个强力杀手之后,它似乎在做这个

  • 检查了显示行的kubectl get events

代码语言:javascript
复制
8m17s       Normal    NodeHasSufficientMemory   node/node-1              Node node-1 status is now: NodeHasSufficientMemory
2m28s       Warning   EvictionThresholdMet      node/node-1              Attempting to reclaim memory
71m         Warning   FailedScheduling          pod/my-deployment     0/4 nodes are available: 1 node(s) had taint {node.kubernetes.io/memory-pressure: }, that the pod didn't tolerate, 3 node(s) didn't match node selector

  • 选中了kubectl top pods,显示它只使用了节点内存的30%的内存,
  • 在我的kubernetes kubectl top pods中增加了资源限制

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app-d
spec:
  replicas: 1
  template:
    spec:
      containers:
      - name: main
        image: my-image
        imagePullPolicy: Always
        resources:
          limits: 
            memory: "2Gi"

当前的思维方式:

节点具有X内存总可用,但是从X内存中只有Y实际上是可分配的,因为保留了空间。然而,当在os.totalmem()中运行node.js时,我仍然能够看到Node被允许分配X内存。

我在这里想的是,Node.js之所以分配到X,是因为它的垃圾收集应该从Y开始,而不是X。然而,由于我的限制,我实际上期望它看到的是极限,而不是K8S节点的内存限制。

问题

还有什么事情我应该试着解决吗?以前有人有过这个吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-24 13:40:26

您不知道NodeJS应用程序在容器中运行。它只看到Linux内核报告的内存量(它总是报告节点内存总量)。您应该让应用程序意识到cgroup的限制,请参阅https://medium.com/the-node-js-collection/node-js-memory-management-in-container-environments-7eb8409a74e8

关于驱逐:当你设置了记忆限制--这解决了你的驱逐问题吗?

也不要太信任kubectl top pods。它总是以延迟的方式显示数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65852051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档