web-dev-qa-db-ja.com

Kubernetes:NFSを使用した動的永続ボリュームのプロビジョニング

マルチノードkubernetesセットアップがあります。 NFSボリュームプラグインのストレージクラスを使用して、永続ボリュームを動的に割り当てようとしています。 glusterfs、aws-ebsなどのストレージクラスの例を見つけましたが、NFSの例は見つかりませんでした。 PVとPVCのみを作成すると、NFSは非常にうまく機能します(ストレージクラスなし)。他のプラグインを参照して、NFSのストレージクラスファイルを作成しようとしました。以下を参照してください、

nfs-storage-class.yaml

kind: StorageClass
apiVersion: storage.k8s.io/v1beta1
metadata:
  namespace: kube-system
  name: my-storage
  annotations:
    storageclass.beta.kubernetes.io/is-default-class: "true"
  labels:
    kubernetes.io/cluster-service: "true"

provisioner: kubernetes.io/nfs
parameters:
  path: /nfsfileshare
  server: <nfs-server-ip> 

nfs-pv-claim.yaml

apiVersion: v1
metadata:
  name: demo-claim
  annotations:
    volume.beta.kubernetes.io/storage-class: my-storage
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 3Gi

うまくいきませんでした。だから、私の質問は、NFSのストレージクラスを書くことはできますか?動的なプロビジョニングをサポートしていますか?

11
Yudi

私は同じことをやっています。私は https://github.com/kubernetes-incubator/external-storage/tree/master/nfs を見つけました。これはあなたのプロビジョナーのベースになっていると思いますか?

NFSプロバイダーは、定義されたパスの下に一意のディレクトリを作成する必要があると思います。私はこれがどのように行われるか本当にわかりません。

たぶん、これはkubernetesリポジトリのgithubの問題としてのほうが良いでしょう。

2
xeor

NFSを使用した動的ストレージプロビジョニングは機能しません。glusterfsを使用してください。設定中の一般的な問題を修正した優れたチュートリアルがあります。 http://blog.lwolf.org/post/how-i-deployed-glusterfs-cluster-to-kubernetes/

2
karthik101

StorageClassの目的は、ストレージをcreateすることです。クラウドプロバイダー(またはkubernetesドキュメントで「プロビジョニング」と呼ぶ)から。 NFSの場合は、既存のストレージへのaccessのみを取得し、作成は必要ありません。したがって、StorageClassは必要ありません。これを参照してください blog

1

また、kubernetesクラスターでNFSプロビジョニング機能を有効にしようとしましたが、最初は動作しませんでした。クイックスタートガイドには、rbac.yamlも適用する必要があることが記載されていないためです( [〜# 〜] pr [〜#〜] これを修正するには)。

クラスタで次の手順を実行すると、nfsプロビジョニングツールが正常に機能します。 https://github.com/kubernetes-incubator/external-storage/tree/master/nfs#quickstart

$ kubectl create -f deploy/kubernetes/deployment.yaml
$ kubectl create -f deploy/kubernetes/rbac.yaml
$ kubectl create -f deploy/kubernetes/class.yaml

その後、次のようなPVCを作成できるはずです。

$ kubectl create -f deploy/kubernetes/claim.yaml

deployment.yamlのボリュームマウントに使用されるフォルダーを変更して、クラスターと一致させることができます。

1

以下に示すpv、pvcを直接作成できます。これはプライベートレジストリ用のPVおよびPVCの例であり、ほとんどのアプリで機能するはずです。必ずnfsサーバーをインストールし、nfsサーバーの/ etc/exports内のマウントエントリをアクセス用に構成してください。

example:
/mnt/disks/vol1 <IP ADDRESS OF THE NODE>(rw,sync,no_root_squash,no_all_squash)

registry-pv.yml-

apiVersion: v1
kind: PersistentVolume
metadata:
  name: registry-pv
  namespace: kube-system
spec:
  accessModes:
  - ReadWriteMany
  capacity:
    storage: 50Gi
  nfs:
    path: /mnt/disks/vol1
    server: <IP-Address of NFS SERVER>
  persistentVolumeReclaimPolicy: Retain
  storageClassName: registry-storage

registry-pvc.yml-

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: registry-pvc
  namespace: kube-system
  labels:
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: registry-storage
  volumeName: registry-pv
  resources:
    requests:
      storage: 50Gi

pvc、pvを作成します-

kubectl create -f registry-pv.yml 
kubectl create -f registry-pvc.yml

作成すると、PVCにバインドされたPVが表示されます。

enter image description here

0
karthik101