为什么kubernetes报告调度错误是因为内存资源限制?
我试图定义一个有资源限制的作业,下面是一个基本的pod定义:为什么kubernetes报告调度错误是因为内存资源限制?,kubernetes,Kubernetes,我试图定义一个有资源限制的作业,下面是一个基本的pod定义: apiVersion: v1 kind: Pod metadata: name: busybox labels: app: busybox spec: containers: - name: busybox image: busybox args: [/bin/sh, -c, 'sleep 600'] resources
apiVersion: v1
kind: Pod
metadata:
name: busybox
labels:
app: busybox
spec:
containers:
- name: busybox
image: busybox
args: [/bin/sh, -c, 'sleep 600']
resources:
limits:
memory: "1Gi"
cpu: "1"
requests:
cpu: "0.1"
memory: "400Mi"
nodeSelector:
gitlab: "true"
在资源请求为“300Mi”的情况下声明作业时,此操作有效,但在请求为“400Mi”的情况下,此操作失败,原因是:
52m 29s 183默认调度程序警告失败调度没有匹配以下所有谓词的可用节点::内存不足(3),匹配节点选择器(2)
从kubectl descripe节点获取相关信息
显示了以下参考资料:
容量:cpu:2
内存:2052872Ki
豆荚:110
可分配:
cpu:2
内存:1950472Ki
豆荚:110 再往下,通过系统信息,我得到以下信息:
已分配资源:
(总限额可能超过100%,即超额承诺。)
CPU请求CPU限制内存请求内存限制
------------ ---------- --------------- -------------
150英里(7%)1英里(50%)12英里(0%)128英里(6%)
活动:
现在,为什么这个作业拒绝400英里的请求,但在300英里的请求下工作正常?我加上或减去的任何东西都不能表明2GiB可访问内存(根据上面的“可分配”)会导致此作业无法调度
我只有一个容器(为了演示而使用busybox)
命名空间没有资源配额
重新启动apiserver似乎允许POD进行调度,但只允许一段时间。正确答案是: 因为我使用的etcd版本太旧了 具体来说,升级到3.1.7或更高版本解决了问题
Allocated resources:
(Total limits may be over 100 percent, i.e., overcommitted.)
CPU Requests CPU Limits Memory Requests Memory Limits
------------ ---------- --------------- -------------
150m (7%) 1 (50%) 12Mi (0%) 128Mi (6%)
Events: <none>