`
lykops
  • 浏览: 86233 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

kubernetes--资源管理

 
阅读更多

本文基于kubernetes 1.5.2版本编写

概念

默认情况下,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*容器数 >= limits的pod的min

resource的limit的总和(如有多个容器,所有的)<= limits的容器的requets*容器数 <= 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下,最好不要在创建资源时使用resource。

2、资源管理类型单一性

使用资源限制(limit或者max)或者资源请求(request或者min)

同时使用时,最好保持“1、资源管理对象单一性”

3、服务部署单一性

由于limits会针对该namespace下的所有pod或者容器,所以在该namespace下尽量部署资源需求相同的服务

4、合理配置

分享到:
评论

相关推荐

    kubernetes-server-linux-amd64.tar.gz 安装包

    3. **kube-scheduler**:调度器根据资源需求、策略和其他因素将未调度的Pod(Kubernetes的基本运行单元)分配到合适的节点上。 4. **kube-controller-manager**:控制器管理器是一个包含了多个“控制器”的进程,如...

    kubernetes-node-linux-amd64.tar.gz

    至此,你的CentOS节点已经成功加入了Kubernetes集群,可以运行Pods和其他Kubernetes资源了。 总结,"kubernetes-node-linux-amd64.tar.gz"是Kubernetes为Linux AMD64架构准备的节点安装包,通过下载、解压、配置和...

    kubernetes-server-linux-amd64.tar

    Kubernetes(简称k8s)是Google开源的一款容器编排系统,它为容器化的应用提供了自动化部署、扩展和管理的解决方案。本篇文章将聚焦于“kubernetes-server-linux-amd64.tar”这一文件,深入解析其在Linux平台上的...

    kubernetes-client-linux-amd64.tar.gz

    Kubernetes客户端Linux AMD64资源包,`kubernetes-client-linux-amd64.tar.gz`,是专为基于Linux的AMD64(也称为x86_64)架构设计的Kubernetes命令行接口(CLI)工具集。这个压缩包包含了一系列用于与Kubernetes集群...

    kubernetes-server-linux-amd64.tar.gz

    Kubernetes是由Google开源的容器管理系统,它能够自动化容器的部署、扩展和管理,提供了一套强大的集群管理框架。Kubernetes支持多种容器运行时,如Docker,rkt等,旨在让应用部署在云环境或者数据中心变得更加简单...

    kubernetes-server-linux-amd64-v1.15.4.tar.gz

    Kubernetes,通常缩写为k8s,是一种流行的开源容器编排系统,用于自动化容器化应用程序的部署、扩展和管理。这个“kubernetes-server-linux-amd64-v1.15.4.tar.gz”文件是针对Linux 64位系统的Kubernetes服务器端...

    kubernetes-dashboard-v1.8.3 yaml文件

    Kubernetes Dashboard 是 Kubernetes 集群的一个重要组件,它提供了一个图形化的用户界面,使得集群管理员和开发者能够方便地管理和监控 Kubernetes 集群中的各种资源。`kubernetes-dashboard-v1.8.3` 是 Dashboard ...

    kubernetes-v1.16.2-server-linux-amd64.tar.gz

    Kubernetes(简称k8s)是Google开源的一款容器编排系统,它能够自动化容器化应用的部署、扩展和管理,为微服务架构提供了强大的支持。在本文中,我们将深入探讨Kubernetes v1.16.2版本,这是一个稳定且广泛使用的...

    kubernetes-node-linux-amd64.tar.gz-v1.14.11,二进制下载

    Kubernetes是当今最流行的容器编排系统,用于管理分布式应用程序的部署、扩展和运行。这个压缩包文件"**kubernetes-node-linux-amd64.tar.gz**"是Kubernetes针对Linux平台,AMD64(也称为x86_64)架构的节点(Node)...

    kubernetes-client-darwin-amd64.tar.gz

    Kubernetes客户端是用于与Kubernetes集群交互的工具,它允许用户执行各种操作,如部署应用、管理资源、查看集群状态等。"kubernetes-client-darwin-amd64.tar.gz" 是一个针对苹果 macOS 操作系统(Darwin)的AMD64...

    kubernetes-dashboard.zip

    Kubernetes Dashboard 是一个基于 Web 的图形用户界面(GUI),用于管理和监控 Kubernetes 集群。它提供了对集群资源的直观视图,包括节点、Pods、服务、部署、 ReplicaSets 和 DaemonSets,使得集群操作和故障排查...

    kubernetes-client-windows-amd64 (v1.10.11).tar.gz

    - 支持API资源的版本管理和升级,确保与不同版本的Kubernetes集群兼容。 - 提供了丰富的命令行选项,使用户能够灵活定制操作行为。 - 引入了对动态配置的支持,使得客户端可以实时获取集群配置信息,无需频繁手动...

    kubernetes-client-darwin-amd64.tar.gz-v1.14.1二进制下载

    Kubernetes客户端是Kubernetes生态系统的重要组成部分,它允许用户与Kubernetes集群进行交互,执行各种管理和操作任务。`kubernetes-client-darwin-amd64.tar.gz-v1.14.1`是一个针对苹果 macOS 操作系统(Darwin)的...

    PyPI 官网下载 | kubernetes-3.0.0a1-py2.py3-none-any.whl

    在这个场景中,我们关注的是一个名为“kubernetes-3.0.0a1-py2.py3-none-any.whl”的文件,这是在PyPI官网上发布的资源,用于与Kubernetes相关的Python编程。 **Kubernetes**,又称为K8s,是一个开源的容器编排系统...

    K8S安装包之kubernetes-clinet-linux-amd64

    Kubernetes,简称K8s,是Google开源的一种容器编排系统,用于自动化容器化的应用程序部署、扩展和管理。这个“K8S安装包之kubernetes-client-linux-amd64”是针对Linux AMD64架构的Kubernetes客户端工具,它使得用户...

    kubernetes-client-linux-amd64.zip

    Kubernetes客户端是用于管理和操作Kubernetes集群的重要工具,尤其在Linux环境下,`kubernetes-client-linux-amd64.zip` 提供了适用于AMD64架构的命令行接口(CLI),即kubectl,使得开发者和管理员能够轻松地从终端...

Global site tag (gtag.js) - Google Analytics