首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Lxcfs在容器集群中的使用

Lxcfs在容器集群中的使用

作者头像
keepyan
修改2020-03-24 15:07:56
2.4K0
修改2020-03-24 15:07:56
举报
文章被收录于专栏:TKE操作指北TKE操作指北

前言:部署之前,我们需要先了解Lxcfs 是什么,使用它可以达到什么样的效果。

背景:我们知道在k8s 的pod 内,使用top/free/df等命令,展示的状态信息是从/proc目录中的相关文件里读取出来的,这些文件默认是读取pod所在节点主机对应文件的数据。

需求:在pod 内执行top/free/df等命令的时候,获取到的是pod 纬度的状态数据,而不是整个宿主机的状态。

LXCFS:FUSE filesystem for LXC 是一个常驻服务,它启动以后会在指定目录中自行维护与上面列出的/proc目录中的文件同名的文件,容器从lxcfs维护的/proc文件中读取数据时,得到的是容器的状态数据,而不是整个宿主机的状态。

概述

本文介绍了如何在TKE集群中使用lxcfs admission webhook方案来启用lxcfs支持(Initializers特性在K8s 1.14废弃,不再推荐使用原来的initializer方案)

配置环境:

TKE集群:1.14.3

node节点OS:centos 7.6

安装依赖

集群内所有CentOS节点安装fuse-libs:

yum install -y fuse-libs

否则会报错:/usr/local/bin/lxcfs: error while loading shared libraries: libfuse.so.2: cannot open shared object file: No such file or directory

部署lxcfs组件(在任意一台节点主机上操作即可)

准备

wget  https://lxcfs-1254415755.cos.ap-shanghai.myqcloud.com/lxcfs.tar.gz
tar  zxvf  lxcfs.tar.gz
cd  lxcfs-admission-webhook
kubectl  create ns lxcfs   #创建lxcfs 这个命名空间,接下来的资源就部署在这个命名空间内

部署lxcfs daemonset

kubectl -n lxcfs apply -f deployment/lxcfs-daemonset.yaml

部署lxcfs admission webhook

sh  deployment/install.sh

执行kubectl get po -n lxcfs,确认所有pod都处于Running状态

[root@VM_20_32_centos lxcfs-admission-webhook]# kubectl get pod -n lxcfs
NAME                                                 READY   STATUS    RESTARTS   AGE
lxcfs-admission-webhook-deployment-dbddfd659-zr4xk   1/1     Running   0          2m54s
lxcfs-mqv5l                                          1/1     Running   0          3m8s
lxcfs-pqlqh                                          1/1     Running   0          3m8s

验证效果

启用lxcfs

对于要使用 lxcfs 的namespace,使用如下命令启用lxcfs admission webhook的自动注入(以default为例):

kubectl label namespace default lxcfs-admission-webhook=enabled

运行测试应用

kubectl apply -f deployment/web.yaml

查看该应用的资源限制

确认内存信息

待测试应用pod启动后,执行如下命令,确认内存为256M(memory limit),而不是所在节点的总内存:

[root@VM_20_32_centos lxcfs-admission-webhook]# kubectl get pod
NAME                   READY   STATUS    RESTARTS   AGE
web-7c5464f6b9-6ggv7   1/1     Running   0          118s
web-7c5464f6b9-c6792   1/1     Running   0          118s
[root@VM_20_32_centos lxcfs-admission-webhook]# kubectl exec web-7c5464f6b9-6ggv7 -- free -m
             total       used       free     shared    buffers     cached
Mem:           256          2        253          0          0          0
-/+ buffers/cache:          2        253
Swap:            0          0          0
[root@VM_20_32_centos lxcfs-admission-webhook]# free -m
              total        used        free      shared  buff/cache   available
Mem:           7591         278        5248           1        2064        6994
Swap:             0           0           0

确认CPU信息

如果pod设置了cpu limit,看到cpu数量为cpu limit值向上取整:

[root@VM_20_32_centos lxcfs-admission-webhook]# kubectl exec web-7c5464f6b9-6ggv7 -- grep processor /proc/cpuinfo | wc -l
1
[root@VM_20_32_centos lxcfs-admission-webhook]# grep processor /proc/cpuinfo | wc -l
2

验证成功

问题

lxcfs daemonset 的 pod 不是running 状态,状态为 CrashLoopBackoff 如图:

排查:

1. 确认异常pod 是落在哪个节点上

2. 查看pod 日志,确认下对应节点主机fuse-libs 组件是否安装

2.systemctl status lxcfs 看下状态,如果状态是开启的,先关闭lxcfs 服务

3.先清空对应节点主机/var/lib/lxcfs/ 下的文件,然后delete 异常状态的pod ,触发pod 重建,再观察下

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 配置环境:
  • 安装依赖
  • 部署lxcfs组件(在任意一台节点主机上操作即可)
    • 准备
      • 部署lxcfs daemonset
        • 部署lxcfs admission webhook
        • 验证效果
          • 启用lxcfs
            • 运行测试应用
              • 确认内存信息
                • 确认CPU信息
                  • 验证成功
                  • 问题
                  相关产品与服务
                  文件存储
                  文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档