从 docker-compose 转换为 Kubernetes - 如何处理本地卷
Converting from docker-compose to Kubernetes - how to deal with volumes on local
我正在尝试将我的本地开发环境从 docker-compose
转换为轻量级 Kubernetes,因为我们的生产环境都是 Kubernetes(类似)。在 Kompose 的帮助下,我可以转换我的设置。然而,我遇到的问题是将 Docker 卷转换为本地开发机器卷和卷声明。我找到的大多数示例涵盖 S3 或 NFS 的驱动程序,这不是我的开发笔记本电脑提供的。
所以当我在 docker-compose.yml
中有这样的设置时,k8s 中的本地开发等效项是什么?
version: "3.6"
services:
my_test:
image: "myregistry.com/my_test"
container_name: "demo"
hostname: "demo.acme.local"
stop_grace_period: 120s
cap_add:
- SYS_PTRACE
ports:
- 80:80
volumes:
- my_vol:/local/my_app
volumes:
my_vol:
name: "/local/containers/my_app"
external: false
我“只”在寻找音量部分。其余的似乎很清楚。
感谢帮助
是的,您可以使用主机路径,或者您可以使用您
上的emptydir
可能 hostpath 是更好的选择。
如果您打算使用 minikube,您还可以查看 PV 和 PVC 选项,主要用于 Kubernetes 中的 persistence 存储。
主机路径 : https://kubernetes.io/docs/concepts/storage/volumes/#hostpath-configuration-example
空目录 : https://kubernetes.io/docs/concepts/storage/volumes/#emptydir
您发现的两种解决方案(hostpath
和 emptydir
)看起来都不错。
这里有两个文件:
A hostPath
volume mounts a file or directory from the host node's filesystem into your Pod.
对于需要的path
属性,您还可以为hostPath
卷指定一个type
。
NOTE:
HostPath volumes present many security risks, and it is a best practice to avoid the use of HostPaths when possible. When a HostPath volume must be used, it should be scoped to only the required file or directory, and mounted as ReadOnly.
An emptyDir
volume is first created when a Pod is assigned to a node, and exists as long as that Pod is running on that node.
EmptyDir
卷最初是空的。 pod 中的所有容器都在 emptyDir
卷中具有读取和写入相同文件的权限,尽管该卷可能存在不同的本地化(它可以安装在每个容器中的相同或不同路径)。
如果 Pod 因任何原因从节点中删除,emptyDir
中的数据将被永久删除。
Depending on your environment, emptyDir
volumes are stored on whatever medium that backs the node such as disk or SSD, or network storage.
我正在尝试将我的本地开发环境从 docker-compose
转换为轻量级 Kubernetes,因为我们的生产环境都是 Kubernetes(类似)。在 Kompose 的帮助下,我可以转换我的设置。然而,我遇到的问题是将 Docker 卷转换为本地开发机器卷和卷声明。我找到的大多数示例涵盖 S3 或 NFS 的驱动程序,这不是我的开发笔记本电脑提供的。
所以当我在 docker-compose.yml
中有这样的设置时,k8s 中的本地开发等效项是什么?
version: "3.6"
services:
my_test:
image: "myregistry.com/my_test"
container_name: "demo"
hostname: "demo.acme.local"
stop_grace_period: 120s
cap_add:
- SYS_PTRACE
ports:
- 80:80
volumes:
- my_vol:/local/my_app
volumes:
my_vol:
name: "/local/containers/my_app"
external: false
我“只”在寻找音量部分。其余的似乎很清楚。
感谢帮助
是的,您可以使用主机路径,或者您可以使用您
上的emptydir可能 hostpath 是更好的选择。
如果您打算使用 minikube,您还可以查看 PV 和 PVC 选项,主要用于 Kubernetes 中的 persistence 存储。
主机路径 : https://kubernetes.io/docs/concepts/storage/volumes/#hostpath-configuration-example
空目录 : https://kubernetes.io/docs/concepts/storage/volumes/#emptydir
您发现的两种解决方案(hostpath
和 emptydir
)看起来都不错。
这里有两个文件:
A
hostPath
volume mounts a file or directory from the host node's filesystem into your Pod.
对于需要的path
属性,您还可以为hostPath
卷指定一个type
。
NOTE: HostPath volumes present many security risks, and it is a best practice to avoid the use of HostPaths when possible. When a HostPath volume must be used, it should be scoped to only the required file or directory, and mounted as ReadOnly.
An
emptyDir
volume is first created when a Pod is assigned to a node, and exists as long as that Pod is running on that node.
EmptyDir
卷最初是空的。 pod 中的所有容器都在 emptyDir
卷中具有读取和写入相同文件的权限,尽管该卷可能存在不同的本地化(它可以安装在每个容器中的相同或不同路径)。
如果 Pod 因任何原因从节点中删除,emptyDir
中的数据将被永久删除。
Depending on your environment,
emptyDir
volumes are stored on whatever medium that backs the node such as disk or SSD, or network storage.