如何在Google云平台上增加Kubernetes引擎的资源和限制
我正在尝试为我在Kuberenetes引擎上的部署添加资源和限制,因为我在pod上的一个部署不断被逐出,并显示一条错误消息如何在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
节点资源:内存不足。容器模型运行时使用的是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