Как доставить контейнер данных докера в Кубернетес? - PullRequest
1 голос
/ 14 октября 2019

У меня есть приложение, которое использует 4 контейнера данных докера для данных, необходимых для запуска некоторых тестов. На данный момент у меня есть файл docker-compose и их изображения, но у меня нет доступа к Dockerfile контейнеров данных или фактическим данным.

Как это приложение работает в docker-compose, как показано ниже:он называется rtsp_server, и он загружает разные тома из контейнеров данных, таких как st-andries4 (я только что написал один из них).

Это их docker-compose:

# The application
rtsp_server:
  image: rtsp_server_image
  volumes_from:
    - rtsp_data_st_andries4:ro
  ports:
    - "8554:8554"
  command: python ./rtsp-server.py /rtsp_data/st-andries-4 st_andries_4

# Data container
rtsp_data_st_andries4:
  image: st_andries_4:1
  volumes:
    - /rtsp_data/st-andries-4
  command: /bin/true
  mem_limit: 10000000000

IЯ уже принес приложение, rtsp_server, в Kubernetes, и оно отлично работает, но мне нужно также перенести контейнеры данных на k8s, но я не знаю, как это сделать.

1 Ответ

1 голос
/ 14 октября 2019

Я не совсем уверен, хотите ли вы создать постоянный том в Kubernetes или перенести дату из существующих контейнеров данных Docker.

Вот документация Kubernetes о том, как настроить Pod для использованияPersistentVolume for Storage .

Сначала вы должны создать PersistentVolume:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: task-pv-volume
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data"

Затем PersistentVolumeClaim, потому что этоis был pod использует для запроса физической памяти.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: task-pv-claim
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 3Gi

И, наконец, вы можете добавить volumeMounts внутри вашего модуля, который может выглядеть следующим образом:

apiVersion: v1
kind: Pod
metadata:
  name: task-pv-pod
spec:
  volumes:
    - name: task-pv-storage
      persistentVolumeClaim:
        claimName: task-pv-claim
  containers:
    - name: task-pv-container
      image: nginx
      ports:
        - containerPort: 80
          name: "http-server"
      volumeMounts:
        - mountPath: "/usr/share/nginx/html"
          name: task-pv-storage

Обновление

Чтобы разделить PVC между многими модулями, вам необходимо настроить:

spec:
    accessModes:
      - ReadWriteMany

Я также рекомендовал бы проверить этот блог Создать ReadWriteMany PersistentVolumeClaims в вашем кластере Kubernetes и выбор подходящего решения.

Возможно, вас заинтересует проект Rook с открытым исходным кодом, облачное хранилище для Kubernetes.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...