在Google Cloud中定义Kubernetes复制控制器时,如何指定持久卷?

时间:2015-07-17 17:24:21

标签: storage google-cloud-platform kubernetes

我在docs中看到了如何对pod进行此操作,但我想使用复制控制器来管理我的pod,确保始终有一个up。

  1. 如何定义正在运行的pod具有持久卷的复制控制器?

  2. 这与Kubernetes persistentVolumes和persistentVolumeClaims有什么关系?

3 个答案:

答案 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

请注意,磁盘区域必须与您的群集相同。