Kubernetes中如何利用LXCFS提升容器资源可见性

  介绍

这篇文章将为大家详细讲解有关Kubernetes中如何利用LXCFS提升容器资源可见性,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

下面将介绍在码头工人和Kubernetes环境中解决遗留应用无法识别容器资源限制的问题。

linux利用Cgroup实现了对容器的资源限制,但在容器内部依然缺省挂载了宿主机上的<代码> procfs 的<代码>/proc/<代码>目录,其包含如:meminfo, cpuinfo,统计,正常运行时间等资源信息。一些监控工具如自由/顶部或遗留应用还依赖上述文件内容获取资源配置和使用情况。当它们在容器中运行时,就会把宿主机的资源状态读取出来,引起错误和不便。

LXCFS简介

社区中常见的做法是利用,LXCFS来提供容器中的资源可见性.lxcfs是一个开源的保险丝(用户态文件系统)实现来支持LXC容器,它也可以支持码头工人容器。

LXCFS通过用户态文件系统,在容器中提供下列,<代码> procfs>

/proc/cpuinfo/proc/diskstats/proc/meminfo/proc/stat/proc/swaps/proc/uptime 

LXCFS的示意图如下

图像

比如,把宿主机的,<代码>/var/lib/LXCFS/proc/memoinfo> /proc/meminfo>

码头工人环境下LXCFS使用

<强>注:

<李>

本文采用CentOS 7.4作为测试环境,并已经开启熔模块支持。

<李>

码头工人Mac/Minikube等开发环境由于采用高度剪裁过的操作系统,无法支持保险丝,并运行LXCFS进行测试。

安装LXCFS的RPM包

 wget  https://copr be.cloud.fedoraproject.org/results/ganto/lxd/epel - 7 - x86_64/00486278 lxcfs/lxcfs 2.0.5 el7.centos.x86_64.rpm——3.
  yum  install  lxcfs el7.centos.x86_64——2.0.5 - 3.。rpm 

启动lxcfs

 lxcfs /var/lib/lxcfs , 

测试

 docker 美元;run  -it  -m  256 m  \
  ,,,,,-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/统计:/proc/统计:rw  \
  ,,,,,-v /var/lib/lxcfs/proc/掉期:/proc/掉期:rw  \
  ,,,,,-v /var/lib/lxcfs/proc/运行时间:/proc/运行时间:rw  \
  ,,,,,ubuntu: 16.04/bin/bash
  ,,,,,
  root@f4a2a01e61cd:/#,免费的
  ,,,,,,,,,,,,,total ,,,,,,, used ,,,,,,, free ,,,,, shared ,浅黄色/cache ,可用
  Mem:,,,,,,,,, 262144,,,,,,,,, 708,,,,,, 261436,,,,,,,, 2364,,,,,,,,,,, 0,,,,,, 261436
  交换:,,,,,,,,,,,,,0,,,,,,,,,,,0,,,,,,,,,,,0 

我们可以看到的总内存为256 mb,配置已经生效。

lxcfs的Kubernetes实践

一些同学问过如何在Kubernetes集群环境中使用lxcfs,我们将给大家一个示例方法供参考。

首先我们要在集群节点上安装并启动lxcfs,我们将用Kubernetes的方式,用利用容器和DaemonSet方式来运行lxcfs保险丝文件系统。

本文所有示例代码可以通过以下地址从Github上获得

 git  clone  https://github.com/denverdino/lxcfs-initializer
  cd  lxcfs-initializer 

其清单文件如下

 apiVersion:应用程序/v1beta2
  :DaemonSet
  元数据:
  名称:才能lxcfs
  标签:才能
  ,,,的应用:lxcfs
  规范:
  选择器:才能
  ,,,matchLabels:
  ,,,,,的应用:lxcfs
  模板:才能
  ,,,元数据:
  ,,,,,标签:
  ,,,,,,,的应用:lxcfs
  ,,,规范:
  ,,,,,hostPID:真实
  ,,,,,的纵容:
  ,,,,,神;关键:node-role.kubernetes.io/主
  ,,,,,,,效果:NoSchedule
  ,,,,,的容器:
  ,,,,,今天早上,名字:lxcfs
  ,,,,,,,图片:;registry.cn-hangzhou.aliyuncs.com/denverdino/lxcfs:2.0.8
  ,,,,,,,imagePullPolicy:总是
  ,,,,,,,securityContext:
  ,,,,,,,,,特权:真实
  ,,,,,,,volumeMounts:
  ,,,,,,,今天早上,名字:rootfs
  ,,,,,,,,,mountPath:/主机
  ,,,,,卷:
  ,,,,,今天早上,名字:rootfs
  ,,,,,,,hostPath:
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null

Kubernetes中如何利用LXCFS提升容器资源可见性