挂载EmptyDir Volume以修改shm大小
更新时间:
复制 MD 格式
本文介绍如何设置Memory类型的emptyDir Volume的sizeLimit,并将其挂载到/dev/shm,从而修改ECI Pod的shm大小,解决共享内存不够用的问题。
功能场景
默认情况下,Kubernetes创建的Pod,其共享内存默认为64 MiB(即/dev/shm大小为64 MiB),且不支持更改。
:/$ df -h
Filesystem Size Used Avail Use% Mounted on
overlay 30G 4.1G 26G 14% /
tmpfs 64M 0 64M 0% /dev
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/vda4 30G 4.1G 26G 14% /etc/hosts
overlay 8.8G 5.0G 3.5G 59% /etc/hostname
shm 64M 0 64M 0% /dev/shm
tmpfs 4.0G 12K 4.0G 1% /run/secrets/kubernetes.io/serviceaccount
tmpfs 2.0G 0 2.0G 0% /proc/acpi
tmpfs 2.0G 0 2.0G 0% /sys/firmware
Kubernetes没有提供设置shm大小的途径,您可以通过将Memory类型的emptyDir Volume挂载到/dev/shm的方式,解决共享内存不够用的问题。
配置示例
-
准备YAML文件。
vim emptydir-shm.yamlemprydir-shm.yaml的内容示例如下,示例中通过设置EmptyDir Volume的medium为Memory,sizeLimit为256Mi,并将EmptyDir Volume挂载到
/dev/shm目录,从而修改了Pod的shm大小为256 MiB。apiVersion: apps/v1 kind: Deployment metadata: name: test labels: app: test spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: name: nginx-test labels: app: nginx alibabacloud.com/eci: "true" spec: containers: - name: nginx image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2 ports: - containerPort: 80 volumeMounts: - mountPath: /dev/shm name: cache-volume volumes: - emptyDir: medium: Memory sizeLimit: 256Mi name: cache-volume -
部署Deployment。
kubectl create -f emptydir-shm.yaml -
查看结果。
进入到容器内部执行
df -h命令查看磁盘空间,可以看到/dev/shm的大小已增加到256 MiB。shell@Alicloud:~$ kubectl get pod NAME READY STATUS RESTARTS AGE test-765f78d484-68wg9 1/1 Running 0 44m shell@Alicloud:~$ kubectl exec -it test-765f78d484-68wg9 -- bash root@test-765f78d484-68wg9:/# df -h Filesystem Size Used Avail Use% Mounted on overlay 30G 4.1G 26G 14% / tmpfs 64M 0 64M 0% /dev tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup tmpfs 256M 0 256M 0% /dev/shm /dev/vda4 30G 4.1G 26G 14% /etc/hosts overlay 8.8G 4.9G 3.5G 58% /etc/hostname tmpfs 4.0G 12K 4.0G 1% /run/secrets/kubernetes.io/serviceaccount tmpfs 1.9G 0 1.9G 0% /proc/acpi tmpfs 1.9G 0 1.9G 0% /sys/firmware
该文章对您有帮助吗?