我对k8s很新,所以请原谅我,如果我滥用k8s的术语。我希望有人能指出我正确的方向,并建议最好的方法来做到这一点。
我有一组k8s集群在一组覆盆子pis上运行。我想添加一个可供所有工作人员访问的数据库卷。我计划使用USB外置驱动器来存储数据库内容。
我是否要将外部驱动器安装到主节点?
外部驱动器如何声明为k8s资源?
配置完成后,其他k8节点中的pod如何访问此外部驱动器?
通过k8s Volumes页面阅读后,听起来我可能正在寻找一个“本地”类型的卷。如果我将本地卷挂载到主节点,我是否能够在工作节点中运行postgres容器并访问主节点上安装的卷?
如果我将本地卷挂载到主节点,我是否能够在工作节点中运行postgres容器并访问主节点上安装的卷?
不需要。您需要运行一些东西,以使其他节点可以访问您的卷。为此目的有大量的文件系统(Ceph,Lustre,甚至NFS等)并且也开始有Kubernetes本地的(即Rook。)
最简单的方法是在主节点上使用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安装在所有需要的pod上:
volumeMounts:
- name: nfs
mountPath: "/usr/share/nginx/html"
volumes:
- name: nfs
persistentVolumeClaim:
claimName: nfs