1-1 分配内存资源给容器和POD

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1-1 分配内存资源给容器和POD相关的知识,希望对你有一定的参考价值。

这一小节讲解如何分配内存请求和对一个容器做内存限制。一个容器被保证拥有足够的内存可以处理请求,但是也不允许使用超过限制的内存。

开始之前

需要拥有一个k8s集群
需要安装好一个kubectl 工具,并且能够与集群通信。

如果没有准备好,你可以使用minikube或者使用以下的练习场地。

https://www.katacoda.com/courses/kubernetes/playground

http://labs.play-with-k8s.com/

可以使用以下命令,检测版本

kubectl version

集群中的每个节点,至少拥有300MB的内存。

本文中的一些步骤要求你在集群中有运行 metrics-server 的服务,如果你没有运行,你可以跳过这些步骤。

如果你使用的是minikube ,你可以使用以下命令来启用:

minikube addons enable metrics-server

检查 metrics-server是否运行,或者其它提供 metrics api 资源 (metrics.k8s.io),你可以使用以下的命令

kubectl get apiservices

如果 metrics api 资源是可用的,会响应以下内容:

NAME
v1beta1.metrics.k8s.io

创建命名空间

创建命名空间来保证当前的测试环境和集群的其它环境的隔离的。

定义一个内存请求和内存限制

定义一个内存请求:
resources:requests

定义一个内存限制:
resources:limits

在这个练习中,你创建了一个POD包含一个容器,容器申请了100MB的内存,并且设置了200MB内存限制。

apiVersion: v1
kind: Pod
metadata:
name: memory-demo
namespace: mem-example
spec:
containers:
name: memory-demo-ctr
image: polinux/stress
resources:
limits:
memory: "200Mi"
requests:
memory: "100Mi"
command: ["stress"]
args: ["--vm", "1", "--vm-bytes", "150M", "--vm-hang", "1"]

args是 提供容器启动的参数。

"--vm-bytes", "150M" 告诉容器分配多少内存

创建一个POD

kubectl create -f https://k8s.io/examples/pods/resource/memory-request-limit.yaml --namespace=mem-example

验证POD是否运行

kubectl get pod memory-demo --namespace=mem-example

查看POD的详细信息,并输出到yaml

kubectl get pod memory-demo --output=yaml --namespace=mem-example

获取POD的技术指标
kubectl top pod memory-demo --namespace=mem-example

显示的内存大小是 162,900,000 bytes ,大约是150MB,大于分配的100MB内存,小于200MB的内存限制。

NAME CPU(cores) MEMORY(bytes)
memory-demo <something> 162856960

删除POD

kubectl delete pod memory-demo --namespace=mem-example

以上是关于1-1 分配内存资源给容器和POD的主要内容,如果未能解决你的问题,请参考以下文章

1-2 给容器和PODS 分配CPU资源

Kubernetes 内存管理及调度

Kubernetes Pod 驱逐详解

centos7下安装docker(9容器对资源的使用限制-内存)

YARN(含MR2)常用配置

YARN(含MR2)常用配置