欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

k8s [资源管理] 1 - ResourceQuota 为命名空间配置内存和 CPU 配额

最编程 2024-04-06 19:38:49
...

k8s【资源管理】1--ResourceQuota为命名空间配置内存和CPU配额_sed



文章目录

  • ​1. 创建一个ResourceQuota​
  • ​2. 创建一个pod​

1. 创建一个ResourceQuota

apiVersion: v1
kind: ResourceQuota
metadata:
  name: mem-cpu-demo
spec:
  hard:
    requests.cpu: "1"
    requests.memory: 1Gi
    limits.cpu: "2"
    limits.memory: 2Gi
kubectl create namespace quota-mem-cpu-example
kubectl apply -f https://k8s.io/examples/admin/resource/quota-mem-cpu.yaml ;--namespace=quota-mem-cpu-example
kubectl get resourcequota mem-cpu-demo ;--namespace=quota-mem-cpu-example ;--output=yaml

2. 创建一个pod

apiVersion: v1
kind: Pod
metadata:
  name: quota-mem-cpu-demo
spec:
  containers:
  - name: quota-mem-cpu-demo-ctr
    image: nginx
    resources:
      limits:
        memory: "800Mi"
        cpu: "800m"
      requests:
        memory: "600Mi"
        cpu: "400m"
kubectl apply -f https://k8s.io/examples/admin/resource/quota-mem-cpu-pod.yaml ;--namespace=quota-mem-cpu-example
kubectl get pod quota-mem-cpu-demo ;--namespace=quota-mem-cpu-example
kubectl get resourcequota mem-cpu-demo ;--namespace=quota-mem-cpu-example ;--output=yaml

输出显示配额以及已使用了多少配额。您可以看到Pod的内存和CPU请求以及限制没有超过配额。

status:
  hard:
    limits.cpu: "2"
    limits.memory: 2Gi
    requests.cpu: "1"
    requests.memory: 1Gi
  used:
    limits.cpu: 800m
    limits.memory: 800Mi
    requests.cpu: 400m
    requests.memory: 600Mi

注意,已用内存请求和此新内存请求的总和超过了内存请求配额。600 MiB + 700 MiB> 1 GiB。

尝试创建Pod:

kubectl apply -f https://k8s.io/examples/admin/resource/quota-mem-cpu-pod-2.yaml ;--namespace=quota-mem-cpu-example

没有创建第二个Pod。输出显示创建第二个Pod将导致内存请求总数超过内存请求配额。

Error from server (Forbidden): error when creating "examples/admin/resource/quota-mem-cpu-pod-2.yaml":
pods "quota-mem-cpu-demo-2" is forbidden: exceeded quota: mem-cpu-demo,
requested: requests.memory=700Mi,used: requests.memory=600Mi, limited: requests.memory=1Gi

参考资料:

  • ​https://kubernetes.io/docs/tasks/administer-cluster/manage-resources/quota-memory-cpu-namespace/​
  • ​为命名空间配置默认的内存请求和限制​
  • ​Pod开销​