我对k8s相当陌生,所以如果我滥用k8s术语,请原谅我。我希望有人能为我指出正确的方向,并建议最好的方法。
我有一个在一组树莓派上运行的 k8s 集群。我想添加一个所有工作人员都可以访问的数据库卷。我计划使用 USB 外部驱动器来存储数据库内容。
是否要将外部驱动器挂载到主节点?
如何将外部驱动器声明为 k8s 资源?
配置完成后,其他 k8s 节点中的 Pod 如何访问此外部驱动器?
通读 k8s 卷页面后,听起来我可能正在寻找"本地"类型的卷。如果我将本地卷挂载到主节点,我是否能够在工作节点中运行 postgres 容器并访问主节点上挂载的卷?
最简单的方法是在主节点上设置 NFS 服务器,通过 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
如果我将本地卷挂载到主节点,我是否能够在工作节点中运行 postgres 容器并访问主节点上挂载的卷?
不。您将需要运行一些内容以使其他节点可以访问您的卷。有大量的文件系统用于此目的(Ceph,Lustre,甚至NFS等(。并且也开始有Kubernetes原生的(即Rook(。