Is it possible to mount different pods to the same portion of a local persistent volume?

前端 未结 1 1037
执笔经年
执笔经年 2020-12-11 21:52

Basically, I\'m creating a StatefulSet deployment with 2 pods (single host cluster), I would like to that each pod will be able to mount to a base folder in the host, and to

相关标签:
1条回答
  • 2020-12-11 22:48

    I am able to achieve the above scenario, what you need is "claimRef" in your pv to bind your PVC. Please have a look at following pv json and statefulset json

    PV-0.json

    {
      "kind": "PersistentVolume",
      "apiVersion": "v1",
      "metadata": {
        "name": "pv-data-vol-0",
        "labels": {
          "type": "local"
        }
      },
      "spec": {
        "capacity": {
          "storage": "10Gi"
        },
        "accessModes": [
          "ReadWriteOnce"
        ],
        "storageClassName": "local-storage",
        "local": {
          "path": "/prafull/data/pv-0"
        },
        "claimRef": {
          "namespace": "default",
          "name": "data-test-sf-0"
        },
        "nodeAffinity": {
          "required": {
            "nodeSelectorTerms": [
              {
                "matchExpressions": [
                  {
                    "key": "kubernetes.io/hostname",
                    "operator": "In",
                    "values": [
                      "ip-10-0-1-46.ec2.internal"
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    }
    

    PV-1.json

    {
      "kind": "PersistentVolume",
      "apiVersion": "v1",
      "metadata": {
        "name": "pv-data-vol-1",
        "labels": {
          "type": "local"
        }
      },
      "spec": {
        "capacity": {
          "storage": "10Gi"
        },
        "accessModes": [
          "ReadWriteOnce"
        ],
        "storageClassName": "local-storage",
        "local": {
          "path": "/prafull/data/pv-1"
        },
        "claimRef": {
          "namespace": "default",
          "name": "data-test-sf-1"
        },
        "nodeAffinity": {
          "required": {
            "nodeSelectorTerms": [
              {
                "matchExpressions": [
                  {
                    "key": "kubernetes.io/hostname",
                    "operator": "In",
                    "values": [
                      "ip-10-0-1-46.ec2.internal"
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    }
    

    Statefulset.json

    {
      "kind": "StatefulSet",
      "apiVersion": "apps/v1beta1",
      "metadata": {
        "name": "test-sf",
        "labels": {
          "state": "test-sf"
        }
      },
      "spec": {
        "replicas": 2,
        "template": {
          "metadata": {
            "labels": {
              "app": "test-sf"
            },
            "annotations": {
              "pod.alpha.kubernetes.io/initialized": "true"
            }
          }
          ...
          ...
        },
        "volumeClaimTemplates": [
          {
            "metadata": {
              "name": "data"
            },
            "spec": {
              "accessModes": [
                "ReadWriteOnce"
              ],
              "storageClassName": "local-storage",
              "resources": {
                "requests": {
                  "storage": "10Gi"
                }
              }
            }
          }
        ]
      }
    }
    

    There will be two pods created test-sf-0 and test-sf-1 which in-turn will be created two PVC data-test-sf-0 and data-test-sf-1 which will be bound to PV-0 and Pv-1 respectively. Hence test-sf-0 will write to the location specified in PV-0 and test-sf-1 will write in location specified on PV-1. Hope this helps.

    0 讨论(0)
提交回复
热议问题