我对k8s还是很陌生,所以如果我滥用k8s术语,请原谅我。我希望有人可以指出正确的方向,并提出最佳方法。
我有一个运行在一组树莓pis上的k8s集群。我想添加一个所有工作人员均可访问的数据库卷。我打算使用USB外部驱动器来存储数据库内容。
是否要将外部驱动器安装到主节点上?
如何将外部驱动器声明为k8s资源?
配置完成后,其他k8s节点中的Pod如何访问此外部驱动器?
通读k8s的Volumes页面后,听起来好像我正在寻找“本地”类型的Volume。如果将本地卷安装到主节点上,是否可以在工作节点上运行postgres容器并访问安装在主节点上的卷?
答案 0 :(得分:1)
如果我将本地卷安装到主节点上,是否可以在工作节点上运行postgres容器并访问安装在主节点上的卷?
不。您将需要运行一些操作以使其他节点可以访问您的卷。有大量用于此目的的文件系统(Ceph,Lustre甚至NFS等),而且也开始有Kubernetes本机文件系统(例如Rook)
答案 1 :(得分:1)
最简单的方法是在主节点上set up NFS server,通过NFS导出USB驱动器,然后将其作为持久卷安装在pod中。为此,您需要首先创建PersistentVolume:
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteMany
nfs:
server: master-node-ip
path: /mnt/nfsserver
然后创建相同大小的PersistentVolumeClaim:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs
spec:
accessModes:
- ReadWriteMany
storageClassName: ""
resources:
requests:
storage: 5Gi
之后,您可以将该PVC安装在所有需要的吊舱上:
volumeMounts:
- name: nfs
mountPath: "/usr/share/nginx/html"
volumes:
- name: nfs
persistentVolumeClaim:
claimName: nfs