KubernetesにNFS Provisionerを配備してNFSに動的割り当てボリュームを提供する(前編)


一、NFS Provisionerの紹介
NFS Provisionerは、既存のNFSサーバと構成済みのNFSサーバを使用して、永続ボリューム宣言によるKubernetes永続ボリュームの動的構成をサポートする自動構成ボリュームプログラムです.
永続ボリュームは、namespace−{pvcName}−${pvName}として構成されます.
二、External NFS駆動の動作原理
K 8 Sの外部NFS駆動は、その動作方式(NFS serverとしてかNFS clientとしてか)によって2種類に分けることができる.
1、nfs-client
すなわち、K 8 Sの内蔵NFSによって、リモートエンドのNFSサーバをローカルディレクトリにマウントするように駆動するこのクラスを次に示します.次に、自身をstorage providerとしてstorage classに関連付けます.ユーザが対応するPVCを作成してPVを申請すると、providerはPVCの要求を自身の属性と比較し、満足すればローカルにマウントされたNFSディレクトリにPVが属するサブディレクトリを作成し、Podに動的なストレージサービスを提供する.
2、nfs
nfs-clientとは異なり、この駆動はk 8 sのNFS駆動を使用して遠位端のNFSをローカルに再割り当てするのではなく、ローカルファイルを直接コンテナ内部にマッピングし、コンテナ内でganeshaを使用する.nfsdはNFSサービスを対外的に提供する.PVを作成するたびに、ローカルのNFSルートディレクトリに対応するフォルダを直接作成し、そのサブディレクトリをexportします.NFSによるKubernetesバックエンドストレージボリュームの動的提供
本稿では,nfs−client−provisionerという応用を用いて,NFSサーバを用いてKubernetesを永続記憶のバックエンドとして利用し,PVを動的に提供することを紹介する.前提条件は、既にインストールされているNFSサーバがあり、NFSサーバとKubernetesのSlaveノードがネットワーク接続できることです.nfs-clientドライバをdeploymentとしてK 8 Sクラスタに配備し、ストレージサービスを外部に提供します.
nfs-client-provisionerはKubernetesの簡易NFSの外部provisionerであり、それ自体はNFSを提供せず、既存のNFSサーバがストレージを提供する必要がある.
三、配置サービス
1、権限の構成
現在のKubernetesクラスタの大部分はRBACの権限制御に基づいているため、一定の権限を作成するServiceAccountは、後で作成する「NFS Provisioner」にバインドされ、一定の権限を付与します.
#   rbac  
kubectl delete -f nfs-rbac.yaml -n kube-system

#   yaml
cat >nfs-rbac.yaml<

2、nfs-client-provisionerの配置
まず倉庫をクローンしてyamlファイルを取得する
git clone https://github.com/kubernetes-incubator/external-storage.git
cp -R external-storage/nfs-client/deploy/ /root/
cd deploy

3、NFS Provisionerの配置
修正yamlファイル、ここで変更したパラメータには、NFSサーバが存在するIPアドレス(10.198.155)と、NFSサーバが共有するパス(/data/nfs/)が含まれています.両方とも、実際のNFSサーバと共有ディレクトリに変更する必要があります.さらにnfs-client-provisionerミラーを変更して七牛雲から引き取ります.
NFS Provisionerデプロイメントファイルを設定し、ここでは「kube-system」Namespaceにデプロイメントします.
#   NFS Provisioner  
kubectl delete -f nfs-provisioner-deploy.yaml -n kube-system

export NFS_ADDRESS='10.198.1.155'
export NFS_DIR='/data/nfs'

#   deployment.yaml
cat >nfs-provisioner-deploy.yaml<

4、StorageClassの作成
storage classの定義は、provisionerプロパティがドライバによって入力された環境変数PROVISIONER_に等しいことに注意してください.NAMEの値.そうでなければ、ドライバはstorage classをバインドする方法を知らない.ここでは修正せずに、またはprovisionerの名前を変更することができます.上のdeploymentのPROVISIONER_とNAMEの名前が一致する.
#   storageclass  
kubectl delete -f nfs-storage.yaml

#   yaml
cat >nfs-storage.yaml<

四、PVCの作成
01、新しいnamespaceを作成し、pvcリソースを作成する
#       
kubectl delete ns kube-public

#       
kubectl create ns kube-public

#   pvc
kubectl delete -f test-claim.yaml -n kube-public

#   yaml
cat >test-claim.yaml<

五、テストPodの作成
#     
kubectl delete -f test-pod.yaml -n kube-public

#   yaml
cat > test-pod.yaml <

01.NFSサーバーに入って、対応するファイルを作成するかどうかを検証する
NFSサーバーのNFSマウントディレクトリに入り、Podで作成したファイルが存在するかどうかを確認します.
$ cd /data/nfs/
$ ls
archived-kube-public-test-claim-pvc-2dd4740d-f2d1-4e88-a0fc-383c00e37255  kube-public-test-claim-pvc-ad304939-e75d-414f-81b5-7586ef17db6c
archived-kube-public-test-claim-pvc-593f241f-a75f-459a-af18-a672e5090921  kube-system-test1-claim-pvc-f84dc09c-b41e-4e67-a239-b14f8d342efc
archived-kube-public-test-claim-pvc-b08b209d-c448-4ce4-ab5c-1bf37cc568e6  pv001
default-test-claim-pvc-4f18ed06-27cd-465b-ac87-b2e0e9565428               pv002

#          SUCCESS    ,       NFS Provisioner            “namespace  -pvc  -pv  ”,pv         ,          PVC,   Kubernetes             ,     PVC               ,              PVC,             ,   PV           ,         PV   ,     PVC    。

参照ドキュメント:
https://blog.csdn.net/qq_25611295/article/details/86065053k 8 s pvとpvc持続化ストレージ(静的および動的)
https://blog.csdn.net/networken/article/details/86697018kubernetesがNFS永続ストレージを導入
https://www.jianshu.com/p/5e565a8049fckubernetesはNFS永続ストレージ(静的および動的)を導入する
作者:Lancger
github:https://dwz.cn/qcjgGS7F