我有一个应用程序,它依赖于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,但我不知道该怎么做。
答案 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的开源,云原生存储。