Kubernetes lxcfs

容器實現的基礎是NameSpace和Cgroups。node

NameSpace實現了對容器(進程)的隔離,NameSpace技術實際上修改了應用進程看待整個計算機「視圖」,也就是做用域,即它的「視線」被操做系統作了限制,只能「看到」某些指定的內容,實現方式相似於將全局變量修改成了局部變量。docker

Cgroup實現了對容器(進程)資源的限制,可是在容器內部依然缺省掛載了宿主機的procfs的/proc目錄,其中包含:meminfo,cpuinfo,stat,uptime等資源信息。一些監控工具如 free/top 會依賴上述文件獲取資源配置和使用狀況。centos

示例:工具

爲容器配置了128m內存,使用free顯示8G內存(宿主機的實際內存)測試

[root@node01 proc]# docker run -it -m 128m busybox /bin/sh
/ # free
             total       used       free     shared    buffers     cached
Mem:       7992312    5954012    2038300          0       2104    3140452
-/+ buffers/cache:    2811456    5180856
Swap:            0          0          0

 

LXCFS介紹

社區中經常使用的作法是利用lxcfs來提供容器中的資源可見性。lxcfs是一個開源的FUSE(用戶態文件系統)實現來支持LXC容器。ui

LXCFS經過用戶態文件系統,在容器中提供下列 procfs 的文件:spa

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

好比,把宿主機的 /var/lib/lxcfs/proc/memoinfo 文件掛載到Docker容器的/proc/meminfo位置後。容器中進程讀取相應文件內容時,LXCFS的FUSE實現會從容器對應的Cgroup中讀取正確的內存限制。從而使得應用得到正確的資源約束設定。操作系統

 

Docker環境下LXCFS使用

安裝 lxcfs 的RPM包code

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

啓動lxcfsblog

lxcfs /var/lib/lxcfs &

在Docker中測試

[root@node01]# docker run -it -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 \
> debian:jessie /bin/sh
# 
# free
             total       used       free     shared    buffers     cached
Mem:        262144        224     261920      21748          0        224
-/+ buffers/cache:          0     262144
Swap:       262144          0     262144
# 

 

 

 

 

 

參考文章:https://www.centos.bz/2018/04/kubernetes%E4%B9%8B%E8%B7%AF-2-%E5%88%A9%E7%94%A8lxcfs%E6%8F%90%E5%8D%87%E5%AE%B9%E5%99%A8%E8%B5%84%E6%BA%90%E5%8F%AF%E8%A7%81%E6%80%A7/

相關文章
相關標籤/搜索