【发布时间】:2021-01-31 05:38:38
【问题描述】:
我在将 ReadOnlyMany 持久卷挂载到 GKE 上的多个 pod 时遇到了一些问题。目前它只能安装在一个 pod 上,而无法安装在任何其他 pod 上(由于第一个 pod 上正在使用该卷),导致部署仅限于一个 pod。
我怀疑该问题与从卷快照填充的卷有关。
查看相关问题后,我已经进行了理智检查 spec.containers.volumeMounts.readOnly = true 和 spec.containers.volumes.persistentVolumeClaim.readOnly = true 这似乎是相关问题的最常见修复。
我在下面包含了相关的 yaml。任何帮助将不胜感激!
这是(大部分)部署规范:
spec:
containers:
- env:
- name: GOOGLE_APPLICATION_CREDENTIALS
value: /var/secrets/google/key.json
image: eu.gcr.io/myimage
imagePullPolicy: IfNotPresent
name: monsoon-server-sha256-1
resources:
requests:
cpu: 100m
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /mnt/sample-ssd
name: sample-ssd
readOnly: true
dnsPolicy: ClusterFirst
enableServiceLinks: true
nodeName: gke-cluster-1-default-pool-3d6123cf-kcjo
priority: 0
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
serviceAccount: default
serviceAccountName: default
terminationGracePeriodSeconds: 29
tolerations:
- effect: NoExecute
key: node.kubernetes.io/not-ready
operator: Exists
tolerationSeconds: 300
- effect: NoExecute
key: node.kubernetes.io/unreachable
operator: Exists
tolerationSeconds: 300
volumes:
- name: sample-ssd
persistentVolumeClaim:
claimName: sample-ssd-read-snapshot-pvc-snapshot-5
readOnly: true
存储类(也是本集群的默认存储类):
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: sample-ssd
provisioner: pd.csi.storage.gke.io
volumeBindingMode: Immediate
parameters:
type: pd-ssd
PVC:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: sample-ssd-read-snapshot-pvc-snapshot-5
spec:
storageClassName: sample-ssd
dataSource:
name: sample-snapshot-5
kind: VolumeSnapshot
apiGroup: snapshot.storage.k8s.io
accessModes:
- ReadOnlyMany
resources:
requests:
storage: 20Gi
【问题讨论】:
-
这是我从 GKE 获得的特定错误事件:AttachVolume.Attach failed for volume "pvc-0bf664e7-4cb0-4621-9ef0-f24d00115a27" : rpc error: code = Internal desc = unknown附加错误:等待区域操作时失败:操作 operation-1602875581480-5b1ce8da74009-eb0dd671-6821f2b2 失败(RESOURCE_IN_USE_BY_ANOTHER_RESOURCE):磁盘资源 'projects/monsoon-273916/zones/europe-west2-a/disks/pvc-0bf664e7-4b -4621-9ef0-f24d00115a27' 已被 'projects/monsoon-273916/zones/europe-west2-a/instances/gke-cluster-1-default-pool-3d6123cf-kcjo' 使用
-
有一个与 ROX 设置相关的问题打开 github.com/kubernetes/kubernetes/issues/70505,可能会有所帮助!
-
我假设创建了 PersistentVolume? PV 本身看起来像吗?是否标记为 spec.gcePersistentDisk.readOnly=true?
-
没有 PV 规范,因为这是动态配置的 PVC。以下是已配置 PV 上“kubectl describe”的相关部分: StorageClass: sample-ssd Status: Bound Access Modes: ROX VolumeMode: Filesystem Source: Type: CSI (a Container Storage Interface (CSI) volume source) Driver: pd. csi.storage.gke.io VolumeHandle:
ReadOnly: false -
@MikePerrow 您使用的 kubernet 版本是什么?
标签: kubernetes google-kubernetes-engine persistent-volumes