リソース制限は、コンテナーがリソースを消費しすぎたり、リソースの枯渇により応答しなくなったりしないようにするため、Kubernetes コンテナー オーケストレーションの重要な部分です。この記事では、Kubernetes コンテナーのリソース制限を設定して、その利点を最大限に活用し、アプリケーションを最大限に活用する方法についてのガイドを提供します。すべてのサービスがスムーズに実行されていることを確認できるように、いくつかの簡単な手順でコンテナー リソースをすばやく簡単に構成および管理する方法を学びます。
Kubernetes でコンテナー リソース制限を設定する
コンテナーのリソース制限は Kubernetes の重要な要素であり、ユーザーはコンテナーが消費できるリソースの数を管理できます。オーバーロードを回避し、アプリケーションのパフォーマンスを保証するために、これは本番環境では特に重要です。コンテナーのリソース制限を設定するためのプロのヒントを次に示します。
コンテナに必要なリソースを決定することから始めます。システムの使用状況を分析し、メモリと CPU の制限を調整する必要があるコンテナーを決定します。リソース制限を設定するときは、基盤となるノードを考慮することも重要です。設定した制限が高すぎたり低すぎたりすると、ノードがクラッシュせずに他のアプリケーションを実行できなくなる可能性があります。次に、使用する制限のタイプ (バースタブルまたは非バースタブル) を決定します。それでは、Kubernetes コンテナーのリソース制限を設定するために必要な手順を見てみましょう。手順に進む前に、いくつかの必要な前提条件があります。
前提条件
手順に進む前に、システムが前提条件のすべてのニーズを満たしていることを確認しましょう。動作する Linux/Unix 環境、Kubernetes クラスター、kubectl コマンドを使用する Kubectl CLI、クラスター通信、開発環境の管理、および minikube またはその他の Kubernetes プレイグラウンドを作成するための Ubuntu 20.04 またはその他の最新バージョンがあることを確認してください。クラスター。これらのツールをまだインストールしていない場合は、次のセクションに進む前にインストールしてください。次に、Kubernetes コンテナーのリソース制限を設定する方法についてのステップバイステップ ガイドに進みます。
Kubernetes リソース制限を設定する方法
Kubernetes コンテナーのリソース制限を設定することは、Kubernetes クラスターを管理および維持する上で重要な部分です。適切なリソース制限を設定することで、他のコンテナーやクラスター全体のパフォーマンスを損なうことなく、各コンテナーが最適に実行されます。これは、CPU、メモリ、一時ストレージなどのリソース要求と制限を設定することで実行できます。 Kubernetes コンテナーのリソース制限を適切に設定する方法は次のとおりです。
ステップ 1: Minikube を起動する
アプリケーションまたはコマンドを実行できるように、Minikube クラスターはアクティブな状態である必要があります。正常に稼働していることを確認するには、次のコマンドを使用します。
> ミニキューブを始める
ステップ 2: メトリクス サーバーを有効にする
このステップでは、メトリクス サーバーを有効にするコマンドを共有します。コマンドは次のとおりです。
> minikube addons 有効 メトリック サーバー
ステップ 3: メトリクス サーバーがアクティブかどうかを確認する
次のコマンドを入力して、metrics-server がアクティブかどうかを確認します。
> kubectl は apiservices を取得します
前の画像に見られるように、リソース メトリクス API にアクセスできる場合に備えて、metrics.k8s.io への参照が含まれています。
ステップ 4: 名前空間を作成する
リソースを保持するために、クラスターの残りの部分とは別の、この演習用の名前空間を作成します。ここで、名前空間を作成する方法を示します。実行するコマンドは次のとおりです。
> kubectl create namespace ABC
ステップ 5: 構成ファイルを作成する
コンテナーでポッドを構築するために使用する YAML 構成ファイルは、このステップで作成されます。これを達成するために使用されるコマンドは次のとおりです。
> ナノ reqlimit.yamlここでは、CPU 制限とともに CPU 要求を含める必要があります。 resources:limits を含めて、CPU 制限を定義します。この場合、単一のコンテナーを持つ Pod が作成されます。コンテナーには、0.5 CPU リクエスト制限と 1 CPU 最大値があります。 Pod の設定ファイルはこちらから入手できます。ご覧のとおり、構成ファイルの args セクションには、コンテナーが起動時に使用する引数が含まれています。コンテナーは、-cpus “2” パラメーターを介して 2 つの CPU を使用しようとするように指示されます。
デプロイやポッドなどの Kubernetes でリソースを作成するときは、必要なリソースの最小数 (リクエスト) と、ポッドまたはデプロイごとに許可されるリソースの最大数 (制限) を指定することが重要です。これにより、1 つの Pod がリソースを消費しすぎて、他のアクティブな Pod のパフォーマンスが低下したり、クラスターで使用可能なリソースが不足したためにクラッシュしたりするのを防ぐことができます。
ステップ 6: ポッドを作成する
ここで、次のコマンドを使用してポッドを作成する方法を示します。
> kubectl 作成 -f reqlimit.yaml
前の出力から、「cpu-demo」という名前のポッドが作成されていることがわかります。
ステップ 7: ポッドを確認する
このステップでは、次のコマンドを使用して、作成されたポッドがアクティブかどうかを確認します。
> kubectl get pod cpu-demo --名前空間 =abc
ステップ 8: ポッドの詳細を表示する
ここで、Pod に関する詳細情報を表示する場合は、次のコマンドを実行する必要があります。
> kubectl get pod cpu-demo - 出力 =yaml --名前空間 =abc
ステップ 9: Pod を削除する
ここでは、ポッドを削除してリソースをクリーンアップする方法を示します。この目的で使用されるコマンドは次のとおりです。
> kubectl delete pod cpu-demo --名前空間 =abc
ステップ 10: 構成ファイルを作成する
このステップでは、構成ファイルを作成します。このファイルは、ノードにとって非常に大きな CPU 要求を指定します。
> ナノ reqlimit2単一のコンテナーを含む構成ファイルは、ここにあります。コンテナーは 100 個の CPU を要求しますが、これはクラスターが合理的に提供できるどのノードよりも多いです。
ステップ11:Cre a テ・ザ・ポッド
このステップでは、次のコマンドでポッドを作成します。
> kubectl 作成 -f reqlimit2.yaml
ステップ 12: ポッドのステータスを表示する
今、あなたはstを見ることができます a ここに添付されているコマンドを使用してポッドの tus を実行します。
出力は、ポッドのステータスが Pending であることを示しています。
ステップ 13: ポッド情報を確認する
ここで、指定されたコマンドを使用して、イベントを含む Pod に関する詳細情報を表示します。
イベント セクションに移動し、コンテナがスケジュールされているかどうかを確認します。
スケジュールできず、その理由が CPU リソースの不足である場合は、ノードを削除できます。ノードを削除する方法については、次の手順で説明します。
ステップ 14: ノードを削除する
次のコマンドでノードを削除できます。
> kubectl delete pod cpu-demo- 2 --名前空間 =abc
コンテナーのリソース制限がパフォーマンスに与える影響は?
Kubernetes コンテナー テクノロジの人気が高まるにつれて、リソースの制限がパフォーマンスにどのように影響するかを理解することが重要です。 Kubernetes コンテナー内でリソース制限を設定すると、アプリケーションが最適なレベルで実行され、ホスト サーバーから多くのリソースを消費しないようにすることができます。リソースを制限することで、無駄な冗長プロセスを回避し、使用率によるシステム クラッシュを防ぎ、コンテナーのパフォーマンスを最適化できます。
これらのリソース制限を Kubernetes コンテナーに設定するには、cgroups (コントロール グループ) と呼ばれるツールを利用する必要があります。 cgroup を使用すると、管理者は個々のコンテナーの CPU サイクルやメモリ使用量などのリソースを制限できます。最大ファイル サイズやコンテナーごとのネットワーク帯域幅使用量など、他のパラメーターを設定することもできます。
結論
Kubernetes コンテナーのリソース制限を設定することは、クラウド コンピューティング環境を管理する上で重要な部分です。適切な構成を使用すると、各コンテナーが必要なリソースにアクセスできることを保証できますが、他のコンテナーやシステムに影響を与えるほどではありません。これにより、コンピューティング リソースをより効率的かつ費用対効果の高い方法で使用できます。さらに、コンテナが消費できるメモリや CPU の量を制限することで、暴走したプロセスや使用量の予期しないスパイクによる停止の発生を防ぐことができます。