我在docs中看到了如何对pod进行此操作,但我想使用复制控制器来管理我的pod,确保始终有一个up。
如何定义正在运行的pod具有持久卷的复制控制器?
这与Kubernetes persistentVolumes和persistentVolumeClaims有什么关系?
答案 0 :(得分:9)
在Replication Controller中使用持久卷非常适合共享存储。您在RC的pod模板中包含persistentVolumeClaim。每个pod都将使用相同的声明,这意味着它的共享存储。如果您的副本计数>这也适用于gcloud中的只读访问。 1。
如果您想要每个pod具有不同的卷,那么您当前必须创建许多具有Replicas = 1且具有不同的persistentVolumeClaims的RC。
我们正在设计一个通过RC扩展存储的设计,其中每个pod都有自己的卷而不是共享相同的声明。
答案 1 :(得分:2)
请注意,持久卷链接到节点,它们不会在整个群集中共享。这可能是您没有找到有关持久卷的复制控制器的信息的原因。因为复制控制器不限于运行一个节点。
如果您使用的是Google Cloud,请查看GCEPersistentVolume https://github.com/GoogleCloudPlatform/kubernetes/tree/master/docs/user-guide/persistent-volumes
另一种选择,虽然不是生产准备就绪: https://clusterhq.com/2015/04/24/data-migration-kubernetes-flocker/
答案 2 :(得分:0)
这是一个使用gce持久卷的mongo-db复制控制器:
apiVersion: v1
kind: ReplicationController
metadata:
labels:
name: mongo
name: mongo-controller
spec:
replicas: 1
template:
metadata:
labels:
name: mongo
spec:
containers:
- image: mongo
name: mongo
ports:
- name: mongo
containerPort: 27017
hostPort: 27017
volumeMounts:
- name: mongo-persistent-storage
mountPath: /data/db
volumes:
- name: mongo-persistent-storage
gcePersistentDisk:
pdName: mongo-disk
fsType: ext4
用于在gce中创建磁盘:
gcloud compute disks create mongo-disk --size=3GB --zone=any_zone
请注意,磁盘区域必须与您的群集相同。