How to run DPDK in k8s - Two containers in a pod
Page content
하나의 pod에 2개의 container를 두고, 각각의 container에 primary process, secondary process를 실행하려면 두 개 container에서 실행되는 DPDK process간 runime config 파일과, hugepage map 파일을 공유하는 방법은 다음과 같다.
하나의 pod에 하나의 container만 두는 경우와 달리 두 개의 container가 /var/run/dpdk
위치를 공유해야 하므로, 각 container가 갖는 기본 파일 시스템이 아니라 명시적으로 pod의 volume을 이용해서 파일을 공유해야 한다.
이를 위해 pod spec에 다음과 같은 volume spec을 추가한다.
volume:
- name: dpdk-config
emptyDir:
emptyDir
에 명시적으로 지정하지 않은 경우 tmpfs
를 사용하므로, 위 volume은 tmpfs
를 사용하여 생성된다.
생성된 volume은 다음과 같이 각 container에서 /var/run/dpdk
에 마운트해야 한다.
- name: container-1
...
volumeMounts:
- mountPath: /var/run/dpdk
name: dpdk-config
- name: container-2
...
volumeMounts:
- mountPath: /var/run/dpdk
name: dpdk-config
Simplified view
Reference
https://github.com/cychong47/how-to-share-hugepage-in-k8s/tree/main/two-containers-in-a-single-pod
#til #dpdk #hugepage