标签:span 属性 准备 虚拟机 article 记录 stp 申请 ora
Kubernetes在1.8的版本中引入了一种类似于CPU,RAM的新的资源模式:ephemeral-storage属性(直译为临时存储),并且在1.10的版本kubelet默认启用了这个特性。
ephemeral-storage实现了对Pod应用存储资源的管理,可以有效的降低Pod应用失控消耗完 node磁盘空间的风险。官网中对该属性的描述如下:
(https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/):
从上述官网介绍,总结如下:
1) 规格:16 vCpu + 80 GB RAM + 1000 GB 磁盘
2) 分区:/var/lib/docker、/var/lib/kubelet/和/var/log全在同一个系统分区上
1) Dockerfile
FROM ubuntu:16.04 ADD start.sh /home/ RUN mkdir -p /lq/log/ ENTRYPOINT /home/start.sh
2) Start.sh
#!/bin/bash while true do dateString=`date` echo "$dateString==================================">> /lq/log/test.log done
1) Kuberneters版本:1.15.6
2) Docker版本:18.06
说明:
1) 容器的启动脚本start.sh会持续的向容器内路径/lq/log下写test.log日志
2) 该日志并未挂载出来,故日志文件在宿主机的容器可写层目录下
3) 该容器申请10Mi的磁盘空间,上限为20Mi
使用kubectl apply -f xxxx.yaml,观察可写层日志大小情况以及Pod运行情况
很快可写层的日志就达到了16Mi
Pod驱逐了(容器被杀掉,容器内数据全部丢失)
从上述Event事件可以看到,Pod可用磁盘空间被限制住了
说明:
1) 容器的启动脚本start.sh会持续的向容器内路径/lq/log下写test.log日志
2) 该日志通过EmptyDir挂载出来,故日志文件在宿主机的/var/lib/kubelet目录下
3) 该容器申请10Mi的磁盘空间,上限为100Mi,emptyDir路径上限为40Mi
使用kubectl apply -f xxxxxxxx.yaml
可以看到日志已经到了32Mi,目前Pod运行正常
Pod被驱逐了(容器杀死,全部数据丢失)
可见该日志磁盘空间被限制了
一般Pod的启动日志(k8s上的控制台日志)会记录到宿主机的/var/log目录下,并且根据前面介绍得知ephemeral-storage会对该目录下的容器日志磁盘空间大小进行管理,但是由于我使用的测试镜像并无启动日志,故通过hostPath挂载的方式挂载到该路径下,看看我们显示指定挂载路径的时候,ephemeral-storage还能否生效。
可以看到,自己显示挂载的路径并做不到磁盘空间限制。
由于无启动日志,故想书写脚本向容器的启动日志疯狂输出日志,观测Pod运行情况
1) 修改start.sh
2) 修改部署文件
3) 创建该Pod
Docker logs查看,容器在疯狂的输出日志
4) 持续一段时间,观察Pod运行状态
Pod驱逐了
标签:span 属性 准备 虚拟机 article 记录 stp 申请 ora
原文地址:https://www.cnblogs.com/qgbk2018/p/13168183.html