设为首页 收藏本站
查看: 1097|回复: 0

[经验分享] [置顶]kubernetes资源对象--limitranges

[复制链接]

尚未签到

发表于 2018-1-5 12:13:30 | 显示全部楼层 |阅读模式
概念
  

  
LimitRange(简称limits)基于namespace的资源管理,包括pod和container的最小、最大和default、defaultrequests等。
  
一旦创建limits,以后创建资源时,K8S将该limits资源限制条件默认/强制给pod,创建后发现不符合规则,将暂停创建pod。
  
在创建资源时,用户可以为pod自定义资源管理限制,在创建时会去检查和匹配limits值,发现不匹配将在创建时报错。创建后,该pod的资源使用遵守自定义规则,而不会遵守namespace的limits限制。

例子
  

kubectl delete -f lykops-limitrangerange.yaml  
cat << EOF > lykops-limitrangerange.yaml
  
apiVersion: v1
  
kind: LimitRange
  
metadata:
  namespace: default
  name: lykops-limitrange
  labels:
  project: lykops
  app: limitrange
  version: v1
  
spec:
  limits:
  - max:
  cpu: 1
  memory: 1Gi
  min:
  cpu: 0.05
  memory: 64Mi
  type: Pod
  #注意pod只能这么多参数
  - default:
  cpu: 0.2
  memory: 200Mi
  defaultRequest:
  cpu: 0.01
  memory: 16Mi
  max:
  cpu: 0.25
  memory: 256Mi
  min:
  cpu: 0.005
  memory: 8Mi
  #container只能这么多参数
  type: Container
  
EOF
  
kubectl create -f lykops-limitrangerange.yaml
  

  

参数说明

每个容器(type: container)
  

min:资源紧张时,最低保证可以使用的资源是: CPU 0.005个核,内存8M  
max:资源空闲时,最大可以使用的资源是:CPU 0.25个核,内存256M
  
default:默认时,限制使用的资源是:CPU 0.2个核,内存200M
  
defaultRequest:默认时,最低保证可以使用的资源是: CPU 0.01个核,内存16M
  

  

每个pod(type: pod)
  

min:最低保证可以使用的资源是: CPU 0.05个核,内存64M  
max最大可以使用的资源是:CPU 1个核,内存1G
  

  

使用规则
  
1、每个namespace应该只有一个limits;
  
2、limits值设置:
  

每个容器(type: container)  max>=default>=defaultRequest>min
  
每个pod(type: pod)
  max>=min
  
整个
  容器的max*容器数<=pod的max
  容器的min*容器数<=pod的min
  

  

  
3、创建资源时,pod自定义资源限制的规则:
  

自定义的单个request>=limits的容器的defaultrequets  
自定义的request的总和>=limits的pod的min
  
自定义的单个limit<=limits的容器的requets
  
自定义的limit的总和<=limits的pod的max
  

  

使用心得
  
为了防止出现创建资源失败的情况,个人建议:
  

1、只使用limits的pod或者container中的一种,尽量不使用同时使用,特别在pod中有多容器需求的情况下。  
2、尽量使用max,尽量不同时使用max和min
  
3、由于limits会针对该namespace下的所有新建的pods,所以在该namespace下应该运行哪些资源需求相同的业务
  
4、在复杂的limits配置下,不要在创建资源时使用自定义配置。
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-431860-1-1.html 上篇帖子: 【译】Asp.net core应用在 Kubernetes上内存使用率过高问题分析 下篇帖子: Kubernetes Nginx Service发现并访问
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表