1.技術(shù)背景;
網(wǎng)站建設(shè)公司,為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁設(shè)計(jì)及定制網(wǎng)站建設(shè)服務(wù),專注于成都定制網(wǎng)頁設(shè)計(jì),高端網(wǎng)頁制作,對(duì)成都自拌料攪拌車等多個(gè)行業(yè)擁有豐富的網(wǎng)站建設(shè)經(jīng)驗(yàn)的網(wǎng)站建設(shè)公司。專業(yè)網(wǎng)站設(shè)計(jì),網(wǎng)站優(yōu)化推廣哪家好,專業(yè)營銷推廣優(yōu)化,H5建站,響應(yīng)式網(wǎng)站。
Linuxs利用Cgroup實(shí)現(xiàn)了對(duì)容器的資源限制,但在容器內(nèi)部依然缺省掛載了宿主機(jī)上的procfs的/proc目錄,其包含如:meminfo, cpuinfo,stat, uptime等資源信息。一些監(jiān)控工具如free/top或遺留應(yīng)用還依賴上述文件內(nèi)容獲取資源配置和使用情況。當(dāng)它們?cè)谌萜髦羞\(yùn)行時(shí),就會(huì)把宿主機(jī)的資源狀態(tài)讀取出來,引起錯(cuò)誤和不便。
2.LXCFS簡(jiǎn)介
CNCF社區(qū)中常見的做法是利用 lxcfs來提供容器中的資源可見性。lxcfs 是一個(gè)開源的FUSE(用戶態(tài)文件系統(tǒng))實(shí)現(xiàn)來支持LXC容器,它也可以支持Docker容器。
githup網(wǎng)站:https://github.com/lxc/lxcfs
LXCFS通過用戶態(tài)文件系統(tǒng),在容器中提供下列 procfs 的文件。
/proc/cpuinfo /proc/diskstats /proc/meminfo /proc/stat /proc/swaps /proc/uptime
3.LXCFS工作示意圖:
比如,把宿主機(jī)的 /var/lib/lxcfs/proc/memoinfo 文件掛載到Docker容器的/proc/meminfo位置后。容器中進(jìn)程讀取相應(yīng)文件內(nèi)容時(shí),LXCFS的FUSE實(shí)現(xiàn)會(huì)從容器對(duì)應(yīng)的Cgroup中讀取正確的內(nèi)存限制。從而使得應(yīng)用獲得正確的資源約束設(shè)定
4.Docker 實(shí)戰(zhàn)提升容器資源可見性;
注:
本文采用CentOS 7.2 作為測(cè)試環(huán)境,并已經(jīng)開啟FUSE模塊支持。
fuse用途:
傳統(tǒng)的文件系統(tǒng)是操作系統(tǒng)的一部分,放在操作系統(tǒng)內(nèi)核里面實(shí)現(xiàn)。Fuse(Filesystem in Userspace), 一個(gè)用戶空間文件系統(tǒng)框架,提供給我們一組用于實(shí)現(xiàn)一個(gè)文件系統(tǒng)的API,使我們可以在用戶態(tài)實(shí)現(xiàn)自已的文件系統(tǒng)。
Docker for Mac/Minikube等開發(fā)環(huán)境由于采用高度剪裁過的操作系統(tǒng),無法支持FUSE,并運(yùn)行LXCFS進(jìn)行測(cè)試。
安裝 lxcfs 的RPM包
4.1.環(huán)境信息:
系統(tǒng)版本 | 內(nèi)核版本 | 軟件依賴 | 軟件版本 | 備注說明 |
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 | 用戶態(tài)實(shí)現(xiàn)自已的文件系統(tǒng)。 |
docker | docker-1.13.1-102.git7f2769b.el7.centos.x86_64 | docker服務(wù) | ||
lxcfs | lxcfs-3.1.2-0.2.el7.x86_64.rpm | LXCFS主程序軟件包 |
4.2 安裝依賴獲取軟件包并啟動(dòng)服務(wù)
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 運(yùn)行docker 測(cè)試鏡像
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系統(tǒng)版本兼容性問題,如果將系統(tǒng)做更新升級(jí)
yum update
4.4 查詢實(shí)驗(yàn)結(jié)果;
(1).設(shè)置過lxcfs 容器和設(shè)置lxcfs 對(duì)比 內(nèi)存對(duì)比
(2).未進(jìn)行設(shè)置容器;
(1).設(shè)置過lxcfs 容器和設(shè)置lxcfs 對(duì)比 uptime 對(duì)比;
5.Kubernetes 實(shí)戰(zhàn)提升容器資源可見性;
一些同學(xué)問過如何在Kubernetes集群環(huán)境中使用lxcfs,我們將給大家一個(gè)示例方法供參考。
首先我們要在集群節(jié)點(diǎn)上安裝并啟動(dòng)lxcfs,我們將用Kubernetes的方式,用利用容器和DaemonSet方式來運(yùn)行 lxcfs FUSE文件系統(tǒng)。
通過Github上獲得
git clone https://github.com/denverdino/lxcfs-initializer cd lxcfs-initializer
網(wǎng)頁標(biāo)題:LXCFS的工作原理和部署方法
網(wǎng)站地址:http://aaarwkj.com/article26/igjcjg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、網(wǎng)站收錄、小程序開發(fā)、建站公司、動(dòng)態(tài)網(wǎng)站、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)