为Pod中的容器申请资源
1  | request 资源请求  | 
创建包含 requests 请求资源的 Pod
1  | [root@k8s-master1 request]# vim requests-pod.yaml  | 
1  | Mem: 1180484K used, 2699924K free, 1008K shrd, 36844K buff, 666140K cached  | 
资源 requests 如何影响调度
1  | # 调度器判断一个Pod是否适合调度到某个节点  | 
查看节点资源总量
1  | [root@k8s-master1 request]# kubectl describe node k8s-node2  | 
模拟超出请求资源总量
1  | # 模拟现在有一个申请3个CPU的Pod 超出我们的node资源总量  | 
限制容器的可用资源
设置容器可用资源的硬限制
1  | # cpu是可压缩资源,内存是不可压缩资源  | 
创建包含 limits 限制资源的 Pod
1  | [root@k8s-master1 request]# vim limits-pod.yaml  | 
超过 limits
1  | 1. 如果进程尝试申请比限额更多的内存时,会被杀掉(OOM)  | 
容器中的应用如何看待 limits
1  | Mem: 1247588K used, 2632820K free, 1008K shrd, 77436K buff, 681992K cached  | 
了解 Pod QoS 等级
1  | # 当节点无法提供所有Pod指定的资源的Limis之和怎么办  | 
1  | 1. BestEffort (优先级最低)  | 
BestEffort 等级
1  | 1. 最低优先级的BestEffort 会分配给没有(为任何容器)设置任何requests和limits的Pod  | 
Guaranteed 等级
1  | 1. CPU和内存都要设置 requests和limits  | 
Burstable 等级
1  | 1. Burstable 介于前两者之间,其他的Pod都属于这个等级  | 
查看Pod的等级
1  | [root@k8s-master1 request]# kubectl describe pod limits-pod  | 
内存不足时 哪类进程会先被杀死
1  | 1. BestEffort (优先级最低) 最先被杀掉  | 
为命名空间的Pod设置 requests 和 limits
LimitRange
1  | # 通过该资源为命名空间下的Pod配置资源限制  | 
1  | [root@k8s-master1 request]# vim limits.yaml  | 
1  | [root@k8s-master1 request]# vim limits.yaml  | 
1  | # 测试限制  | 
1  | # 总结:  | 
ResourceQuota
1  | 1. Limitrange应用于单独的Pod,ResourceQuota 应用于命名空间中所有的Pod  | 
1  | [root@k8s-master1 request]# kubectl create -f quota-cpu-memory.yaml  | 
1  | # 总结  | 
监控 Pod 的资源使用量
1  | 1. Kubernetes 中的组件 Metrics Server 持续采集所有 Pod 副本的指标数据。 (heapster 在k8s 1.13 版本后 被弃用了)  | 
部署 Metrics Server
1  | [root@k8s-master1 demo]# unzip metrics-server.zip  | 
