CKAD-CN 考试知识点分享(15) 限制 内存 request 和 limit
您必须连接到正确的主机。不这样做可能导致零分。
[candidate@base] $ ssh ckad00032
任务目标
在 haddock
命名空间中,名为 nosql
的 Deployment 因容器内存资源耗尽而无法启动。需要更新该 Deployment,确保 Pod 容器满足以下要求:
- 请求 15Mi 的内存;
- 内存限制设置为命名空间
haddock
最大内存容量的一半。
可以通过 /ckad/chief-cardinal/nosql.yaml
文件找到并编辑 nosql
Deployment 的配置清单。
步骤一:查看命名空间的资源配额和限制
首先,我们需要确定 haddock
命名空间的最大内存容量。使用以下命令查看命名空间的资源配额和限制:
kubectl describe ns haddock
输出示例:
Name: haddock
Labels: <none>
Annotations: <none>
Status: ActiveResource QuotasName: mem-limit-rangeNamespace: haddockResource Used Hard-------- ---- ----limits.memory 0 40Mirequests.memory 0 20MiLimit RangeType Resource Min Max Default Request Default Limit Max Limit/Request Ratio---- -------- --- --- --------------- ------------- -----------------------Container memory - 40Mi - - -
从上面的信息中,我们可以看到 haddock
命名空间最大内存容量(limits.memory)是 40Mi。
步骤二:计算内存限制
根据题目要求,Pod 的内存限制应该是命名空间最大内存容量的一半,即:
40Mi / 2 = 20Mi
因此,Pod 的内存限制应设置为 20Mi。
步骤三:修改 Deployment 配置文件
打开 /ckad/chief-cardinal/nosql.yaml
文件进行编辑:
vim /ckad/chief-cardinal/nosql.yaml
找到容器定义部分,并添加或修改 resources
字段如下:
spec:template:spec:containers:- name: nosql-containerimage: your-image-name:tagresources:requests:memory: "15Mi"limits:memory: "20Mi"
✅ 注意:
memory: "15Mi"
表示请求的内存大小;memory: "20Mi"
表示内存使用的上限。
步骤四:应用更改
保存文件后,应用新的配置以更新 Deployment:
kubectl apply -f /ckad/chief-cardinal/nosql.yaml
步骤五:验证更新结果
检查 Pods 是否正常运行,并确认资源请求和限制是否正确应用:
kubectl get pods -n haddock
查看特定 Pod 的详细信息,包括资源请求和限制:
kubectl describe pod <pod-name> -n haddock
在输出中查找 Requests
和 Limits
部分,确认如下内容:
Limits:memory: 20Mi
Requests:memory: 15Mi
如果一切正常,您的 nosql
Deployment 现在应该能够成功启动 Pod,并且这些 Pod 将按照指定的要求请求和限制内存资源。
总结
通过上述步骤,我们完成了对 haddock
命名空间下 nosql
Deployment 的调整,使其 Pod 能够请求 15Mi 的内存,并将内存限制设定为命名空间允许的最大值的一半(本例中为 20Mi)。这不仅解决了 Pod 因资源不足而无法启动的问题,也确保了资源的有效利用与管理。