目录

lxcfs的k8s部署方式,实现容器资源隔离视图

本文通过lxcfs的k8s部署方式,实现容器资源隔离视图;并通过k8s参数设置了容器的shm大小

说明

实现容器资源隔离视图,即为容器分配cpu和内存大小,在容器内部看到的是容器资源配额,而不是宿主机全部计算资源

采用lxcfs实现容器资源隔离,并通过k8s容器化方式部署完成

lxcfs-webhook项目

我的lxcfs-webhook项目,点这里进入

https://github.com/bingerambo/lxcfs-admission-webhook

本项目针对lxscfs的k8s部署问题重新做了修改:

  • custom-lxcfs-image: 重新制作了镜像
  • deployment: 修改了部署lxcfs配置yaml
  • lxcfs.go: 对应lxcfs配置,修改了webhook代码

lxcfs部署准备文件

  • 2个镜像文件分别是lxcfs和webhook,可根据我的lxcfs项目进行制作
  • 2个so文件是lxcfs程序需用,部署时安装
  • Deployment文件夹下是部署配置脚本

配置

修改配置如下

红色标记为要修改处,根据实际情况修改

lxcfs-daemonset.yaml

deployment.yaml

部署

部署命令

/tmp/为要修改处,根据实际情况修改

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
# Deploy

## Copy lxcfs libs

deployment/process_lib.sh

## Copy lxcfs remount.sh

cp deployment/container_remount_lxcfs.sh /tmp/

## Deploy lxcfs to worker nodes

kubectl apply -f deployment/lxcfs-daemonset.yaml



## Install injector with lxcfs-admission-webhook

deployment/install.sh

kubectl apply -f deployment/deployment.yaml

业务测试

namespace: test-lxcfs为要修改处,根据实际情况修改

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# Test
## Enable the namespace for injection

kubectl create namespace test-lxcfs
kubectl label namespace test-lxcfs lxcfs-admission-webhook=enabled


## Deploy the test deployment
kubectl apply -f deployment/web.yaml

共享内存

对于k8s1.20+版本支持共享内存容器视图

通过设置kubelet的feature-gates参数实现

1
--feature-gates="SizeMemoryBackedVolumes=true"

容器资源隔离视图

经过lxcfs部署安装和共享内存配置后,发现容器资源

  • cpu
  • mem
  • shm

都实现了资源视图隔离