このトピックでは、組み込みのKubernetesボリュームを使用して、KubernetesクラスターにApsara File Storage NAS (NAS) ファイルシステムをマウントする方法について説明します。
前提条件
ネットワークファイルシステム (NFS) ファイルシステムが作成されます。 詳細については、「ファイルシステムの作成」をご参照ください。
NASファイルシステムのデータを暗号化するには、NASファイルシステムの作成時に暗号化タイプを設定する必要があります。
マウントターゲットが作成されます。 詳細については、「マウントターゲットの管理」をご参照ください。
自己管理型Kubernetesクラスターが作成され、クラスターバージョンが1.16以降になります。
ポート111とポート2049は、ポッドスケジューリングノードのセキュリティグループルールで指定されています。 詳細については、「セキュリティグループルールの追加」をご参照ください。
自己管理型Kubernetesクラスターがデータセンターにデプロイされている場合、データセンターはAlibaba Cloudに接続されている必要があります。 Express connect、Smart Access Gateway (SAG) 、またはVPN Gatewayを使用して、データセンターをAlibaba Cloudに接続できます。 詳細については、以下のトピックをご参照ください。
制限事項
マウントシナリオの制限、ファイルシステムの数、およびファイル共有プロトコルは、NASファイルシステムのストレージクラスによって異なります。 詳細については、「制限事項」をご参照ください。
NASファイルシステムをアンマウントする前に、ファイルシステムのマウント対象を削除しないでください。 そうしないと、オペレーティングシステムのハングが発生する可能性があります。
手順
自己管理型Kubernetesクラスターにログインします。
Kubernetesクラスターのノードを設定します。
説明Kubernetesクラスターのすべてのノードを設定する必要があります。 Kubernetesクラスターにノードを追加する前に、次の手順を実行する必要があります。
NFS クライアントをインストールします。 詳細については、「手順1: NFSクライアントのインストール」をご参照ください。
次のコマンドを実行して、/etc/nfsmount.confファイルを設定します。
cat <<EOF >> /etc/nfsmount.conf [ Server "file-system-id.region.nas.aliyuncs.com" ] vers=3 Proto=tcp Lock=False resvport=False rsize=1048576 wsize=1048576 hard=True timeo=600 retrans=2 EOF
上記のコマンドでは、
file-system-id.region.nas.aliyuncs.com
はNASファイルシステムのマウントターゲットのドメイン名です。 ドメイン名を実際の値に置き換えます。 マウントターゲットのドメイン名を取得するには、次の手順を実行します。NASコンソールにログインします。 [ファイルシステムリスト] ページで、ファイルシステムのIDをクリックします。 詳細ページで、マウント使用 タブをクリックします。 次に、[マウントターゲット] 列のアイコンの上にポインターを移動します。説明NFSv3プロトコルを使用してNASファイルシステムをマウントすることを推奨します。
上記のコマンドのすべてのパラメーターが必要です。
file-system-id.region.nas.aliyuncs.com
およびvers
パラメーター以外の他のパラメーターを変更する必要はありません。 versパラメーターは、プロトコルバージョンを指定します。
NASファイルシステムがKubernetesクラスターに接続されていることを確認します。
次のコマンドを実行して、NFSファイルシステムをマウントします。
mount -t nfs file-system-id.region.nas.aliyuncs.com:/ /mnt
上記のコマンドでは、
file-system-id.region.nas.aliyuncs.com
はNASファイルシステムのマウントターゲットのドメイン名です。 ドメイン名を実際の値に置き換えます。マウントが失敗した場合は、マウントターゲットのドメイン名を
ping
し、ポート2049が接続されているかどうかを確認します。 マウントの失敗がネットワークの問題ではない場合は、スクリプトツールを使用して問題のトラブルシューティングを行います。 詳細については、「自動チェックスクリプトを実行して、LinuxでのNFSファイルシステムのマウント失敗のトラブルシューティング」をご参照ください。次のコマンドを実行して、マウント情報を表示します。
mount | grep nfs | grep mnt
パラメータがvers=3、hard、noresvport、およびnolockを含む場合、ネットワークは接続されています。
ネットワークが接続されていることを確認したら、
umount /mnt
コマンドを実行して、マウントされたNFSファイルシステムを削除します。
ポッドを起動して、組み込みのKubernetesボリュームを使用してNFSファイルシステムをマウントします。
この例では、nginxという名前のポッドを起動してNFSファイルシステムをマウントします。
nginx.yaml
ファイルを設定します。cat << EOF > ./nginx.yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: selector: matchLabels: app: nginx replicas: 1 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80 volumeMounts: - mountPath: /data name: test-nfs volumes: - name: test-nfs nfs: server: file-system-id.region.nas.aliyuncs.com # The domain name of the mount target for the NAS file system. Replace the domain name with the actual value. Example: 7bexxxxxx-xxxx.ap-southeast-1.nas.aliyuncs.com. path: / # The directory path of the NAS file system. The directory must be an existing directory or the root directory. The root directory of a General-purpose NAS file system is "/". The root directory of an Extreme NAS file system is "/share". EOF
nginxポッドでNFSファイルシステムを使用できるようにします。
kubectl apply -f ./nginx.yaml
ポッドが期待どおりに起動され、NFSファイルシステムがマウントされているかどうかを確認します。
次のコマンドを実行して、ポッドのステータスを確認します。
コマンド
kubectl get pods | grep nginx
Output
ポッドが
[実行中]
状態の場合、ポッドは期待どおりに起動されます。
次のコマンドを実行して、マウント結果を表示します。
コマンド
kubectl exec nginx-deployment-9b9b684f5-mgrkh -- df -h /data
Output
次の例のような出力が表示された場合、マウントは成功です。