[置顶] kubernetes--资源管理
概念
默认情况下,kubernetes不会限制pod等资源对象使用系统资源,单个pod或者容器可以无限制使用系统资源。
kubernetes的资源管理分为资源请求(request)和资源限制(limit),资源请求能够保证Pod有足够的资源来运行,而资源限制则是防止某个Pod无限制地使用资源,导致其他Pod崩溃。kubernetes1.5之前的版本只支持CPU和内存这两种资源类型。
三种方式
kubernetes的资源管理有3种方式,分别是单个资源对象的资源管理(以下简称resource)、limitranges、resourcequotas。resource和limitranges可以单独使用,也可以同时使用,而resourcequotas必须配合resource或者limitranges使用。limitranges和resourcequotas是针对于namespace的。
单个资源对象的资源管理
resource是针对资源对象中单个容器进行资源管理,在创建/变更资源对象时指定的。
详情请见http://blog.csdn.net/liyingke112/article/details/76155428
limitranges
LimitRange(简称limits)基于namespace的资源管理,包括pod和container的最小、最大和default、defaultrequests等。一旦创建limits,以后创建资源时,K8S将该limits资源限制条件默认&强制给pod,创建后发现不符合规则,将暂停创建pod。
详情请见http://blog.csdn.net/liyingke112/article/details/77198045
resourcequotas
Resource Quotas(资源配额,简称quota)是为了namespace进行资源配额,限制资源使用的一种策略。对于资源管理来说,quota是管理该namespace下所有资源对象的CPU、内存的limits和request的总量,如果超过该限制,资源对象无法创建。
详情请见http://blog.csdn.net/liyingke112/article/details/77369427
配置规则
1、每个namespace有且只有一个limits和quota
2、limits的同种类型(CPU或者memory)配置规则:
每个容器(type: container):max>=default>=defaultRequest>min
每个pod(type: pod):max>=min
pod和容器对应关系:容器max*容器数<=pod max;容器min*容器数<=pod min
3、在同一个namespace下,limits和单个资源对象的资源管理(resource)同时使用,同种类型(CPU或者memory)配置规则:resource的单个资源配置范围不能超过limit的容器范围,总和不能超过limit的pod范围。
具体如下:
resource的request(如有多个容器,所有的)>=limits的容器的defaultrequets
resource的request的总和>=limits的pod的min
resource的limit(如有多个容器,所有的)<=limits的容器的requets*容器数
resource的limit的总和<=limits的pod的max
配置正确,kubernetes将按照resource进行资源管理,如果配置错误,无法创建对象。
4、quota需要配合limits或者resource,如果没有配置limits时,每次创建对象时,必须配置resource,否则无法创建对象
5、该namespace下,所有pod/容器的CPU或者memory的limit、request的任意一种总量大于quota相对应的值后,无法分配更多的系统资源,无法创建新的资源对象,无法扩容RC、RS等。
使用心得
1、资源管理对象单一性
尽量使用limits针对容器(更好)或者pod的资源管理,尽量不同时针对容器和pod,在一pod多容器情况下,即使有充足系统资源,创建资源对象失败几率高。
在limits使用的namespace下,最好不要在创建资源时使用source。
2、资源管理类型单一性
使用资源限制(limit或者max)或者资源请求(request或者min)
同时使用时,最好保持“1、资源管理对象单一性”
3、服务部署单一性
由于limits会针对该namespace下的所有pod或者容器,所以在该namespace下尽量部署资源需求相同的服务
4、合理配置
[置顶] kubernetes--资源管理的更多相关文章
- [置顶]
kubernetes创建资源yaml文件例子--pod
kubernetes创建pod的yaml文件,参数说明 apiVersion: v1 #指定api版本,此值必须在kubectl apiversion中 kind: Pod #指定创建资源的角色/类型 ...
- [置顶]
kubernetes资源对象--ResourceQuotas
概念 Resource Quotas(资源配额,简称quota)是对namespace进行资源配额,限制资源使用的一种策略. K8S是一个多用户架构,当多用户或者团队共享一个K8S系统时,SA使用qu ...
- [置顶]
kubernetes资源对象--limitranges
概念 LimitRange(简称limits)基于namespace的资源管理,包括pod和container的最小.最大和default.defaultrequests等. 一旦创建limits,以 ...
- [置顶]
kubernetes资源类型--ingress
Ingress在K8S1.1之前还没有. 概念 Ingress是一种HTTP方式的路由转发机制,为K8S服务配置HTTP负载均衡器,通常会将服务暴露给K8S群集外的客户端. Ingress是一个允许入 ...
- [置顶]
kubernetes资源类型--DaemonSet
概念 DaemonSet能够让所有(或者特定)的节点运行同一个pod. 当节点加入到K8S集群中,pod会被(DaemonSet)调度到该节点上运行,当节点从K8S集群中被移除,被DaemonSet调 ...
- [置顶]
kubernetes资源类型--secret和Service Account
secret 概念 secret对象类型主要目的是保存和处理敏感信息/私密数据,比如密码,OAuth tokens,ssh keys等信息.将这些信息放在secret对象中比 直接放在pod或dock ...
- [置顶]
kubernetes创建资源yaml文件例子--rc
apiVersion: v1 #指定api版本,此值必须在kubectl apiversion中 kind: ReplicationController #指定创建资源的角色/类型 metadata: ...
- [置顶]
kubernetes资源对象--Label
概念 Label机制是K8S中一个重要设计,通过Label进行对象弱关联,灵活地分类和选择不同服务或业务,让用户根据自己特定的组织结构以松耦合方式进行服务部署. Label是一对KV,对用户而言非常有 ...
- [置顶]
kubernetes资源对象--Horizontal Pod Autoscaling(HPA)
概念 HPA全称Horizontal Pod Autoscaling,即pod的水平自动扩展.自动扩展主要分为两种,其一为水平扩展,针对于实例数目的增减:其二为垂直扩展,即单个实例可以使用的资源的增减 ...
- [置顶]
kubernetes资源对象--ConfigMap
原理 很多生产环境中的应用程序配置较为复杂,可能需要多个config文件.命令行参数和环境变量的组合.使用容器部署时,把配置应该从应用程序镜像中解耦出来,以保证镜像的可移植性.尽管Secret允许类似 ...
随机推荐
- SVN客户端使用手册
使用svn进行源代码版本控制,代码管理利器. 优点: 使用方便,与文件管理器集成.速度快,稳定. 实现代码比较,比如对历史和当前代码进行比较. 解决多人同时编写代码时代码重复修改困难. 安装: 下载网 ...
- lombok 去除麻烦的实体类get和set,toString书写
首先在pom.xml中添加 <dependency> <groupId>org.projectlombok</groupId> <artifactId> ...
- J2EE的十三种技术——JDBC
背景: 之前准备软考的时候,我们就学习过J2SE的视频.在进入J2EE之前,一定要复习和回顾下Java的基础知识,这对以后的学习十分重要.首先,简单回忆下java的体系结构.Java有三个体系结构:J ...
- 【bzoj4419】[Shoi2013]发微博 STL-set
题目描述 刚开通的SH微博共有n个用户(1..n标号),在短短一个月的时间内,用户们活动频繁,共有m条按时间顺序的记录: ! x 表示用户x发了一条微博: + x y 表示用户x和用户y成为了好友 ...
- 【GXZ的原创】平衡树性能测试
本文作者为 GXZlegend ,转载请注明 出处 ,谢谢! 〇.序言 前些日子闲的蛋疼做了个平衡树性能测试... 主要是因为学会的平衡树越来越多,做题时却不知道写哪个... 本想结合效率和代码复杂度 ...
- RocketMQ 源码分析 RouteInfoManager(四)
在上一章分析了NamesrvController的构造函数时,会生成一个RouteInfoManager对象,该对象存放着整个消息集群的相关消息,所以这里单独拿出来分析.其实试想一下namesrv的功 ...
- c# tcplistener 与 client通信 服务端 今天写一下
using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Lin ...
- Java并发笔记(二)
1. 活跃性危险 死锁(最常见) 饥饿 当线程由于无法访问它所需的资源而不能继续执行时,就发生了饥饿.引发饥饿最常见资源就是CPU时钟周期. 活锁 活锁指的是任务或者执行者没有被阻塞,由于某些条件没有 ...
- [ CodeVS冲杯之路 ] P1116
不充钱,你怎么AC? 题目:http://codevs.cn/problem/1116/ 数据很小,DFS可A,每层枚举颜色,判断相邻的点是否有重复的颜色,记得回溯时把颜色染回0,即无颜色 这里我使用 ...
- Windows注册与删除mysql服务
1.删除服务: (1)采用windows自带的服务管理工具:参考:http://www.cnblogs.com/qlqwjy/p/8010598.html sc delete MySQL57 (2)m ...