Ошибка при запуске приложения DPDK L2FWD в контейнере, управляемом Kubernetes - PullRequest
0 голосов
/ 14 марта 2019

Я пытаюсь запустить приложение DPDK L2FWD в контейнере, управляемом Kubernetes.

Для этого я выполнил следующие шаги -

  • Я создал установку K8s для одного узла, в которой мастер и клиент работают на хост-компьютере. В качестве сетевого плагина я использовал Calico Network.

  • Для создания настроенного образа докера DPDK я использовал приведенный ниже Dockerfile

ИЗ Ubuntu: 16.04 RUN apt-get update
RUN apt-get install -y net-tools
RUN apt-get install -y python
RUN apt-get install -y kmod RUN apt-get install -y iproute2
RUN apt-get install -y net-tools ДОБАВИТЬ ./dpdk/ / home / sdn / dpdk /
WORKDIR / home / sdn / dpdk /

  • Для запуска приложения DPDK внутри POD ниже директории хоста монтируются в POD с привилегированным доступом:

/ мнт / огромный
/ USR
/ Lib
/ И т.д.

Ниже приведен yaml развертывания k8s, используемый для создания POD

apiVersion: v1
kind: Pod
metadata:
  name: dpdk-pod126
spec:
  containers:
  - name: dpdk126
    image: dpdk-test126
    imagePullPolicy: IfNotPresent
    command: ["/bin/sh"]
    args: ["-c", "while true; do echo hello; sleep 10;done"]
    resources:
      requests:
        memory: "2Gi"
        cpu: "100m"
    volumeMounts:
      - name: hostvol1
        mountPath: /mnt/huge
      - name: hostvol2
        mountPath: /usr
      - name: hostvol3
        mountPath: /lib
      - name: hostvol4
        mountPath: /etc
    securityContext:
      privileged: true
  volumes:
  - name: hostvol1
    hostPath:
      path: /mnt/huge
  - name: hostvol2
    hostPath:
      path: /usr
  - name: hostvol3
    hostPath:
      path: /home/sdn/kubernetes-test/libtest
  - name: hostvol4
    hostPath:
      path: /etc
  • Ниже настройки уже выполнены в хосте -

    1. Огромный монтаж страницы.
    2. Привязка интерфейса в пространстве пользователя.
  • После успешного создания POD, при попытке запустить приложение DPDK L2FWD внутри POD, я получаю следующую ошибку -

root @ dpdk-pod126: / home / sdn / dpdk # ./examples/l2fwd/build/l2fwd -c 0x0f - -p 0x03 -q 1
EAL: обнаружено 16 lcore (s)
EAL: обнаружено 1 NUMA узлов
EAL: многопроцессорный сокет / var / run / dpdk / rte / mp_socket
EAL: не сообщается о свободных огромных страницах в огромных страницах - 1048576 КБ
EAL: зарезервировано 1007 огромных страниц размером 2097152, но не найдены установленные hugetlbfs для этого размера
EAL: FATAL: невозможно получить информацию о огромной странице.
EAL: невозможно получить информацию о огромной странице.
EAL: ошибка - выход с кодом: 1
Причина: неверные аргументы EAL

1 Ответ

0 голосов
/ 21 марта 2019

Согласно этому , вы можете отсутствовать medium: HugePages от вашего огромного объема страницы.

Кроме того, огромные страницы могут быть немного привередливыми. Можете ли вы предоставить вывод:
cat /proc/meminfo | grep -i huge
и проверьте, есть ли файлы в /mnt/huge?

Также может быть , это может быть полезным. Можете ли вы как-то проверить, монтируются ли огромные страницы как mount -t hugetlbfs nodev /mnt/huge?

...