kubernetes - 如何在 GKE 中使用 ReadWriteMany 创建持久卷声明?
问题描述
使用 ReadWriteMany 将卷附加到多个 pod 创建持久卷声明的最佳方法是什么?
根据https://kubernetes.io/docs/concepts/storage/persistent-volumes中的支持表,GCEPersistentDisk 本身不支持 ReadWriteMany。
在 GCP GKE 世界中工作时最好的方法是什么?我应该使用 CephFS 或 Glusterfs 等集群文件系统吗?是否有关于我应该使用的已准备好生产的建议?
我能够按照此处的步骤配置 NFS pod 部署 - https://medium.com/platformer-blog/nfs-persistent-volumes-with-kubernetes-a-case-study-ce1ed6e2c266但它似乎有点 hacky并增加了另一层复杂性。它似乎也只允许一个副本(这是有道理的,因为磁盘不能被多次挂载),所以如果/当 pod 出现故障时,我的持久存储也会如此。
解决方案
现在可以使用Cloud Filestore。
首先创建一个 Filestore 实例。
gcloud filestore instances create nfs-server
--project=[PROJECT_ID]
--zone=us-central1-c
--tier=STANDARD
--file-share=name="vol1",capacity=1TB
--network=name="default",reserved-ip-range="10.0.0.0/29"
然后在 GKE 中创建一个持久卷。
apiVersion: v1
kind: PersistentVolume
metadata:
name: fileserver
spec:
capacity:
storage: 1T
accessModes:
- ReadWriteMany
nfs:
path: /vol1
server: [IP_ADDRESS]
[IP_ADDRESS] 在文件存储实例详细信息中可用。
您现在可以请求持久卷声明。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: fileserver-claim
spec:
accessModes:
- ReadWriteMany
storageClassName: "fileserver"
resources:
requests:
storage: 100G
最后,将卷挂载到您的 pod 中。
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my container
image: nginx:latest
volumeMounts:
- mountPath: /workdir
name: mypvc
volumes:
- name: mypvc
persistentVolumeClaim:
claimName: fileserver-claim
readOnly: false
解决方案在此处详细说明:https ://cloud.google.com/filestore/docs/accessing-fileshares
推荐阅读
- c++ - 单元测试线程:如何确认线程被阻塞
- python - 第一个 epoch 完成后模型训练卡住了……第二个 epoch 甚至不会开始,也不会抛出任何错误,它只是保持空闲
- python - 为同一个函数python模拟两种方法
- javascript - 使用 JS 从 Laravel 8 存储文件夹访问非公共文件
- node.js - Heroku at=error code=H10 desc="App 崩溃"
- json - 如何将命令的结果转换为 PowerShell 中的二维数组?
- android - Capacitor Geolocation.getCurrentPosition 需要 10 秒才能在 IOS 设备中获取位置
- javascript - 在 JS 中基于鼠标位置 3D 效果创建透视框时出现错误
- android - 为什么我的应用程序在互联网关闭时仍然崩溃
- c# - 如何在 ASP.NET Core 5 运行时动态重新配置服务?