Kubernetes でコンテナを操作する場合、関係するリソースが何であるか、そしてそれらがどのように必要とされるかを把握することが重要です。一部のプロセスでは、他のプロセスよりも多くの CPU またはメモリが必要になります。いくつかは重要なので、飢えさせてはいけません。 これを踏まえて、コンテナとポッドを正しく構成し、両方のメリットを最大限に活用する必要があります。 この記事では、それを見ていきます。
Kubernetes の制限とリクエストの概要Kubernetes を使用する場合、制限とリクエストは、主に CPU とメモリの構成を含む重要な構成です。 Kubernetes では、制限をコンテナが使用するリソースの最大量として定義します。つまり、コンテナは、表示されているメモリまたは CPU の量を超えて消費することはできません。 一方、リクエストは、コンテナ用に予約されたリソースの最小保証量を指します。 画像.png 実践事例2 つの異なるコンテナの CPU とメモリに制限とリクエストを設定する必要がある次のデプロイメントを見てみましょう。 種類:デプロイメント このデプロイメントを 4C16G 構成のノードにデプロイする場合は、次の情報を取得できます。
Kubernetes リクエストKubernetes では、リクエストをコンテナが使用するリソースの最小保証量として定義します。 基本的に、コンテナが消費するリソースの最小量を設定します。 Pod がスケジュールされると、kube-scheduler は Kubernetes リクエストをチェックして、それを特定のノード (Pod 内のすべてのコンテナのうち少なくともこの数を満たすことができるノード) に割り当てます。要求された量が利用可能なリソースよりも大きい場合、ポッドはスケジュールされず、保留状態のままになります。 Pendingステータスの詳細については、「Kubernetes Podの保留中の問題の理解【1】」を参照してください。 この例では、コンテナ定義で、100m コアの CPU と 4Mi のメモリの要求を設定します。 リソース: リクエストは通常、次のシナリオで使用されます。
Kubernetes の制限Kubernetes では、コンテナが使用するリソースの最大量として制限を定義します。 つまり、コンテナは指定された量を超えるメモリまたは CPU を消費することはできません。 リソース: 制限は通常、次のシナリオで使用されます。
CPU特性CPU は圧縮可能なリソースであるため、あらゆる要求を満たすように拡張できます。プロセスが CPU を過剰に要求すると、一部のプロセスが調整されます。 CPU はコア数で測定される計算処理時間を表します。
メモリ特性メモリは圧縮できないリソースであるため、CPU のように拡張することはできません。プロセスが動作するために十分なメモリを取得できない場合、そのプロセスは強制終了されます。 Kubernetes では、メモリの単位はバイトです。
ベストプラクティスKubernetes では、リソースの使用を制御するために制限を使用することはほとんどありません。これは、リソース不足を回避したい場合 (すべての重要なプロセスにリソースが割り当てられるようにする場合)、まず最初にリクエストを使用する必要があるためです。 制限を設定すると、特別な場合にプロセスが追加のリソースを取得できなくなるため、メモリ側で OOM による強制終了が発生し、CPU 側でスロットリングが発生します (プロセスは、CPU が再び使用できるようになるまで待機する必要があります)。 詳細については、OOMとスロットリングに関する記事【2】を参照してください。 ポッドのすべてのコンテナでリクエスト値を制限と同じに設定すると、ポッドは保証されたサービス品質を受け取ります。 また、リクエストよりも多くのリソースを使用するポッドは削除される可能性が高くなるため、リクエストを非常に低く設定すると、メリットよりもデメリットの方が大きくなる可能性があることに注意してください。これはPodの排除とサービス品質【3】で確認できます。 名前空間 ResourceQuata名前空間のおかげで、Kubernetes リソースをテナントとも呼ばれるさまざまなグループに分離できます。 ResourceQuota を使用すると、名前空間全体にメモリまたは CPU の制限を設定して、その中のエンティティがその量を超えて消費できないようにすることができます。 APIバージョン: v1
次に、それを名前空間に適用します。 kubectl apply -fリソースクォータ.yaml --namespace=mynamespace 次のメソッドを使用して、名前空間の現在の ResourceQuota を一覧表示できます。 kubectl get resourcequota - n mynamespace 名前空間内の特定のリソースに対して ResourceQuota を設定する場合は、その名前空間内の各 Pod に対して対応する制限またはリクエストを指定する必要があることに注意してください。そうでない場合、Kubernetes は「クォータ失敗」エラーを返します。 サーバーからのエラー(禁止) : 「mypod.yaml」の作成中にエラーが発生しました:ポッド「mypod」は禁止されています:クォータに失敗しました: mem - cpu - demo : limits .cpu、limits .memory、requests .cpu 、 requests .memoryを指定する必要があります コンテナ制限またはリクエストが現在の ResourceQuota を超える新しい Pod を追加しようとすると、Kubernetes は「クォータ超過」エラーを返します。 サーバーからのエラー(禁止) : 「mypod.yaml」の作成中にエラーが発生しました:ポッド「mypod」は禁止されています:クォータを超えました: mem - cpu - demo 、要求されました: limits .memory = 2 Gi 、 requests .memory = 2 Gi 、使用されました: limits .memory = 1 Gi 、 requests .memory = 1 Gi 、制限されています: limits .memory = 2 Gi 、 requests .memory = 1Gi 名前空間の制限範囲ResourceQuotas は、名前空間に割り当てることができるリソースの合計量を制限したい場合に便利です。しかし、内部の要素にデフォルト値を提供したい場合はどうなるでしょうか? LimitRanges は、名前空間内の各エンティティのリソース設定を制限する Kubernetes ポリシーです。 APIバージョン: v1
後で、リクエストや制限を設定せずに新しい Pod を作成すると、LimitRange はすべてのコンテナに対してそれらの値を自動的に設定します。 制限: ここで、1200M の制限を持つ新しい Pod を追加するとします。次のエラーが発生します。 サーバーからのエラー(禁止) : 「pods/mypod.yaml」の作成中にエラーが発生しました:ポッド「mypod」は禁止されています:コンテナあたりの最大 CPU 使用量は1ですが、制限は1200 mです デフォルトでは、LimitRanges が設定されていない場合でも、Pod 内のすべてのコンテナは実質的に 100m CPU を要求することに注意してください。 要約するエネルギー消費とコストを最適に抑えるには、Kubernetes クラスターに最適な制限を選択することが重要です。 ポッドに割り当てているリソースが多すぎると、コストが急増する可能性があります。 スケーリングが小さすぎたり、CPU やメモリの割り当てが少なすぎたりすると、アプリケーションが適切に実行されなかったり、Pod が削除されたりする可能性があります。 前述したように、Kubernetes の制限は、メリットよりもデメリットをもたらす可能性があるため、非常に特殊な状況を除いて使用しないでください。メモリが不足している場合はコンテナが強制終了される可能性があり、CPU が不足している場合はコンテナが調整される可能性があります。 リクエストの場合、プロセスがリソースの保証された共有を確実に取得する必要がある場合に使用します。 書類【1】https://sysdig.com/blog/kubernetes-pod-pending-problems/ 元記事: https://sysdig.com/blog/kubernetes-limits-requests/ 著者: JAVIER MARTÍNEZ |
創祥CIOが主催する「危機をチャンスに変える、デジタルインテリジェントな未来」をテーマにした第3回デ...
Hostmybytes は、今月中旬に OpenVZ ベースの仮想 VPS を超低価格で開始しました...
現在、映画、テレビ、ビデオのウェブサイトは数多く存在します。長年運営されている有名なサイトとしては、...
昨今、キーワードの使い方は多様化していますが、最終的な目標はやはりトラフィックです。人気映画の検索イ...
SEO に携わる私たちは、スパイダーについてよく知っています。この業界の人々は、検索エンジンの動作原...
新浪科技報、北京時間12月4日朝のニュース、ロイター通信は事情に詳しい関係者の話として、ヤフーはメキ...
著者 | 蘇 琦編集者 | 金 宇凡「私の名前はディン・ジェンです。そしてこれは私のポニーのパールで...
また、a5ウェブマスターのウェブサイトでも、フレンドリーリンクに関する注意事項に関する同様の記事をた...
2013年の中国インターネット会議は、拍手がほとんど聞こえないまま閉幕した。2011年の馬化騰、丁磊...
[[226267]]ハHA環境はホットマイグレーション環境に似ている1. データセンターを右クリック...
フォーラムは SEO プロモーションに欠かせないリソースです。従来の運用方法は、純粋なシグネチャ外部...
最新の状況によると、Baidu はウェブサイトの外部リンククエリを公開し、フルネットワークの外部リン...
この初心者向け VPS チュートリアルでは、ワンクリックで LAMP 環境をインストールする方法を紹...
日本サーバー:日本のコンピュータルームのハードウェア条件は非常に良好で、国際輸出帯域幅が大きく、中国...
SEO は最近ますます難しくなってきています。現在、SEO はキーワードのランキングだけではなく、ユ...