This topic describes how to modify the shm size of a pod by setting the sizeLimit parameter of an emptyDir volume whose storage media is memory and mounting the volume to the /dev/shm
directory of the pod. This way, you can resolve the issue of insufficient shared memory in the pod.
Scenario
The shared memory (shm) of pods created in Kubernetes is automatically set to 64 MiB in size and is mounted to the /dev/shm
directory. The size cannot be modified.
Kubernetes does not provide a method to set the size of a shm. If you want to scale up the shm of a pod, you can mount an emptyDir volume whose storage media is memory to the /dev/shm
directory of the pod.
Configuration example
Prepare a YAML file.
vim emptydir-shm.yaml
The following code provides the content of an example emprydir-shm.yaml file. In the example, the medium parameter of the emptyDir volume is set to Memory, the sizeLimit parameter is set to 256Mi, and the emptyDir volume is mounted to the
/dev/shm
directory. This way, the shm size of the pod is increased to 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
Create a Deployment.
kubectl create -f emptydir-shm.yaml
View the results.
Log on to the container and run the
df -h
command to view the disk space. The size of the disk in the/dev/shm
directory is scaled up to 256 MiB.