Kubernetes 杀死 Mongo 容器

Pan*_*nda 5 mongodb docker kubernetes

我们有一种情况,当 Kubernetes 达到容器的最大内存限制时,它会杀死 Mongo 容器。即使它期望 K8s 以这种方式工作,但感觉 Mongo 并没有重用它的内存,因为它每天都在不断增加内存使用量,即使用户负载和事务是相同的,所以要检查我们如何限制Mongo 达到容器的最大内存或定期刷新 Mongo 内存。

我试图增加内存,这有助于 Pod 在 K8 杀死它之前继续运行几天

     "containers": [
          {
            "name": "mongo",
            "image": "dockercentral.com:5870/com.public/mongodb:3.6",
            "ports": [
              {
                "containerPort": 27017,
                "protocol": "TCP"
              }
            ]      
"resources": {
              "limits": {
                "cpu": "1",
                "memory": "24Gi"
              },
              "requests": {
                "cpu": "250m",
                "memory": "24Gi"
              }
            }
   "name": "MONGO_SECURITY",
                "value": "true"
              }
            ],
            "resources": {
              "limits": {
                "cpu": "500m",
                "memory": "1Gi"
              },
              "requests": {
                "cpu": "150m",
                "memory": "256Mi"
              }
            },
Run Code Online (Sandbox Code Playgroud)

use*_*688 2

基于MongoDB, Inc. 的 Stennie在对问题的评论中所写的内容。

kube .yaml 中的这个命令对我有用:

      command:
        - "sh"
        - "-c"
        - >
          echo "storage:" >>  /etc/mongod.conf;
          echo "    wiredTiger:" >>  /etc/mongod.conf;
          echo "       engineConfig:" >>  /etc/mongod.conf;
          echo "          cacheSizeGB: 2" >>  /etc/mongod.conf;
          echo "replication:" >> /etc/mongod.conf;
          echo "  replSetName: YOUR_REPL_NAME" >> /etc/mongod.conf;
          mongod --config /etc/mongod.conf;
Run Code Online (Sandbox Code Playgroud)

还有一种方法可以在运行时设置它:

db.adminCommand( { "setParameter": 1, "wiredTigerEngineRuntimeConfig":"cache_size=2G"})
Run Code Online (Sandbox Code Playgroud)

这也工作得很好,但通过 kuberneties yaml 文件看起来更容易,因为要发出命令,您必须等到 mongo 启动并运行。

注意:确保您的:

      resources:
        limits:
          memory:
Run Code Online (Sandbox Code Playgroud)

允许系统额外使用 1G 。