下文基于kubernetes 1.5.2版本编写
概念
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配置下,不要在创建资源时使用自定义配置。
分享到:
相关推荐
本文将深入探讨如何在Linux(AMD64架构)环境中安装和配置Kubernetes节点,以"**kubernetes-node-linux-amd64.tar.gz**"为例,我们将基于CentOS操作系统进行详细讲解。 一、Kubernetes简介 Kubernetes是由Google...
这个"**kubernetes-server-linux-amd64.tar.gz**"安装包包含了在基于Linux的AMD64架构系统上部署Kubernetes集群所需的核心组件。该版本是v1.20.15,这是一款稳定版本,提供了大量的修复和优化。 Kubernetes主要由...
本篇文章将聚焦于“kubernetes-server-linux-amd64.tar”这一文件,深入解析其在Linux平台上的部署与使用,同时探讨k8s的核心概念和技术细节。 首先,"kubernetes-server-linux-amd64.tar"是Kubernetes集群服务器的...
Kubernetes1.13 所需kubernetes-cni-0.6.0-0.x86_64.rpm rpm 包. tar -zxvf kubernetes-cni-0.6.0-0.x86_64.rpm.tar.gz yum install ./kubernetes-cni-0.6.0-0.x86_64.rpm kubelet-1.13.0 kubeadm-1.13.0 kubectl-...
kubernetes-dashboard-amd64-v1.10.0镜像,docker load -i kubernetes-dashboard-amd64-v1.10.0.tgz
"kubernetes-server-linux-amd64.tar.gz"是一个针对Linux AMD64平台的Kubernetes服务器安装包,它包含了部署Kubernetes集群所需的所有核心组件。本文将详细介绍如何利用这个压缩包在Linux环境中搭建Kubernetes集群。...
Kubernetes客户端Linux AMD64资源包,`kubernetes-client-linux-amd64.tar.gz`,是专为基于Linux的AMD64(也称为x86_64)架构设计的Kubernetes命令行接口(CLI)工具集。这个压缩包包含了一系列用于与Kubernetes集群...
kubernetes-dashboard-amd64-v1.8.3镜像,镜像使用方法: docker load -i kubernetes-dashboard-amd64-v1.8.3.tar.gz
这个“kubernetes-server-linux-amd64-v1.15.4.tar.gz”文件是针对Linux 64位系统的Kubernetes服务器端1.15.4版本的离线安装包。这个版本的发布旨在帮助那些因网络问题无法从官方源直接下载的用户。 在Kubernetes ...
kubernetes-dashboard-amd64-v1.8.3镜像包,由于国外镜像无法下载,可以用这个包load到本地镜像,再上传到你的私有仓库,实现离线部署安装dashboard。解压后有操作命令
kubernetes的quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.20.0镜像包,版本为v0.20.0。文件先解压,之后得到nginx-ingress-controller.0.20.0.tar
总之,"kubernetes-node-linux-amd64.tar.gz-v1.14.11"提供了一个完整的Kubernetes节点软件包,使用户能够轻松地将Linux服务器集成到现有的或新的Kubernetes集群中,以扩展集群的计算资源并支持应用程序的运行。...
在Windows环境下,为了能够方便地操作和管理Kubernetes集群,官方提供了专门的Windows客户端,即kubernetes-client-windows-amd64。本文将详细解析kubernetes-client-windows-amd64的版本v1.10.11及其核心功能。 1....
`kubernetes-client-darwin-amd64.tar.gz-v1.14.1`是一个针对苹果 macOS 操作系统(Darwin)的AMD64架构(也称为x86_64)的Kubernetes客户端二进制包。版本号`v1.14.1`表明这是Kubernetes项目在特定时间点发布的一个...
"kubernetes-client-darwin-amd64.tar.gz" 是一个针对苹果 macOS 操作系统(Darwin)的AMD64架构的Kubernetes客户端安装包。这个压缩包包含了运行在该平台上与Kubernetes集群通信所需的所有文件。 **Kubernetes基础...