技术标签: kubernetes doker容器管理神器 kubernetes的学习
Kubernetes采用request和limit两种限制类型来对资源进行分配。
request(资源需求):即运行Pod的节点必须满足运行Pod的最基本需求才能运行Pod。
limit(资源限额):即运行Pod期间,可能内存使用量会增加,那最多能使用多少内存,这就是资源限额。
资源类型:
CPU 的单位是核心数,内存的单位是字节。
一个容器申请0.5个CPU,就相当于申请1个CPU的一半,你也可以加个后缀m 表示千分之一的概念。比如说100m的CPU,100豪的CPU和0.1个CPU都是一样的。
内存单位:
K、M、G、T、P、E #通常是以1000为换算标准的。
Ki、Mi、Gi、Ti、Pi、Ei #通常是以1024为换算标准的。
下载测试镜像至仓库
[root@server1 harbor]# docker tag progrium/stress reg.westos.org/library/stress ##下载镜像
[root@server1 harbor]# docker push reg.westos.org/library/stress
[root@server2 limit]# vim pod.yml
[root@server2 limit]# cat pod.yml
apiVersion: v1
kind: Pod
metadata:
name: memory-demo
spec:
containers:
- name: memory-demo
image: stress ##这个镜像可以直接模拟资源的使用
args:
- --vm
- "1"
- --vm-bytes
- 200M ##使用200M
resources:
requests:
memory: 50Mi
limits:
memory: 100Mi ##限制200M
[root@server2 limit]# kubectl apply -f pod.yml
pod/memory-demo created
[root@server2 limit]# kubectl get pod
NAME READY STATUS RESTARTS AGE
memory-demo 0/1 OOMKilled 3 53s
##解释
#如果容器超过其内存限制,则会被终止。如果可重新启动,则与所有其他类型的运行时故障一样,kubelet 将重新启动它。
#如果一个容器超过其内存请求,那么当节点内存不足时,它的 Pod 可能被逐出。
## 调度失败是因为申请的CPU资源超出集群节点所能提供的资源,但CPU 使用率过高,不会被杀死
[root@server2 limit]# vim pod1.yaml
[root@server2 limit]# cat pod1.yaml
apiVersion: v1
kind: Pod
metadata:
name: cpu-demo
spec:
containers:
- name: cpu-demo
image: stress
resources:
limits:
cpu: "10"
requests:
cpu: "5"
args:
- -c
- "2"
[root@server2 limit]# kubectl apply -f pod1.yaml
pod/cpu-demo created
[root@server2 limit]# kubectl get pod
NAME READY STATUS RESTARTS AGE
cpu-demo 0/1 Pending 0 5s
其中args参数的意思是一共使用 2 个CPU核心
args:
- -c
- "2"
查看此参数方法
##LimitRange 在 namespace 中施加的最小和最大内存限制只有在创建和更新 Pod 时才会被应用。改变 LimitRange 不会对之前创建的 Pod 造成影响。
[root@server2 limit]# vim ns-limit.yaml
[root@server2 limit]# cat ns-limit.yaml
apiVersion: v1
kind: LimitRange ##limit限制
metadata:
name: limitrange-demo
spec:
limits:
- default:
cpu: 0.5
memory: 512Mi
defaultRequest:
cpu: 0.1
memory: 256Mi
max:
cpu: 2
memory: 1Gi
min:
cpu: 0.1
memory: 100Mi
type: Container
[root@server2 limit]# kubectl apply -f ns-limit.yaml
[root@server2 limit]# kubectl get limitranges
[root@server2 limit]# kubectl describe limitranges limitrange-demo
Name: limitrange-demo
Namespace: default
Type Resource Min Max Default Request Default Limit Max Limit/Request Ratio
---- -------- --- --- --------------- ------------- -----------------------
Container memory 100Mi 1Gi 256Mi 512Mi -
Container cpu 100m 2 100m 500m -
[root@server2 limit]# kubectl run demo --image=myapp:v1
[root@server2 limit]# kubectl get pod
NAME READY STATUS RESTARTS AGE
demo 1/1 Running 0 5s
[root@server2 limit]# kubectl describe pod demo ##查看默认分配的资源限制
创建的ResourceQuota对象将在default名字空间中添加以下限制:
[root@server2 limit]# vim quota.yaml
[root@server2 limit]# cat quota.yaml
apiVersion: v1
kind: ResourceQuota
metadata:
name: mem-cpu-demo
spec:
hard:
requests.cpu: "0.5"
requests.memory: 512Mi
limits.cpu: "2"
limits.memory: 2Gi
[root@server2 limit]# kubectl apply -f quota.yaml
[root@server2 limit]# kubectl get resourcequotas ##查看状态
NAME AGE REQUEST LIMIT
mem-cpu-demo 10s requests.cpu: 100m/500m, requests.memory: 256Mi/512Mi limits.cpu: 500m/2, limits.memory: 512Mi/2Gi
[root@server2 limit]# kubectl get pod
NAME READY STATUS RESTARTS AGE
demo 1/1 Running 1 137m
[root@server2 limit]# kubectl describe resourcequotas mem-cpu-demo ##查看使用信息
Name: mem-cpu-demo
Namespace: default
Resource Used Hard
-------- ---- ----
limits.cpu 500m 2
limits.memory 512Mi 2Gi
requests.cpu 100m 500m
requests.memory 256Mi 512Mi
[root@server2 limit]# vim quota.yaml
[root@server2 limit]# cat quota.yaml
apiVersion: v1
kind: ResourceQuota
metadata:
name: mem-cpu-demo
spec:
hard:
requests.cpu: "0.5"
requests.memory: 1Gi
limits.cpu: "2"
limits.memory: 2Gi
---
apiVersion: v1
kind: ResourceQuota
metadata:
name: pod-demo
spec:
hard:
pods: "2" ##限制2个pod
[root@server2 limit]# kubectl apply -f quota.yaml
[root@server2 limit]# kubectl run nginx1 --image=myapp:v1
pod/nginx1 created
[root@server2 limit]# kubectl run nginx2 --image=myapp:v1
pod/nginx2 created
[root@server2 limit]# kubectl run nginx3 --image=myapp:v1
Error from server (Forbidden): pods "nginx3" is forbidden: exceeded quota: pod-demo, requested: pods=1, used: pods=2, limited: pods=2
[root@server2 limit]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx1 1/1 Running 0 2m48s
nginx2 1/1 Running 0 2m44s
文章浏览阅读1.9k次。1.使用Wireshark查看并分析服务器场景PYsystem20191桌面下的capture1.1.pcap数据包文件,通过分析数据包capture1.1.pcap找出主机MAC地址最后两位为“ad”的经纬度信息,并将经纬度信息作为Flag值(之间以英文逗号分隔,例如:39.906000,116.645000)提交;(9分)(网页定位弹回经纬度在http请求头中)2.继续分析数据包capture1.1.pcap,找出目标服务器操作系统的版本信息,并将服务器操作系统的版本号作为Flag值提交;(11分_使用wireshark查看并分析capture1.1.pcap数据包文件,通过分析数据包capture1.1.pc
文章浏览阅读3.3k次。#仅适用于友善提供的Mini2440开发板内核源码!!!1.修改内核根目录Makefile(友善已修改):#ARCH ?= $(SUBARCH)ARCH ?= armCROSS_COMPILE ?= arm-linux-2. 拷贝内核配置文件:$ cp config_mini2440_p35 .config3. 配置内核:$ make men_zimage如何下载到开发版
文章浏览阅读3.3k次。概述BeanPostProcessor ConfigurationPropertiesBindingPostProcessor的作用是绑定PropertySources到@ConfigurationProperties注解的bean实例。这是一个框架内部工具,在实例化每一个bean时,框架会使用它将@ConfigurationProperties注解中指定前缀的外部配置属性项加载进来设置到bea..._configurationproperties原理
文章浏览阅读44次。转载于:https://www.cnblogs.com/MyFlora/archive/2012/08/07/2626070.html
文章浏览阅读2.4k次。/********************************************************************************************************* * @file system_LPC11xx.c * @brief CMSIS Cortex-M0 Device Peripheral Access Layer S_#define mainclksel_val 0x00000003
文章浏览阅读434次。开发android想起来也有快3年了,对编程也由当初的满腔激情,现在也慢慢归于平淡,之前总想学一下ios开发,但是看到那 蛋疼的oc语法 ,想起java那优雅的链式编程,根本不敢下手;swift推出的初期,一直关注他 ,一直没有抽时间学他,早几天看了wwdc大会,并且swfit准备开源,我想,还不学他就来不及了 学习为啥发表博客,一是和大家分享自己的学习经验,和求教,二也是_遇见雨燕
文章浏览阅读643次。小程序上传图片_小程序上传图片的域名
文章浏览阅读582次。Ubuntu从17.10开始,已放弃在/etc/network/interfaces里配置IP地址,即使配置也不会生效,而是改成netplan方式,配置写在/etc/netplan/00-installer-config.yaml或者类似名称的yaml文件里修改网络配置管理员权限编辑改文件默认情况下是显示的这样# This is the network config written by 'subiquity'network: ethernets: {} version: 2修改内容为_ubuntu-18.04.5-live-server-amd64怎么配置wangk
文章浏览阅读1w次,点赞2次,收藏5次。Sqlserver 数据库文件大小和剩余空间_查询sqlserver数据库中全部表大小m
文章浏览阅读1.6k次。使用到的数据集为IMDB电影评论情感分类数据集,该数据集包含 50,000 条电影评论,其中 25,000 条用于训练,25,000 条用于测试。每条评论被标记为正面或负面情感,因此该数据集是一个二分类问题。①导入所需的库。②通过调用函数加载 IMDB 电影评论数据集,并将其拆分为训练集和测试集,其中num_words参数指定了词汇表的大小,只选择出现频率最高的前 10000 个单词。③使用函数对训练集和测试集中的序列进行填充,使它们具有相同的长度。_电影评论的情感分析运用深度学习什么
文章浏览阅读80次。void VP1_EDMA(int displayMode,unsigned int w,unsigned int h){ unsigned int i=0,k=0;EDMA_Handle handle;EDMA_Handle handle2;EDMA_Config myEdmaConfig; handle= EDMA_o..._display_mode_evt
文章浏览阅读977次。An Introduction to Interactive Programming in Python 这周的mini project作业,花了我很长时间,暂时在这里留个备份Mini-project description — Rock-paper-scissors-lizard-SpockRock-paper-scissors is a hand_mini-project description - rock-paper-scissors-lizard-spock