我有一个由3个节点组成的GCE容器集群。在每个节点上,我都运行一个POD,就像那个那样:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: test-deployment
spec:
replicas: 3
template:
metadata:
labels:
app: none
track: stable
spec:
containers:
- name: hello
image: gcr.io/persistent-volumes-test/alpine:v1.2
resources:
limits:
cpu: 0.2
memory: "10Mi"
volumeMounts:
- mountPath: "/persistentDisk"
name: persistent-disk
ports:
- containerPort: 65535
name: anti-affinity
hostPort: 65535
volumes:
- name: persistent-disk
persistentVolumeClaim:
claimName: myclaim定义“反亲和”端口的诀窍确保每个POD在不同的节点上运行。我创建了3个PersistentVolume,定义如下:
kind: PersistentVolume
apiVersion: v1
metadata:
name: persistent-volume-1
annotations:
volume.beta.kubernetes.io/storage-class: "slow"
labels:
release: "dev"
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
gcePersistentDisk:
pdName: persistent-disk-1
fsType: ext4他们部署得很好
NAME CAPACITY ACCESSMODES STATUS CLAIM REASON AGE
persistent-volume-1 10Gi RWO Released default/myclaim 13h
persistent-volume-2 10Gi RWO Released default/myclaim 5h
persistent-volume-3 10Gi RWO Available 5h索赔定义如下:
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: myclaim
annotations:
volume.beta.kubernetes.io/storage-class: "slow"
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
selector:
matchLabels:
release: "dev"我注意到,索赔范围仅限于我创建的一个卷,因此,只能成功地部署我的一个吊舱。我所期望的是,当POD使用这个声明时,它会找到一个可用的卷来绑定,匹配选择器规则。换句话说,我对PersistentVolumeClaims的解释是,一个PersistentVolumes声称在一组与PVC规范相匹配的PersistentVolumes中搜索可用的卷。这就是我的问题:
同一PersistentVolumeClaim能否被同一PersistentVolumes的不同实例所使用以连接到不同的PersistentVolumes?或者,一旦创建了一个并且只有一个卷,并且不能绑定到任何其他卷,索赔就会被绑定?
如果正确的答案是第二个,那么如何使PersistentVolume动态绑定到(选择的形式是一个集合),当部署白化,为每个需要连接的卷创建一个声明,从而避免为每个卷创建特定的POD?
发布于 2016-08-29 18:29:25
PersistentVolumeClaim保留满足其请求的特定存储实例。在多个PersistentVolumeClaim中使用相同的Pods将尝试在每个Pods中使用相同的绑定PersistentVolume,这在gcePersistentDisk的情况下是不可能的。
尝试为每个PersistentVolumClaim创建一个单独的Pod。
生命周期部分的持久卷doc提供了一个很好的概述。
https://stackoverflow.com/questions/39195493
复制相似问题