マルチノード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のストレージクラスを書くことはできますか?動的なプロビジョニングをサポートしていますか?
私は同じことをやっています。私は https://github.com/kubernetes-incubator/external-storage/tree/master/nfs を見つけました。これはあなたのプロビジョナーのベースになっていると思いますか?
NFSプロバイダーは、定義されたパスの下に一意のディレクトリを作成する必要があると思います。私はこれがどのように行われるか本当にわかりません。
たぶん、これはkubernetesリポジトリのgithubの問題としてのほうが良いでしょう。
NFSを使用した動的ストレージプロビジョニングは機能しません。glusterfsを使用してください。設定中の一般的な問題を修正した優れたチュートリアルがあります。 http://blog.lwolf.org/post/how-i-deployed-glusterfs-cluster-to-kubernetes/
StorageClass
の目的は、ストレージをcreateすることです。クラウドプロバイダー(またはkubernetesドキュメントで「プロビジョニング」と呼ぶ)から。 NFSの場合は、既存のストレージへのaccessのみを取得し、作成は必要ありません。したがって、StorageClass
は必要ありません。これを参照してください blog 。
また、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
のボリュームマウントに使用されるフォルダーを変更して、クラスターと一致させることができます。
以下に示す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が表示されます。