本文主要是介绍kubernetes: 配额管理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
背景:
当用多个团队或者用户共用同一个集群的时候难免会有资源竞争的情况发生,这时候就需要对不同团队或用户的资源使用配额做出限制。
方案:
目前有两种资源分配管理相关的控制策略插件 ResourceQuota 和 LimitRange
两种控制策略的作用范围都是对于某一 namespace,ResourceQuota 用来限制 namespace 中所有的 Pod 占用的总的资源 request 和 limit,而 LimitRange 是用来设置 namespace 中 Pod 的默认的资源 request 和 limit 值。
资源配额分为三种类型:
计算资源配额
存储资源配额
对象数量配额
ResourceQuota:
计算资源配额
apiVersion: v1
kind: ResourceQuota
metadata:name: compute-resourcesnamespace: dev
spec:hard:pods: "20"requests.cpu: "20"requests.memory: 100Gilimits.cpu: "40"limits.memory: 200Gi
数量资源配额
apiVersion: v1
kind: ResourceQuota
metadata:name: object-countsnamespace: dev
spec:hard:configmaps: "10"persistentvolumeclaims: "4"replicationcontrollers: "20"secrets: "10"services: "10"services.loadbalancers: "2"
部署
kubectl apply -f <yaml> -n dev
查看部署结果
kubectl get ResourceQuota -n dev
查看资源使用情况
kubectl describe ResourceQuota -n dev
LimitRange
apiVersion: v1
kind: LimitRange
metadata:name: limit-range
spec:limits:- default:memory: 2Gicpu: 1defaultRequest:memory: 1Gicpu: 1type: Container
default 即 limit 的值
defaultRequest 即 request 的值
部署
kubectl apply -f <yaml> -n dev
查看部署结果
kubectl get LimitRange -n dev
测试
创建一个pod试试,发现规则已经生效
参考文档:
https://k8smeetup.github.io/docs/tasks/administer-cluster/cpu-default-namespace/
https://k8smeetup.github.io/docs/concepts/policy/resource-quotas/
https://kubernetes.io/zh/docs/concepts/policy/resource-quotas/
这篇关于kubernetes: 配额管理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!