sql >> データベース >  >> NoSQL >> MongoDB

NFS永続ボリュームを備えたKubernetesステートフルセット

    ストレージクラスが動的ボリュームプロビジョニングをサポートしていない場合は、PVと関連するPVCを手動で作成する必要があります 、yamlファイルを使用すると、volumeClaimTemplatesにより、既存のPVCをステートフルセットのポッドにリンクできます。

    実用的な例を次に示します。 https:/ /github.com/k8s-school/k8s-school/blob/master/examples/MONGODB-install.sh

    次のことを行う必要があります:

    • https://kind.sigs.k8s.io/ でローカルに実行します 、動的ボリュームプロビジョニングをサポートしているため、ここではPVCとPVが自動的に作成されます
    • PVおよびPVCYamlファイルをエクスポートする
    • これらのyamlファイルをテンプレートとして使用して、NFSバックエンド用のPVとPVCを作成します。

    これがあなたが種類で得るものです:

    $ ./MONGODB-install.sh               
    + kubectl apply -f 13-12-mongo-configmap.yaml
    configmap/mongo-init created
    + kubectl apply -f 13-11-mongo-service.yaml
    service/mongo created
    + kubectl apply -f 13-14-mongo-pvc.yaml
    statefulset.apps/mongo created
    $ kubectl get pods
    NAME      READY   STATUS    RESTARTS   AGE
    mongo-0   2/2     Running   0          8m38s
    mongo-1   2/2     Running   0          5m58s
    mongo-2   2/2     Running   0          5m45s
    $ kubectl get pvc
    NAME               STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    database-mongo-0   Bound    pvc-05247511-096e-4af5-8944-17e0d8222512   1Gi        RWO            standard       8m42s
    database-mongo-1   Bound    pvc-f53c35a4-6fc0-4b18-b5fc-d7646815c0dd   1Gi        RWO            standard       6m2s
    database-mongo-2   Bound    pvc-2a711892-eeee-4481-94b7-6b46bf5b76a7   1Gi        RWO            standard       5m49s
    $ kubectl get pv 
    NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                      STORAGECLASS   REASON   AGE
    pvc-05247511-096e-4af5-8944-17e0d8222512   1Gi        RWO            Delete           Bound    default/database-mongo-0   standard                8m40s
    pvc-2a711892-eeee-4481-94b7-6b46bf5b76a7   1Gi        RWO            Delete           Bound    default/database-mongo-2   standard                5m47s
    pvc-f53c35a4-6fc0-4b18-b5fc-d7646815c0dd   1Gi        RWO            Delete           Bound    default/database-mongo-1   standard                6m1s
    

    そして、PVCのダンプ(ここではvolumeClaimTemplateによって生成されます) odfの種類の動的ボリュームプロビジョニングのため):

    $ kubectl get pvc database-mongo-0 -o yaml
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      annotations:
        pv.kubernetes.io/bind-completed: "yes"
        pv.kubernetes.io/bound-by-controller: "yes"
        volume.beta.kubernetes.io/storage-provisioner: rancher.io/local-path
        volume.kubernetes.io/selected-node: kind-worker2
      creationTimestamp: "2020-10-16T15:05:20Z"
      finalizers:
      - kubernetes.io/pvc-protection
      labels:
        app: mongo
      managedFields:
        ...
      name: database-mongo-0
      namespace: default
      resourceVersion: "2259"
      selfLink: /api/v1/namespaces/default/persistentvolumeclaims/database-mongo-0
      uid: 05247511-096e-4af5-8944-17e0d8222512
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 1Gi
      storageClassName: standard
      volumeMode: Filesystem
      volumeName: pvc-05247511-096e-4af5-8944-17e0d8222512
    status:
      accessModes:
      - ReadWriteOnce
      capacity:
        storage: 1Gi
      phase: Bound
    

    および関連するPV:

    kubectl get pv pvc-05247511-096e-4af5-8944-17e0d8222512 -o yaml     
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      annotations:
        pv.kubernetes.io/provisioned-by: rancher.io/local-path
      creationTimestamp: "2020-10-16T15:05:23Z"
      finalizers:
      - kubernetes.io/pv-protection
      managedFields:
        ...
      name: pvc-05247511-096e-4af5-8944-17e0d8222512
      resourceVersion: "2256"
      selfLink: /api/v1/persistentvolumes/pvc-05247511-096e-4af5-8944-17e0d8222512
      uid: 3d1e894e-0924-411a-8378-338e48ba4a28
    spec:
      accessModes:
      - ReadWriteOnce
      capacity:
        storage: 1Gi
      claimRef:
        apiVersion: v1
        kind: PersistentVolumeClaim
        name: database-mongo-0
        namespace: default
        resourceVersion: "2238"
        uid: 05247511-096e-4af5-8944-17e0d8222512
      hostPath:
        path: /var/local-path-provisioner/pvc-05247511-096e-4af5-8944-17e0d8222512_default_database-mongo-0
        type: DirectoryOrCreate
      nodeAffinity:
        required:
          nodeSelectorTerms:
          - matchExpressions:
            - key: kubernetes.io/hostname
              operator: In
              values:
              - kind-worker2
      persistentVolumeReclaimPolicy: Delete
      storageClassName: standard
      volumeMode: Filesystem
    status:
      phase: Bound
    



    1. プライマリ-セカンダリMongodbセットで、誤ってセカンダリに書き込んだ場合、プライマリに反映され、プライマリにルーティングされます

    2. 特定の値を含まない配列を持つドキュメントを検索する

    3. ubuntu16.10にmongodbをインストールできません

    4. / sidekiqルートをパスワードで保護するにはどうすればよいですか(つまり、Sidekiq ::Webツールの認証が必要です)?