k8s1.12以下版本设置LXCFS

本文介绍了LXCFS在Docker环境和Kubernetes中的使用,特别是如何在Kubernetes 1.12版本下通过DaemonSet和Initializer机制部署LXCFS,确保每个容器能获取到正确的资源约束设定。详细步骤包括设置InitializerConfiguration,创建Initializer Controller,以及部署Apache应用的示例。
摘要由CSDN通过智能技术生成

公众号关注 「SY技术小站」

设为「星标」,每天带你分享技术与生活!

1. LXCFS简介

社区中常见的做法是利用lxcfs来提供容器中的资源可见性。lxcfs 是一个开源的FUSE(用户态文件系统)实现来支持LXC容器,它也可以支持Docker容器。

LXCFS通过用户态文件系统,在容器中提供下列 procfs 的文件。

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

比如把宿主机的 /var/lib/lxcfs/proc/memoinfo 文件挂载到Docker容器的/proc/meminfo位置后。容器中进程读取相应文件内容时,LXCFS的FUSE实现会从容器对应的Cgroup中读取正确的内存限制。从而使得应用获得正确的资源约束设定。

2. Docker环境下LXCFS使用

安装 lxcfs 的RPM包

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

启动 lxcfs

lxcfs /var/lib/lxcfs &

测试

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 \
      ubuntu:16.04 /bin/bash

结果

[root@node1 ~]# 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 \
        ubuntu:16.04 /bin/bash
root@6bcd804eef79:/# free -m
              total        used        free      shared  buff/cache   available
Mem:            256           0         254         189           0         254
Swap:           256           0         256
root@6bcd804eef79:/#

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

3. LXCFS的kubernets实践

在kubernetes中使用lxcfs需要解决两个问题:

第一个问题是每个node上都要启动lxcfs,这个简单,部署一个daemonset就可以了。

第二个问题是将lxcfs维护的/proc文件挂载到每个容器中

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

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

lxcfs-daemonset

apiVersion: apps/v1beta2
kind: DaemonSet
metadata:
  name
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值