目录

k8s容器资源限制

为容器和 Pod 分配内存资源

为容器和 Pods 分配 CPU 资源

为命名空间配置默认的内存请求和限制

硬限制


 k8s容器资源限制

Kubernetes采用request和limit两种限制类型来对资源进行分配。

request(资源需求)

limit(资源限额)

详情参照官网:https://kubernetes.io/zh/docs/concepts/policy/resource-quotas/


为容器和 Pod 分配内存资源

详情参照官网:https://kubernetes.io/zh/docs/tasks/configure-pod-container/assign-memory-resource/

将内存 请求 (request)和内存 限制 (limit)分配给一个容器。 我们保障容器拥有它请求数量的内存,但不允许使用超过限制数量的内存。

内存限制示例

kubectl apply -f memory.yaml
kubectl get pod
#  memory.yaml


apiVersion: v1
kind: Pod
metadata:
  name: memory-demo
spec:
  containers:
  - name: memory-demo
    image: stress
    args:
    - --vm
    - "1"
    - --vm-bytes
    - 200M
    resources:
      requests:
        memory: 50Mi
      limits:
        memory: 100Mi

示例截图():


为容器和 Pods 分配 CPU 资源

详情参照官网:https://kubernetes.io/zh/docs/tasks/configure-pod-container/assign-cpu-resource/

为容器设置 CPU request(请求) 和 CPU limit(限制)。 容器使用的 CPU 不能超过所配置的限制。 如果系统有空闲的 CPU 时间,则可以保证给容器分配其所请求数量的 CPU 资源。

cpu 限制示例

kubectl apply -f cpu.yaml
kubectl get pod
kubectl describe pod cpu-demo
# cpu.yaml


apiVersion: v1
kind: Pod
metadata:
  name: cpu-demo
spec:
  containers:
  - name: cpu-demo
    image: stress
    resources:
      limits:
        cpu: "1"
      requests:
        cpu: "0.5"
    args:
    - -c
    - "1"

示例截图(错误示范):

 

 示例截图(正确截图):

 


为命名空间配置默认的内存请求和限制

详情参照官网:https://kubernetes.io/zh/docs/tasks/administer-cluster/manage-resources/memory-default-namespace/

给命名空间配置默认的内存请求和限制。 如果在一个有默认内存限制的命名空间创建容器,该容器没有声明自己的内存限制时, 将会被指定默认内存限制。 Kubernetes 还为某些情况指定了默认的内存请求,

基于namespace 限制

kubectl apply -f ns.yaml
kubectl get pod
kubectl get limitranges
kubectl describe limitranges limitrange-memory
#  ns.yaml


apiVersion: v1
kind: LimitRange
metadata:
  name: limitrange-memory
spec:
  limits:
  - default:
      cpu: 0.5
      memory: 512Mi
    defaultRequest:
      cpu: 0.1
      memory: 256Mi
    max:
      cpu: 1
      memory: 1Gi
    min:
      cpu: 0.1
      memory: 100Mi
    type: Container

示例截图:

 


硬限制

注意:创建了ResourceQuota 必须设置资源配额

配置命名空间下 Pod 配额:限制pod 个数。(详情参照官网:https://kubernetes.io/zh/docs/tasks/administer-cluster/manage-resources/quota-pod-namespace/

配置一个命名空间下可运行的 Pod 个数配额。 你可以使用 ResourceQuota 对象来配置配额。

kubectl apply -f quota.yaml
kubectl describe resourcequotas
kubectl get pod
#  quota.yaml 



apiVersion: v1
kind: ResourceQuota
metadata:
  name: mem-cpu-demo
spec:
  hard:
    requests.cpu: "0.5"
    requests.memory: 1Gi
    limits.cpu: "1"
    limits.memory: 2Gi

---
apiVersion: v1
kind: ResourceQuota
metadata:
  name: pod-demo
spec:
  hard:
    pods: "2"

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐