扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
1.技术背景;
创新互联是一家集网站建设,河北企业网站建设,河北品牌网站建设,网站定制,河北网站建设报价,网络营销,网络优化,河北网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。创新互联建站专注于合作网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供合作营销型网站建设,合作网站制作、合作网页设计、合作网站官网定制、成都小程序开发服务,打造合作网络公司原创品牌,更为您提供合作网站排名全网营销落地服务。Linuxs利用Cgroup实现了对容器的资源限制,但在容器内部依然缺省挂载了宿主机上的procfs的/proc目录,其包含如:meminfo, cpuinfo,stat, uptime等资源信息。一些监控工具如free/top或遗留应用还依赖上述文件内容获取资源配置和使用情况。当它们在容器中运行时,就会把宿主机的资源状态读取出来,引起错误和不便。
2.LXCFS简介
CNCF社区中常见的做法是利用 lxcfs来提供容器中的资源可见性。lxcfs 是一个开源的FUSE(用户态文件系统)实现来支持LXC容器,它也可以支持Docker容器。
githup网站:https://github.com/lxc/lxcfs
LXCFS通过用户态文件系统,在容器中提供下列 procfs 的文件。
/proc/cpuinfo /proc/diskstats /proc/meminfo /proc/stat /proc/swaps /proc/uptime3.LXCFS工作示意图:
比如,把宿主机的 /var/lib/lxcfs/proc/memoinfo 文件挂载到Docker容器的/proc/meminfo位置后。容器中进程读取相应文件内容时,LXCFS的FUSE实现会从容器对应的Cgroup中读取正确的内存限制。从而使得应用获得正确的资源约束设定
4.Docker 实战提升容器资源可见性;
注:
本文采用CentOS 7.2 作为测试环境,并已经开启FUSE模块支持。
fuse用途:
传统的文件系统是操作系统的一部分,放在操作系统内核里面实现。Fuse(Filesystem in Userspace), 一个用户空间文件系统框架,提供给我们一组用于实现一个文件系统的API,使我们可以在用户态实现自已的文件系统。
Docker for Mac/Minikube等开发环境由于采用高度剪裁过的操作系统,无法支持FUSE,并运行LXCFS进行测试。
安装 lxcfs 的RPM包
4.1.环境信息:
系统版本 | 内核版本 | 软件依赖 | 软件版本 | 备注说明 |
CentOS Linux 7.2.151 | 3.10.0-1062.4.1.el7.x86_64 | fuse-libs fuse fuse-devel | fuse-devel-2.9.2-7.el7.x86_64 fuse-libs-2.9.2-7.el7.x86_64 fuse-2.9.2-7.el7.x86_64 | 用户态实现自已的文件系统。 |
docker | docker-1.13.1-102.git7f2769b.el7.centos.x86_64 | docker服务 | ||
lxcfs | lxcfs-3.1.2-0.2.el7.x86_64.rpm | LXCFS主程序软件包 |
4.2 安装依赖获取软件包并启动服务
yum -y install fuse-devel fuse docker lxc-templates wget https://copr-be.cloud.fedoraproject.org/results/ganto/lxc3/epel-7-x86_64/01041891-lxcfs/lxcfs-3.1.2-0.2.el7.x86_64.rpm rpm -ivh lxcfs-3.1.2-0.2.el7.x86_64.rpm systemctl start docker lxcfs /var/lib/lxcfs &4.3 运行docker 测试镜像
docker run -itd -m 256m \ -v /var/lib/lxcfs/proc/cpuinfo:/proc/cpuinfo:rw \ -v /var/lib/lxcfs/proc/diskstats:/proc/diskstats:rw \ -v /var/lib/lxcfs/proc/meminfo:/proc/meminfo:rw \ -v /var/lib/lxcfs/proc/stat:/proc/stat:rw \ -v /var/lib/lxcfs/proc/swaps:/proc/swaps:rw \ -v /var/lib/lxcfs/proc/uptime:/proc/uptime:rw \ ubuntu:16.04 /bin/bash注意:
container_linux.go:247: starting container process caused "process_linux.go:258: applying cgroup configuration for process caused \"Cannot set property TasksAccounting, or unknown property.\""/usr/bin/docker-current: Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "process_linux.go:258: applying cgroup configuration for process caused \"Cannot set property TasksAccounting, or unknown property.\"".
解决:主要原因还是centos系统版本兼容性问题,如果将系统做更新升级
yum update
4.4 查询实验结果;
(1).设置过lxcfs 容器和设置lxcfs 对比 内存对比
(2).未进行设置容器;
(1).设置过lxcfs 容器和设置lxcfs 对比 uptime 对比;
5.Kubernetes 实战提升容器资源可见性;
一些同学问过如何在Kubernetes集群环境中使用lxcfs,我们将给大家一个示例方法供参考。
首先我们要在集群节点上安装并启动lxcfs,我们将用Kubernetes的方式,用利用容器和DaemonSet方式来运行 lxcfs FUSE文件系统。
通过Github上获得
git clone https://github.com/denverdino/lxcfs-initializer cd lxcfs-initializer另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流