この記事はWeChatの公開アカウント「The Calm Programmer」から転載したものです。この記事を転載する場合はAI Originの公開アカウントまでご連絡ください。 一言でまとめると、PV と PVC は、K8S がストレージ管理に使用するリソース オブジェクトです。ストレージ リソースの使用を制御可能になり、システムの安定性と信頼性が確保されます。 StorageClass は、手動の作業負荷を軽減するために PV を自動的に作成するコンポーネントです。すべてのポッドがストレージを使用するための原則は 1 つだけです。まず計画し、次に適用し、次に使用する。 1. 理論1. PVコンセプトPV は、K8S ストレージ リソースの抽象化です。 PV は通常、コンテナ アプリケーションの運用および保守担当者によって作成および構成されます。 PV が利用可能になる前は、サーバー ディスクのパーティションの概念はありませんでした。 PV が利用可能になった後は、PV を介してサーバー ディスクをパーティション分割することと同等になりました。 2. PVCコンセプトPVC は、Pod によるストレージ リソースの申請であり、主にストレージ スペースの申請、アクセス モードなどが含まれます。PV を作成した後、Pod は PVC を介して PV からディスク スペースを申請できます。これは、オペレーティング システムの D ドライブから 1G の使用領域を要求するアプリケーションに似ています。 PVC が正常に作成されると、Pod は PVC のストレージ リソースをストレージ ボリュームの形式で使用できるようになります。 PVC を使用する場合、Pod は PVC と同じ名前空間に存在する必要があります。 3. PVとPVCの関係PV はディスクのパーティションに相当し、PVC はパーティション内で APP (アプリケーション) が適用するスペースの量に相当します。たとえば、WPS プログラムをインストールする場合、通常はインストールに必要なストレージ容量が通知され、特定のディスクにインストールすることを選択するように求められます。将来パーティション ディスクがいっぱいになった場合でも、他のパーティション ディスクの使用には影響しません。 PV が PVC にバインドされると、Pod は PVC を使用できるようになります。システム内に PVC の要件を満たす PV がない場合、適切な PV がシステム内に生成されるまで PVC は保留状態のままになります。 4. StorageClass の概念K8S には、静的モードと動的モードの 2 つのストレージ リソース プロビジョニング モードがあります。リソース プロビジョニングの最終的な目標は、適切な PV を PVC にバインドすることです。
StorageClass は、PVC のニーズに基づいて適切な PV リソースを動的に作成し、オンデマンドのストレージ ボリュームの作成を実現する動的モードです。 一般的に、商用アプリケーションでは多数の Pod が使用されます。各 Pod がストレージ リソースを使用する必要がある場合、PV を随時手動で作成する必要があり、これも面倒です。解決策は、動的モードを使用することです。Pod が PVC を介してストレージ リソースを申請すると、対応するサイズの PV が StorageClass を介して動的に作成され、PVC にバインドされます。したがって、PV と PVC の間には基本的に 1 対 1 の関係があります。 5. プロビジョナーのコンセプトPVC を作成するときは、StorageClass を指定する必要があります。 PVC が対応する StorageClass を選択すると、それに関連付けられた Provisioner コンポーネントが PV リソースを動的に作成します。 では Provisioner とは何でしょうか?実際、これはオペレーティング システムのディスク ドライバーに似た単なるストレージ ドライバーです。 StorageClass リソース オブジェクトの定義には、主に、名前、プロビジョナー、ストレージ関連のパラメータ構成、リサイクル ポリシーが含まれます。 StorageClass は一度作成されると変更することはできず、削除して再作成することしかできません。 PV と PVC のライフ サイクルには、リソースのプロビジョニング、リソースのバインド、リソースの使用、リソースの再利用の 4 つの段階が含まれます。まず、古いものにはリソース供給があります。簡単に言えば、ストレージ ドライバーが存在し、それが作成、バインド、使用、リサイクルされる必要があります。 6. PV/PVC使用前後の比較6.1.説明による比較PV と PVC が使用される前は、各 Pod はストレージ リソース (NFS など) にデータを自由に書き込むことができました。どのポッドでもディスク上で移動できます。長期的には、ディスク管理がますます混乱し、データ使用量が制限を超え、ディスクが爆発し、最終的にはディスク上のすべてのアプリケーションが停止することになります。 この問題を解決するために、PV と PVC の概念が導入され、Pod によって書き込まれるストレージ データのサイズが制限され、システムの可用性と安定性がより確実に確保されます。 PVC と PV では、すべてのポッドは、最初に計画し、後で適用し、後で使用するという原則に基づいてストレージ リソースを使用します。 すると、「StorageClass は自動的に PV を作成しますが、これは元の無秩序で制御不能なものと同じ効果があり、ストレージ リソースを自由に占有できます。」という疑問が湧くはずです。 実際、StorageClass を使用すると、PV の作成プロセスのみが自動化されますが、ストレージ制御可能なプロセスは実行されます。各ポッドが使用するストレージ容量は固定されています。 Pod がストレージ容量を超えることはなく、他のアプリケーションにも影響しません。障害が発生した場合、その原因は特定の Pod 自体のみになります。 6.2.写真で比較PV と PVC が使用される前の状況を次の 2 つの図に示します。 PVとPVCを装着した後の状況は以下のようになります。 2. 練習PV、PVC、StorageClass を実践する前に、読者は NFS サーバーを自分でインストールする必要があります。この記事では、YAML オーケストレーションを通じて NFS サーバー上に PV を自動的に作成する方法を説明します。 1. PodはPVとPVCを使用してストレージボリュームをマウントします1.1、PV、PVC、ポッドマウントPVCのオーケストレーションこの記事では、Pod のディレクトリが NFS のディレクトリにマウントされることを示します。 nginx イメージを使用して、PV が配置されている NFS サーバーに HTML ファイルが書き込まれます。最後に、PV/PVC を使用して正常にマウントされていることがわかります。 yaml ファイルは次のとおりです。 次のように kubectl コマンドを実行して実際の結果を表示します。 次に、ポッドのステータスを確認し、次のようにポッドがまだ作成中であることを確認します。 そこで、ポッドのステータス kubectl describe pod webapp -n dev1 をチェックしたところ、次の異常な情報が見つかりました。 これは、フォルダーが NFS 上に作成されていないためです。 NFS 上にこのフォルダーを作成した後、Pod を再起動すると、すべて正常になります。次に、ポッドが配置されているノードを見つけます。 http://nodeip:port にアクセスすると、成功したインターフェースが表示されます。 現時点では、nginx 配下に HTML ページが存在しないため、内容を見ることができません。次に、NFS サーバーに対応するディレクトリ /data/nfstest/share/pv1 に移動し、index.html ページを追加して、ページを更新します。インターフェースは次のとおりです。 ポッドに入ってマウントが成功したかどうかを確認することもできます。 kubectl exec -it webapp -n dev1 -- /bin/sh コマンドを実行して Pod に入ると、次のページが表示されます。 2. PodはStorageClassを使用してストレージボリュームを自動的にマウントします2.1.プロビジョナーをインストールするこの記事では、比較的簡単な helm 経由で nfs-subdir-external-provisioner をインストールすることを選択します。インストールドキュメントとインストールプロセスは次のとおりです。
https://kubernetes.io/zh-cn/docs/concepts/storage/storage-classes/#nfs https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner
以下の 3 つの手順に従って、nfs-subdir-external-provisioner のインストールを完了します。
注目すべきパラメータをいくつか示します。 image.repository: イメージのアドレスが変更されました。デフォルトで使用される外部イメージが利用できない場合があります。 nfs.server: NFS サーバーのアドレス nfs.path: ストレージディレクトリ
helm インストールの結果を表示するには、コマンド helm list -A を実行します。 対応するポッドが作成されているかどうかを確認します。イメージ アドレスが変更されていない場合、次の図に示すように、プルは常に失敗します。 イメージ アドレスを変更すると、以下に示すように、Pod が正常に起動します。 2.2. StorageClassの使用この記事では、Pod が StorageClass を使用して PV を自動的に作成し、対応するストレージ ディレクトリにファイルを作成し、データを書き込む方法を説明します。 yaml ファイルは次のとおりです。 kubectl コマンドを実行すると、次の結果が表示されます。 写真 写真 予想通り、storageClass を通じて PV が自動的に作成され、NFS に対応したストレージ ディレクトリにファイルが作成され、データが書き込まれます。 この時点で、練習プロセスは完了です。 結論この記事では主にPV、PVC、StorageClassの理論と実践について説明します。 一言でまとめると、PV と PVC は、K8S がストレージ管理に使用するリソース オブジェクトです。ストレージ リソースの使用を制御可能になり、システムの安定性と信頼性が確保されます。 StorageClass は、手動の作業負荷を軽減するために PV を自動的に作成するコンポーネントです。すべてのポッドがストレージを使用するための原則は 1 つだけです。まず計画し、次に適用し、次に使用する。 参考資料: 「Kubernetes 決定版ガイド」 |
<<: 3層アーキテクチャでVLANまたはVPCを使用してアプリケーションを保護する方法
>>: エッジコンピューティングはどのようにしてモノのインターネットを実現するのでしょうか?
2020年、疫病の影響により、ライブブロードキャスト経済やショートビデオなどが爆発的な成長を遂げ、そ...
[[405722]]みなさんこんにちは。私はウー兄弟です。これは、Kafka に関する「Master...
RWW ウェブマスターの Jared Smith が Google の新しいナビゲーション バーのス...
「ブランドは1日で築かれるものではない。」 「私の理想のウェブサイトコンテンツスタイル(独自のサービ...
ウェブサイトの最適化を行ったすべての SEO 担当者にとって、新しいサイトか古いサイトかに関係なく、...
1. 中国電信と網易は本日、インスタントメッセージングツール「Yixin」をリリースした。テンセント...
ハリウッドのヌード写真スキャンダルに関与した有名人数名の代理人を務める弁護士マーティ・シンガー氏は、...
この記事では、2019 年の中国のモバイル インターネットの概要を紹介します。庚子の年は特別な年であ...
buyvm は、cpanel パネル、純粋な SSD ハード ドライブ (RAID 付き)、無制限の...
Crissic が特別セールを開始しました。今回の主力商品は KVM ですが、今回は特別限定版 KV...
ハイブリッド クラウド インフラストラクチャを活用することを決定した企業には、選択できるオプションが...
毎日ウェブサイトに数記事を更新することは、ウェブマスターがしなければならないことですが、更新した記事...
Flarum は、エレガントで軽量 (100K 以下) な PHP フォーラム プログラムとして、私...
企業がインフラストラクチャをパブリック クラウドに移行するにつれて、クラウド コンピューティングのス...
一昨日、検索連想語の共有に関する記事が界隈で大きな話題となり、全国で白熱した議論が巻き起こりました。...