如何将Docker数据容器带到Kubernetes?

时间:2019-10-14 11:54:04

标签: docker kubernetes docker-compose

我有一个应用程序,它依赖于4个docker数据容器来运行某些测试所需的数据。目前,我有他们的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

我已经将应用程序rtsp_server带到Kubernetes,它可以正常工作,但是我还需要将数据容器带到k8s,但我不知道该怎么做。

1 个答案:

答案 0 :(得分:1)

我不确定是否要在Kubernetes上创建持久卷或从现有Docker数据容器中移动日期。

这里是Kubernetes文档,介绍如何Configure a Pod to Use a 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,因为这是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

我还建议您查看此博客Create ReadWriteMany PersistentVolumeClaims on your Kubernetes Cluster,然后选择适合您需求的解决方案。

您可能还对项目Rook感兴趣,该项目是Kubernetes的开源,云原生存储。

相关问题