AKS Edge Essentials 上の外部 NFS ストレージ
永続ストレージ ソリューションを使用すると、アプリケーションを実行しているポッドの外部にアプリケーション データを格納し、アプリケーションのポッドで障害が発生した場合でも、アプリケーション データを維持できます。 ローカル ストレージには ローカル パス プロビジョン機能 を使用できます。ただし、ストレージはノードの可用性によって異なります。 また、外部ストレージ プロバイダーを使用して、ストレージの可用性をノードのライフサイクルから切り離すこともできます。
この記事では、NFS プロバイダーを設定し、NFS に接続された PV を含むサンプル コンテナーを AKS Edge Essentials クラスターにデプロイする方法について説明します。
NFS プラグインの詳細については、 nfs-subdir-external-provisioner を参照してください。
手順 1: NFS サーバーの接続情報を取得する
NFS サーバーに AKS Edge Essentials クラスターからアクセスできることを確認し、それに接続するために必要な情報を取得します。 情報には、NFS サーバーのホスト名とエクスポートされた共有パスが含まれている必要があります。 NFS サーバーに認証メカニズムがある場合は、その情報も必ず取得してください。
手順 2: リソースをダウンロードする
リソース テンプレートを取得します。 プロビジョニングツールを設定するには、一連の YAML テンプレート ファイルをダウンロードし、NFS サーバーの接続情報を追加するように編集してから、各デプロイ ファイルを適用します。
注意
使用される NFS サンプルは 、nfs-subdir-external-provisioner サンプル コードに基づいており、AKS Edge Essentials 仮想マシン用に調整されています。
AKS-Edge Essentials GitHub リポジトリから最新のソース コード .zip をダウンロードします。
tgz を目的のフォルダーに抽出します。
管理者として PowerShell セッションを開きます。
NFS サンプル ディレクトリ AKS-Edge - サンプル -> ストレージ ->> NFS に変更します。
コマンドを
dir
使用して、NFS フォルダーに次のファイルがあることをチェックします。Directory: C:\Users\AKS-Edge\samples\storage\nfs Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 1/25/2023 10:43 AM 345 class.yaml -a---- 1/25/2023 1:14 PM 979 deployment.yaml -a---- 1/25/2023 1:16 PM 371 pod.yaml -a---- 1/25/2023 1:17 PM 218 pvc.yaml -a---- 1/9/2023 10:19 AM 1900 rbac.yaml
手順 3: 承認を設定する
AKS Edge Essentials クラスターでは既定の RBAC が有効になっているため、他の RBAC を構成する必要はありません。 ただし、 既定以外の名前空間/プロジェクトにいる場合は、テンプレートをデプロイする前に rbac.yaml を編集します。 管理者特権の PowerShell ウィンドウで、次のコマンドレットを実行します。
kubectl create -f .\rbac.yaml
手順 4: NFS サブディレクトリの外部プロビジョン機能を構成する
次に、NFS プロビジョンャーのデプロイ ファイルを編集して、NFS サーバーの接続情報を追加します。 deploy/deployment.yaml を編集し、次の値を置き換えます。
の下のサーバー ホスト名
VALUE
をname: NFS_SERVER
置き換えます。の>
nfs
下のサーバー ホスト名server
をvolumes
置き換えます。の下のサーバー ホスト名
VALUE
をname: NFS_PATH
置き換えます。の>
nfs
下のサーバー ホスト名path
をvolumes
置き換えます。管理者として PowerShell ウィンドウを開きます。
ノード内の永続ボリュームに使用するフォルダーを作成します。
Invoke-AksEdgeNodeCommand -NodeType Linux -command "sudo mkdir /var/persistentVolumes"
ヒント
現在のガイドでは、 /var/persistenVolumes フォルダーを 使用します。 フォルダーを変更する場合は、別のマウント フォルダーを作成し、適切なアクセス許可を設定します。 また、 deployment.yaml ファイルを新しいディレクトリで更新します。
必要な YAML ファイルをデプロイします。
kubectl create -f .\class.yaml kubectl create -f .\deployment.yaml kubectl create -f .\pvc.yaml kubectl create -f .\pod.yaml
手順 5: 作成されたリソースチェックする
すべてが実行され、正しくアタッチされている場合は、次のような内容が表示されます。 まず、 を使用して kubectl get pv
PV が作成されていることがわかります。
PS C:\WINDOWS\system32> kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pvc-72dd0e5a-1064-424d-b534-d414b6693aaa 1Mi RWX Delete Bound default/test-claim nfs-client 20s
次に、PVC は を使用して kubectl get pvc
バインドされています。
PS C:\WINDOWS\system32> kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
nfs-pvc Bound pvc-72dd0e5a-1064-424d-b534-d414b6693aaa 1Mi RWX nfs-client 25s
最後に、 を使用kubectl get pods
してボリューム テストと nfs-client-provisioner が表示されます。
PS C:\WINDOWS\system32> kubectl get pods
NAME READY STATUS RESTARTS AGE
nfs-client-provisioner-696845f854-wz5cp 1/1 Running 0 2m
volume-test 1/1 Running 0 2m
手順 6: 永続ストレージをテストする
最後のテストでは、NFS に接続されたドライブでストレージが永続的であることを確認します。
まず、ポッドに何かを書き込む必要があります。 管理者特権の PowerShell ウィンドウで、次のコマンドレットを実行します。
kubectl exec volume-test -- sh -c "echo Hello AKS Edge! > /data/Test-NFS.txt"
次に、NFS 共有ドライブに移動し、Test-NFS.txtという名前のファイルをチェックします。 ファイルを開くと、"Hello AKS Edge!" という行が表示されます。
最後に、次のコマンドレットを使用してポッドを削除して、ポッドの障害、または削除中のデプロイをシミュレートします。
kubectl delete -f .\pod.yaml
ポッドが削除されたことを確認し、 ボリューム テスト ポッドをもう一度デプロイします。
kubectl apply -f .\pod.yaml
最後に、以前に書き込まれたファイルの内容を読み取ります。 すべてが正常に実行された場合は、"Hello AKS Edge!" というメッセージが表示されます。
kubectl exec volume-test -- sh -c "cat /data/Test-NFS.txt"
手順 7: デプロイをクリーンする
NFS ストレージの使用が完了したら、PowerShell に移動し、次のスクリプトを実行してワークスペースをクリーンします。
kubectl delete -f .\pod.yaml
kubectl delete -f .\pvc.yaml
kubectl delete -f .\deployment.yaml
kubectl delete -f .\class.yaml