如何在Google云平台上增加Kubernetes引擎的资源和限制

如何在Google云平台上增加Kubernetes引擎的资源和限制,kubernetes,google-cloud-platform,google-kubernetes-engine,kubernetes-pod,Kubernetes,Google Cloud Platform,Google Kubernetes Engine,Kubernetes Pod,我正在尝试为我在Kuberenetes引擎上的部署添加资源和限制,因为我在pod上的一个部署不断被逐出,并显示一条错误消息节点资源:内存不足。容器模型运行时使用的是1904944Ki,这超出了其0的请求。我假设可以通过添加资源请求来解决该问题 当我尝试添加资源请求并部署时,部署是成功的,但是当我返回并使用命令查看Pod的详细信息时 kubectl get pod default pod name--output=yaml--namespace=default 它仍然说pod有cpu请求:100m

我正在尝试为我在Kuberenetes引擎上的部署添加资源和限制,因为我在pod上的一个部署不断被逐出,并显示一条错误消息
节点资源:内存不足。容器模型运行时使用的是1904944Ki,这超出了其0的请求。
我假设可以通过添加资源请求来解决该问题

当我尝试添加资源请求并部署时,部署是成功的,但是当我返回并使用命令查看Pod的详细信息时
kubectl get pod default pod name--output=yaml--namespace=default
它仍然说pod有cpu请求:100m,并且没有提到我分配的内存。我猜100m的cpu请求是默认的。请告诉我如何分配请求和限制,我用于部署的代码如下:

kubectl run model-run --image-pull-policy=Always --overrides='
{
    "apiVersion": "apps/v1beta1",
    "kind": "Deployment",
    "metadata": {
        "name": "model-run",
        "labels": {
            "app": "model-run"
        }
    },
    "spec": {
        "selector": {
            "matchLabels": {
                "app": "model-run"
            }
        },
        "template": {
            "metadata": {
                "labels": {
                    "app": "model-run"
                }
            },
            "spec": {
                "containers": [
                    {
                        "name": "model-run",
                        "image": "gcr.io/some-project/news/model-run:development",
                    "imagePullPolicy": "Always",
                      "resouces": {
                        "requests": [
                          {
                            "memory": "2048Mi",
                            "cpu": "500m"
                          }
                        ],
                        "limits": [
                          {
                            "memory": "2500Mi",
                            "cpu": "750m"
                          }
                        ]
                      },
                        "volumeMounts": [
                            {
                                "name": "credentials",
                                "readOnly": true,
                                "mountPath":"/path/collection/keys"
                            }
                        ],
                        "env":[
                            {
                                "name":"GOOGLE_APPLICATION_CREDENTIALS",
                                "value":"/path/collection/keys/key.json"
                            }
                                ]
                    }
                ],
                "volumes": [
                    {
                        "name": "credentials",
                        "secret": {
                            "secretName": "credentials"
                        }
                    }
                ]
            }
        }
    }
}
'  --image=gcr.io/some-project/news/model-run:development

任何解决方案都将受到欢迎

似乎我们无法通过--覆盖标志覆盖限制。 您可以做的是使用kubectl命令通过限制

kubectl run model-run --image-pull-policy=Always --requests='cpu=500m,memory=2048Mi' --limits='cpu=750m,memory=2500Mi' --overrides='
{
    "apiVersion": "apps/v1beta1",
    "kind": "Deployment",
    "metadata": {
        "name": "model-run",
        "labels": {
            "app": "model-run"
        }
    },
    "spec": {
        "selector": {
            "matchLabels": {
                "app": "model-run"
            }
        },
        "template": {
            "metadata": {
                "labels": {
                    "app": "model-run"
                }
            },
            "spec": {
                "containers": [
                    {
                        "name": "model-run",
                        "image": "gcr.io/some-project/news/model-run:development",
                    "imagePullPolicy": "Always",
                      "resouces": {
                        "requests": [
                          {
                            "memory": "2048Mi",
                            "cpu": "500m"
                          }
                        ],
                        "limits": [
                          {
                            "memory": "2500Mi",
                            "cpu": "750m"
                          }
                        ]
                      },
                        "volumeMounts": [
                            {
                                "name": "credentials",
                                "readOnly": true,
                                "mountPath":"/path/collection/keys"
                            }
                        ],
                        "env":[
                            {
                                "name":"GOOGLE_APPLICATION_CREDENTIALS",
                                "value":"/path/collection/keys/key.json"
                            }
                                ]
                    }
                ],
                "volumes": [
                    {
                        "name": "credentials",
                        "secret": {
                            "secretName": "credentials"
                        }
                    }
                ]
            }
        }
    }
}
' --image=gcr.io/some-project/news/model-run:development
节点的资源(内存)不足。容器模型运行使用的是1904944Ki,这超出了其0的请求

起初,消息似乎是
节点本身缺少资源,但第二部分让我相信您尝试提高容器的请求限制是正确的

请记住,如果更改后仍面临错误,则可能需要向集群中添加模式强大的节点池

我看过你的命令,有几个问题我想强调一下:

  • kubectl run
    在1.12版中对除POD之外的所有资源进行了测试,并在1.18版中退役
  • apiVersion:“apps/v1beta1
    是,从v1.16开始不再支持它,我将其替换为
    apps/v1
  • spec.template.spec.container
    中,它被写为
    “resources”
    而不是
    “resources”
  • 修复资源后,下一个问题是
    请求
    限制
    是以
    数组
    格式写入的,但它们必须位于
    列表中,否则会出现此错误:
  • 以下是命令的固定格式:
  • 现在,在我的Kubernetes发动机组上应用它之后,
    v1.15.11-gke.13
    ,这里是
    kubectl get pod X-o yaml
    的输出:
  • 您可以看到资源限制和请求已设置

如果您还有任何问题,请在评论中告诉我

这是打字错误吗?“linits”@koe很抱歉在这里发布时出现了拼写错误。这个问题仍然存在。我尝试在kubectl命令中使用请求和限制,但没有成功。相同的问题?您可以在kubectl命令中添加
--restart=Always
标志并重试吗?是的,同样的问题。即使添加了重新启动标志“收回”,pod也会被收回?你能找到驱逐的原因吗?可能您没有足够资源的节点来调度pod。减少资源请求和限制,然后重试。胖节点通常会解决此问题
kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.
error: v1beta1.Deployment.Spec: v1beta1.DeploymentSpec.Template: v1.PodTemplateSpec.Spec: v1.PodSpec.Containers: []v1.Container: v1.Container.Resources: v1.ResourceRequirements.Limits: ReadMapCB: expect { or n, but found [, error found in #10 byte of ...|"limits":[{"cpu":"75|..., bigger context ...|Always","name":"model-run","resources":{"limits":[{"cpu":"750m","memory":"2500Mi"}],"requests":[{"cp|...
kubectl run model-run --image-pull-policy=Always --overrides='{
  "apiVersion": "apps/v1",
  "kind": "Deployment",
  "metadata": {
    "name": "model-run",
    "labels": {
      "app": "model-run"
    }
  },
  "spec": {
    "selector": {
      "matchLabels": {
        "app": "model-run"
      }
    },
    "template": {
      "metadata": {
        "labels": {
          "app": "model-run"
        }
      },
      "spec": {
        "containers": [
          {
            "name": "model-run",
            "image": "nginx",
            "imagePullPolicy": "Always",
            "resources": {
              "requests": {
                "memory": "2048Mi",
                "cpu": "500m"
              },
              "limits": {
                "memory": "2500Mi",
                "cpu": "750m"
              }
            },
            "volumeMounts": [
              {
                "name": "credentials",
                "readOnly": true,
                "mountPath": "/path/collection/keys"
              }
            ],
            "env": [
              {
                "name": "GOOGLE_APPLICATION_CREDENTIALS",
                "value": "/path/collection/keys/key.json"
              }
            ]
          }
        ],
        "volumes": [
          {
            "name": "credentials",
            "secret": {
              "secretName": "credentials"
            }
          }
        ]
      }
    }
  }
}'  --image=gcr.io/some-project/news/model-run:development
$ kubectl get pods
NAME                         READY   STATUS    RESTARTS   AGE
model-run-7bd8d79c7d-brmrw   1/1     Running   0          17s

$ kubectl get pod model-run-7bd8d79c7d-brmrw -o yaml
apiVersion: v1
kind: Pod
metadata:
  labels:
    app: model-run
    pod-template-hash: 7bd8d79c7d
    run: model-run
  name: model-run-7bd8d79c7d-brmrw
  namespace: default
spec:
  containers:
  - env:
    - name: GOOGLE_APPLICATION_CREDENTIALS
      value: /path/collection/keys/key.json
    image: nginx
    imagePullPolicy: Always
    name: model-run
    resources:
      limits:
        cpu: 750m
        memory: 2500Mi
      requests:
        cpu: 500m
        memory: 2Gi
    volumeMounts:
    - mountPath: /path/collection/keys
      name: credentials
      readOnly: true
    - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
      name: default-token-tjn5t
      readOnly: true
  nodeName: gke-cluster-115-default-pool-abca4833-4jtx
  restartPolicy: Always
  volumes:
  - name: credentials
    secret:
      defaultMode: 420
      secretName: credentials