kubernets之计算资源
一 为pod分配cpu,内存以及其他的资源
1.1 创建一个pod,同时为这个pod分配内存以及cpu的资源请求量
apiVersion: v1
kind: Pod
metadata:
name: requests-pod
spec:
containers:
- image: busybox
command: ["dd", "if=/dev/zero", "of=/dev/null"]
name: main
resources:
requests:
cpu: 200m
memory: 10Mi
- 如下配置的容器里面添加了requests字段,包括cpu以及内存的请求量
- cpu:200m的含义是容器最少可使用宿主机的200毫核(即一个cpu核心时间的1/5)
- memory:10Mi的含义是该容器使用10M的内存
1.2 来验证一下这个pod内的容器使用的cpu核数
Mem: 2904756K used, 977004K free, 179080K shrd, 0K buff, 2061448K cached
CPU: 4.4% usr 21.6% sys 0.0% nic 73.5% idle 0.0% io 0.0% irq 0.0% sirq
Load average: 1.04 1.07 1.05 2/424 15
PID PPID USER STAT VSZ %VSZ CPU %CPU COMMAND
1 0 root R 1300 0.0 2 25.0 dd if /dev/zero of /dev/null
6 0 root S 1308 0.0 1 0.0 top
11 0 root R 1308 0.0 3 0.0 top [root@node01 Chapter14]# cat /proc/cpuinfo| grep "processor"| wc -l
4
- 由于这个机器是一个四核的虚拟机,,所有这个进程只能占据全部核数的1/4
- 可以看到通过这个参数,让容器最少可以使用20%,却不是只能使用20%
1.3 了解调度器如何判断一个pod是否适合调度某个节点
首先调度器在调度的适合并不关注各类资源在当前时刻的实际使用量,而只关心节点上pod的资源的申请量之和,原因是如果是看集群所有资源的实际使用总和的话,那么之前那些资源分配的额度就有可能达不到了
用一张图来看下所描述的现象

- 如下图所示,节点上CPU的申请量是80%,但是实际使用量只有70%,我们的podD的申请量是25%
- 若按照实际使用量来看,pod还是可以被调度上去的,但是实际上已经无法进行调度了,因为它是根据资源的申请量来计算的
1.4 调度器如何通过pod requests为其选择最佳节点
之前了解过调度器的调度原理的时候,首先会排除那些不满足需求的节点,之后会有一个LeastRequestPriority和MostRequestPriority,前者优先级将pod调度到请求量少的节点,而后者则是优先将pod调度到请求资源较多的节点,一般自家建设的kubernetes集群都倾向于使用前面的策略,这样的话负载均衡会好点,但是如果是运行云基础设施上面的话,使用后者的话,会省去一笔很大的开支
1.5 查看节点资源总量
Name: node01
......
InternalIP: 172.16.70.4
Hostname: node01
Capacity:
cpu: 4
ephemeral-storage: 8178Mi
hugepages-2Mi: 0
memory: 3881760Ki
pods: 110
Allocatable:
cpu: 4
ephemeral-storage: 7717729063
hugepages-2Mi: 0
memory: 3779360Ki
pods: 110
......
- 红色字体显示的节点的资源总量
- 绿色的字体显示的可分配给pod的资源量
- 之所以系统总量和可分配给pod的总量,是因为要预留一些资源给系统的pod
1.6 创建一个cpu请求量较大的pod,观察能否创建成功,如果失败又是如何
[root@node01 Chapter14]# k run request-pod-3 --image=busybox --restart Never --requests='cpu=4,memory=20Mi' -- dd if=/dev/zero of=/dev/null
pod/request-pod-3 created [root@node01 Chapter14]# k get po
NAME READY STATUS RESTARTS AGE
request-pod-2 1/1 Running 0 3m4s
request-pod-3 0/1 Pending 0 3s
requests-pod 1/1 Running 0 4h52m
[root@node01 Chapter14]# k describe po request-pod-3
Name: request-pod-3
Namespace: default
Priority: 0
Node: <none>
Labels: run=request-pod-3
Annotations: <none>
Status: Pending
IP:
IPs: <none>
Containers:
request-pod-3:
Image: busybox
Port: <none>
Host Port: <none>
Args:
dd
if=/dev/zero
of=/dev/null
Requests:
cpu: 4
memory: 20Mi
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-tzwwt (ro)
Conditions:
Type Status
PodScheduled False
Volumes:
default-token-tzwwt:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-tzwwt
Optional: false
QoS Class: Burstable
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedScheduling 13s (x2 over 13s) default-scheduler 0/3 nodes are available: 3 Insufficient cpu.
- 创建一个超级大cpu请求量之后,集群的任何节点都无法满足这个pod
- 如红色字体显示,无法调度到任何的节点,因为任何节点都没有足够的cpu可以分配
kubernets之计算资源的更多相关文章
- Compute Resource Consolidation Pattern 计算资源整合模式
Consolidate multiple tasks or operations into a single computational unit. This pattern can increase ...
- 云计算被视为继大型计算机、个人计算机、互联网之后的第4次IT产业革命,顺应了当前各行业整合计算资源和服务能力的要求(转)
云计算被视为继大型计算机.个人计算机.互联网之后的第4次IT产业革命,顺应了当前各行业整合计算资源和服务能力的要求,成为引领当今世界信息技术变革的主力军.越来越多的金融企业认识到只有与云计算结合,才能 ...
- kubernetes之管理容器的计算资源
资源类型 CPU 和 memory 都是 资源类型.资源类型具有基本单位.CPU 的单位是 core,memory 的单位是 byte.这些都统称为计算资源. CPU含义: CPU 资源的限制和请求以 ...
- 华为FusionSphere概述——计算资源、存储资源、网络资源的虚拟化,同时对这些虚拟资源进行集中调度和管理
华为FusionSphere概述 FusionSphere是华为自主知识产权的云操作系统,集虚拟化平台和云管理特性于一身,让云计算平台建设和使用更加简捷,专门满足企业和运营商客户云计算的需求.华为云操 ...
- CUP计算资源争抢通过IIS启用处理器关联解决
由于业务的复杂性,我们在客户环境部署的时候,采用的是预装好在一台机器然后再把机器安装到客户环境,所以为了简单方便,我们把所有的服务都安装到一台机器上面了. 在正常的使用过程中是没有任何问题的.但是当有 ...
- kubernetes 降本增效标准指南| 容器化计算资源利用率现象剖析
作者:詹雪娇,腾讯云容器产品经理,目前主要负责腾讯云集群运维中心的产品工作. 张鹏,腾讯云容器产品工程师,拥有多年云原生项目开发落地经验.目前主要负责腾讯云TKE集群和运维中心开发工作. 引言 降本增 ...
- k8s中计算资源策略 Limit Range
文章转载自:https://www.kuboard.cn/learning/k8s-advanced/policy/lr.html 默认情况下,容器在 Kubernetes 集群上运行时,不受 计算资 ...
- Spark Streaming性能优化系列-怎样获得和持续使用足够的集群计算资源?
一:数据峰值的巨大影响 1. 数据确实不稳定,比如晚上的时候訪问流量特别大 2. 在处理的时候比如GC的时候耽误时间会产生delay延迟 二:Backpressure:数据的反压机制 基本思想:依据上 ...
- kubernets之statefulset资源
一 了解Statefulset 1.1 对比statefulset与RS以及RC的区别以及相同点 Statefulset是有状态的,而RC以及RS等是没有状态的 Statefulset是有序的,拥 ...
随机推荐
- Python 学习笔记 之 随着学习不断更新的Python特性搜集
大小写敏感 缩进敏感--tab和空格不要混用,最好使用4个空格进行缩进.可使用vim配置缩进字符为4个空格 编写py文件时注意文件的编码,UTF-8 without BOM, 并且记得声明coding
- Java 8 新特性:日期处理
1. Java 8 日期处理新特性 Java 8基于ISO标准日期系统,提供了java.time包来处理时间日期,且该包下的所有类都是不可变类型而且线程安全. 2. 关键类 Instant:瞬时实 ...
- LLVM程序分析日记之CMake使用
我们编写LLVM Pass或者将LLVM嵌入自己的项目时,需要用到CMake来组织自己的项目目录. Documents [1] http://llvm.org/docs/CMake.html#embe ...
- 大数据组件Kerberos安全访问关键代码
版本信息 <version.hbase>2.1.0-cdh6.2.1</version.hbase> <version.hadoop>3.0.0-cdh6.2.1& ...
- html 10-HTML基础回顾
10-HTML基础回顾 #本文主要内容 html 的常见元素 html 元素的分类 html 元素的嵌套关系 html 元素的默认样式和 CSS Reset html 常见面试题 #html 的常见元 ...
- js上 十一、循环语句-2
11-1.跳转语句 在js中,有如下四种跳转语句: ü break ü continue break:结束本层循环 continue:跳过(结束)本次循环,继续进入下一次循环 就是两个关键字 #11- ...
- Flink集群监控
prometheus+grafana 监控hadoop.yarn https://blog.csdn.net/c275090933/article/details/82108014 Prometheu ...
- 用DirectX 11绘制一个Cube
之前一篇文章讲了如何初始化DirectX 11,现在在此基础上绘制一个Cube,总体可概括为以下几个步骤: 定义Cube顶点数据结构 创建Vertex Buffer和Index Buffer 编写应用 ...
- 在IDEA中使用JDBC获取数据库连接时的报错及解决办法
在IDEA中使用JDBC获取数据库连接时,有时会报错Sat Dec 19 19:32:18 CST 2020 WARN: Establishing SSL connection without ser ...
- 微服务之服务治理_Eureka
首先需要明确,不管是什么事物需要"治理",那一定是该事物存在一定问题.比如环境治理.那么服务,或者说微服务为什么需要治理?对于服务来说,如果它承担的业务职责简单,那其实治理的必要性 ...