当前位置: 首页 > news >正文

济南网站建设推广服务网站设网站设计

济南网站建设推广服务,网站设网站设计,电商设计平台,福建外贸网站建设使用 LXCFS 文件系统实现容器资源可见性一、基本介绍二、LXCFS 安装与使用1.安装 LXCFS 文件系统2.基于 Docker 实现容器资源可见性3.基于 Kubernetes 实现容器资源可见性前言:Linux 利用 Cgroup 实现了对容器资源的限制,但是当在容器内运行 top 命令时就…

使用 LXCFS 文件系统实现容器资源可见性

  • 一、基本介绍
  • 二、LXCFS 安装与使用
    • 1.安装 LXCFS 文件系统
    • 2.基于 Docker 实现容器资源可见性
    • 3.基于 Kubernetes 实现容器资源可见性

前言:

Linux 利用 Cgroup 实现了对容器资源的限制,但是当在容器内运行 top 命令时就会发现,它显示的信息是宿主机的 CPU 和 内存数据,而不是当前容器的数据。造成这个问题的原因,就是因为 /proc 文件系统并不了解 Cgroup 限制的存在。

社区中常见的做法是利用 lxcfs 文件系统来为容器提供资源可见性。

一、基本介绍


LXCFS 是一个开源的 Fuse(用户态文件系统),支持 LXC 容器,同时支持 Docker 容器。启动以后会在指定目录中维护 /proc 目录中的文件同名的文件,从而保证容器在读取数据时读取到 lxcfs 维护的 /proc 文件中的信息数据。

  • LXCFS 通过用户态文件系统,在容器中提供下列 procfs 的文件。
/proc/cpuinfo
/proc/diskstats
/proc/meminfo
/proc/stat
/proc/swaps
/proc/uptime

LXCFS 的示意图如下:
在这里插入图片描述

  • 比如,把宿主机的 /var/lib/lxcfs/proc/meminfo 文件挂载到容器的 proc/meminfo 位置后;
  • 容器中进程读取相应文件内容时,LXCFSFuse 实现会从容器对应的 Cgroup 中读取正确的内存限制。

二、LXCFS 安装与使用


1.安装 LXCFS 文件系统

[root@localhost ~]# wget http://copr-be.cloud.fedoraproject.org/results/ganto/lxc3/epel-7-x86_64/01041891-lxcfs/lxcfs-3.1.2-0.2.el7.x86_64.rpm   
[root@localhost ~]# yum -y localinstall lxcfs-3.1.2-0.2.el7.x86_64.rpm
[root@localhost ~]# sed -i 's@ExecStart=.*@ExecStart=/usr/bin/lxcfs -o nonempty /var/lib/lxcfs/@g' /usr/lib/systemd/system/lxcfs.service
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl start lxcfs && systemctl enable lxcfs

如果 lxcfs 重启时出现如下报错,说明挂载的目录不是空目录,需要增加 -o nonempty 参数。

  • fuse: mountpoint is not empty
  • fuse: if you are sure this is safe, use the 'nonempty' mount option

2.基于 Docker 实现容器资源可见性

[root@localhost ~]# docker run -it -m 512Mb --cpus 2 \
-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 \
tomcat:8.5.87 /bin/bash

在这里插入图片描述

3.基于 Kubernetes 实现容器资源可见性

  • 通过 https://github.com/denverdino/lxcfs-admission-webhookAdmission Webhook 来给 Pod 注入 LXCFS 设置。
  • 需要检查 Kubernetes 的 api-versions 是否启动 admissionregistration.k8s.io/v1beta1(1.9.0+)
kubectl api-versions | grep 'admissionregistration.k8s.io/v1beta1'

1)安装 lxcfs 文件系统

[root@localhost ~]# git clone https://github.com/denverdino/lxcfs-admission-webhook.git
[root@localhost ~]# cd lxcfs-admission-webhook
[root@localhost lxcfs-admission-webhook]# sed -i '/^metadata/a\  namespace: kube-system' deployment/lxcfs-daemonset.yaml  
[root@localhost lxcfs-admission-webhook]# kubectl apply -f deployment/lxcfs-daemonset.yaml

2)修改 Kube-APIServer 配置文件,开启服务插件

  • 增加:MutatingAdmissionWebhook,ValidatingAdmissionWebhook
[root@localhost ~]# vim /etc/systemd/system/kube-apiserver.service
--enable-admission-plugins=

3)重启 Kube-APIServer 服务

[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart kube-apiserver

4)安装 lxcfs-admission-webhook 注射器服务

[root@localhost lxcfs-admission-webhook]# bash deployment/install.sh
creating certs in tmpdir /tmp/tmp.kK3cUmQvdG
Generating RSA private key, 2048 bit long modulus
............+++
...................+++
e is 65537 (0x10001)
certificatesigningrequest.certificates.k8s.io/lxcfs-admission-webhook-svc.default created
NAME                                  AGE   REQUESTOR   CONDITION
lxcfs-admission-webhook-svc.default   1s    admin       Pending
certificatesigningrequest.certificates.k8s.io/lxcfs-admission-webhook-svc.default approved
secret/lxcfs-admission-webhook-certs created
NAME                            TYPE     DATA   AGE
lxcfs-admission-webhook-certs   Opaque   2      0s
deployment.apps/lxcfs-admission-webhook-deployment created
service/lxcfs-admission-webhook-svc created
mutatingwebhookconfiguration.admissionregistration.k8s.io/mutating-lxcfs-admission-webhook-cfg created

查看

[root@localhost lxcfs-admission-webhook]# kubectl get secrets,pods,svc,mutatingwebhookconfigurations

6)验证

[root@localhost lxcfs-admission-webhook]# kubectl label namespace default lxcfs-admission-webhook=enabled
[root@localhost lxcfs-admission-webhook]# kubectl apply -f deployment/web.yaml
  • kubectl label namespace default lxcfs-admission-webhook=enabled:将 default 命名空间下所有的 Pod 都进行注册;
  • 这里我们需要注意,注册的命名空间要和 lxcfs 服务所在的命名空间区分开,否则 lxcfs 被重启后会输出如下报错:
caused \\\"not a directory\\\"\"": unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type

[root@localhost lxcfs-admission-webhook]# kubectl exec -it web-7f4dfcc4f4-88rb7 -- /bin/bash
root@web-7f4dfcc4f4-88rb7:/usr/local/apache2# free -htotal       used       free     shared    buffers     cached
Mem:          256M       6.2M       249M         0B         0B       300K
-/+ buffers/cache:       5.9M       250M
Swap:           0B         0B         0

在这里插入图片描述

http://www.yayakq.cn/news/233033/

相关文章:

  • 金华企业网站建设公司布吉做棋牌网站建设哪家便宜
  • 有没有做二手设备网站广东省广州市佛山市
  • 织梦系统如何做网站wordpress标签文章
  • 电机东莞网站建设网站制作价格情况
  • 学校网站制作一级建造师专业对照表
  • 建设网站图片福建住房和城乡建设厅网站一体化平台
  • 塘沽做网站公司网站建设类的职位
  • 深圳网站建设定制先四年疫后灾
  • 深圳网站建设设计如何部署wordpress
  • 申请网站建设费用的请示今天新闻事件
  • 江西建设厅网站电子手机免费建站平台下载
  • wordpress手机登录跳转页面seo搜索引擎官网
  • 广州开发网站ddns域名注册
  • nginx 网站建设遵义城乡建设网站
  • 百度网站官方认证怎么做物流网站功能
  • 上海做网站的公司哪个好抖音seo优化
  • 网站1g的空间能用多久新乡搜索引擎优化
  • 财政网站平台建设不足岳阳市内从事网站建设的公司
  • 响应式网站模仿泰国做网站
  • 揭阳做网站的网站建设管理调研提纲
  • 网站去掉index.html仿it资讯类网站源码
  • 网站建设运维方案网站设计师图片
  • 做网站的什么行业好出单电子商务网站建设经费
  • 杭州建站模板搭建温州专业营销网站
  • 养车网站开发做视频解析网站是犯法的么
  • wordpress整站手机端美食网站html代码
  • 网站平台都有哪些世界500强企业排行
  • 怎么做网站搜索框搜索陕西省水利厅网站建设与管理处
  • 做网站行业做企业网站到哪里找
  • 木门网站模板上海网站建设开发