There are two types of shared memory objects in Linux: System V and POSIX. The containers in a pod share the IPC namespace of the pod infrastructure container and so are able to share the System V shared memory objects. This document describes how they can also share POSIX shared memory objects.
POSIX shared memory requires that a tmpfs be mounted at /dev/shm. The containers in a pod do not share their mount namespaces so we use volumes to provide the same /dev/shm into each container in a pod. The following example shows how to set up POSIX shared memory between two containers.
--- apiVersion: v1 id: hello-openshift kind: Pod metadata: name: hello-openshift labels: name: hello-openshift spec: volumes: (1) - name: dshm emptyDir: medium: Memory containers: - image: kubernetes/pause name: hello-container1 ports: - containerPort: 8080 hostPort: 6061 volumeMounts: (2) - mountPath: /dev/shm name: dshm - image: kubernetes/pause name: hello-container2 ports: - containerPort: 8081 hostPort: 6062 volumeMounts: (3) - mountPath: /dev/shm name: dshm
|1||specifies the tmpfs volume
|2||enables POSIX shared memory for
|3||enables POSIX shared memory for
Create the pod using the shared-memory.yaml file:
$ oc create -f shared-memory.yaml