メモリ要求と指定されたメモリの制限
リクエストフィールド:リソースコンテナ内のリソースのリストを使用して、コンテナのメモリ要求を指定します。制限:、リソースの使用をメモリ制限を指定します。
メモリ要求limit.yaml
1 apiVersion:V1の 2 種類:ポッド 3 メタデータ: 4 名:メモリ- デモ 5 名前空間:MEM- 例 6 スペック: 7つの コンテナ: 8 -名:メモリdemo- CTR 9 画像:polinux / 応力 10の リソース: 11個 の制限: 12 メモリ:" 200Mi " 13の 要求: 14 メモリ:" 100Mi " 15 コマンド:[ " ストレス" ] 16個の 引数:[ " --vm " " 1 " " --vmバイト" " 150M " " --vmハング" " 1 " ]
コンテナの起動時にパラメータを提供するために、設定ファイルの引数セクション。「-Vmバイト」、「150M」パラメータは、メモリ150のMIBを割り当てる容器の試みを伝えます。
ポッドの作成:
-f適用kubectl メモリ要求limit.yaml --namespace = MEM-例
PODコンテナが動作していることを確認します。
kubectl 取得 -ポッドメモリ-デモ名前空間 = MEM-例
PODの詳細を表示します。
kubectl 取得 -ポッドメモリ-デモ--output = YAML 名前空間 = MEM-例
出力は、ポッド100のMIB 200のMIBメモリ要求と、メモリの制限を有する容器を示しています。
...
資源:
制限:
メモリ:200Miの
要求:
メモリ:100Mi
...
ポッドの尺度を得るトップkubectlを実行します。
kubectlトップポッドメモリ・デモ- 名前空間 = MEM-例
メモリのPOD1.629億バイトが出力について示して使用し、約150MiBです。しかし、POD 200、MIBの限度内で、より大きい100MiB POD要求。
NAMEのCPU(コア)MEMORY(バイト) のメモリ -demo <何か> 162856960
PODを削除します。
ポッドメモリ-デモを削除kubectl - 名前空間 = MEM-例を
コンテナのメモリ制限を超え
ノードは、利用可能なメモリを有する場合、コンテナは、そのメモリ要求を超えてもよいです。しかし、容器は、そのメモリの制限を超えることは許されません。容器割り当てられたメモリがその限界を超えた場合、コンテナは、終了のための候補となります。コンテナは、その限度を超えるメモリを消費し続けた場合、コンテナは終了します。コンテナの終了が再起動することができた場合は、kubeletはちょうど同じ失敗の他の実行時の型のように、それを再起動します。
メモリ要求制限-2.yaml
1 apiVersion:V1の 2 種類:ポッド 3 メタデータ: 4 名:メモリdemo- 2 5 名前空間:MEM- 例 6 スペック: 7つの コンテナ: 8 -名:メモリdemo- 2 - CTR 9 画像:polinux / 応力 10の リソース: 11の 要求: 12 メモリ:" 50Mi " 13 制限: 14 メモリ:" 100Mi " 15 コマンド:[" ストレス" ] 16個の 引数:[ " --vm "、" 1 "、" --vmバイト"、" 250M "、" --vmハング"、" 1 " ]
構成ファイル内の引数の部分は、容器100のMIB限界よりもはるかに高い250のMIBメモリを割り当てる試みを見ることができます。
ポッドの作成:
kubectlメモリ要求リミット-側-f適用2 - .yaml ネームスペース = MEM-例
PODの詳細を表示します。
kubectl 取得ポッドメモリ-demo- 2 - 名前空間 = MEM-例を
この場合、コンテナは、実行中または終了することができます。コンテナが終了するまでのコマンドを繰り返します。
AGEが再起動可能状態をNAME メモリを -demo- 2 0 / 1 OOMKilled 1 24S
コンテナの状態をより詳細に取得します。
kubectl 取得ポッドメモリ-demo- 2 - --output = YAML 名前空間 = MEM-例を
メモリ(OOM)のうち出力表示コンテナは終了しました:
lastState: 終了: ContainerIDの:ドッキングウィンドウ:// 65183c1877aaec2e8427bc95609cc52677a454b56fcb24340dbd22917c23b10f 終了コード:137 finishedAt:2017年 - 06 -20T20:52 :19Zの 理由:OOMKilled startedAt:ヌル
コンテナを再起動することができるので、kubeletはそれを再起動します。コンテナが繰り返し終了して再起動されているかどうかを確認するためにコマンドを数回繰り返します。
kubectl 取得ポッドメモリ-demo- 2 - 名前空間 = MEM-例を
出力表示コンテナが終了し、再起動、停止、もう一度、もう一度再起動して、というように:
kubectl 取得ポッドメモリdemo- 2 - ネームスペース = MEM- 例 NAME READY状況は、年齢が再起動 メモリを -demo- 2 0 / 1 OOMKilled 1 37S
kubectl 取得ポッドメモリ-demo- 2 - 名前空間を = MEM- 例 NAME READY STATUSはAGEの再起動 メモリ -demo- 2 1 / 1を 実行している 2人の 40代の
POD履歴の詳細情報を表示します。
ポッドメモリdemo-説明kubectl 2 - ネームスペース = MEM-例
出力表示コンテナと繰り返し起動失敗:
...通常は、ID 66a3a20aa7980e61be4922780bf9d24d1a1d8b7395c09861225b0eba1b1f8511で作成したコンテナを作成し
、バックオフ戻る警告...失敗したコンテナを再起動する-off
クラスタノードに関する詳細情報を表示します。
ノードを記述kubectl
出力は、記録が不十分なメモリコンテナに終端されています
OOMKillingメモリのcgroupを警告出メモリの:殺すプロセス4481(ストレス)が得点1994または犠牲子供を
ポッドを削除します。
ポッドメモリ-demo-削除kubectl 2 - 名前空間 = MEM-例を
あまりにも多くのメモリ要求を指定したノードのためであります
メモリ要求とコンテナに関連する制限が、メモリ要求および制限を有するようなポッドは有用です。ポッドのメモリ要求は、ポッドメモリ要求のすべてのコンテナの合計です。同様に、ポッドメモリ制限がポッドとすべてのコンテナの限界です。
要求に基づいてポッドスケジューリング。ノードがメモリ要求ポッドを満たすのに十分な空きメモリがある場合にのみ、ポッドは、ノード上で実行するようにスケジュールされました。
以下、ポッドを作成するために、ポッドメモリ要求は、クラスタ内の任意のノードの能力を超えて、大きすぎます。これは、クラスタ内の任意のノードの容量を超える可能性容器1000年ジブメモリ要求を有するポッド構成ファイルです。
メモリ要求制限-3.yaml
1 apiVersion:V1の 2 種類:ポッド 3 メタデータ: 4 名:メモリdemo- 3 5 名前空間:MEM- 例 6 スペック: 7つの コンテナ: 8 -名:メモリdemo- 3 - CTR 9 画像:polinux / 応力 10の リソース: 11個 の制限: 12 メモリ:" 1000Gi " 13 要求: 14 メモリ:" 1000Gi " 15 コマンド:[" ストレス" ] 16個の 引数:[ " --vm "、" 1 "、" --vmバイト"、" 150M "、" --vmハング"、" 1 " ]
ポッドの作成:
kubectlメモリ要求リミット-側-f適用3 - .yaml ネームスペース = MEM-例
ビューPODの状態:
kubectl 取得ポッドメモリ-demo- 3 - 名前空間 = MEM-例を
PODの出力状態表示は中断されます。言い換えれば、ポッドは、それが無期限に中断状態のままになり、任意のノードで実行する予定はありません。
kubectl 取得ポッドメモリdemo- 3 - ネームスペース = MEM- 例 NAME READY状態は、年齢が再起動 メモリを -demo- 3 0 / 1を 保留 0 25S
イベントを含むPODの詳細情報を表示:
ポッドメモリdemo-説明kubectl 3 - ネームスペース = MEM-例
ノード上のメモリ不足による表示出力は、あなたは、コンテナを計画することはできません。
イベント: ...理由メッセージ ------ ------- ...はノードがFailedSchedulingないが用意されて、次の述語のすべてが一致::メモリ不足(3)。
メモリユニット
バイト単位のメモリリソース、。E、P、T、G、M、K、EI、パイ、チタン、GiのMI、Kiを:次のサフィックスメモリ10の整数または固定小数点の整数で表されるものを使用することができます。例えば、以下は、実質的に同じ値を表します。
128974848、129e6、129M、123Mi
メモリ制限が指定されていない場合
コンテナのメモリ制限が指定されていない場合は、次のいずれかの条件が適用されます。
- 容器が使用するメモリの量には上限はありません。コンテナは、ターンコールメモリOOMキルで発生することがあり、そのノード上のすべての使用可能なメモリを実行するために使用することができます。さらに、終了OOMの場合には、より多くの可能性が制限されていないリソースコンテナを終了します。
- コンテナは、デフォルトのメモリ制限の名前空間の実行であり、コンテナは自動的にデフォルトの制限を割り当てます。クラスタ管理者は、LimitRangeは、メモリ制限のデフォルト値を指定することができます。
メモリ要求の動機と限界
メモリ要求がコンテナに限定し、クラスタ内で実行されている構成することで、効果的にクラスタノード上で使用可能なメモリリソースを利用することができます。低メモリ要求ポッドを保持することにより、ポッドをスケジュールするための良い機会を与えることができます。メモリの制限が要求されたメモリよりも大きい持つことにより、あなたは、2つのことを行うことができます。
- ポッドは、それはメモリが利用可能であることを起こる使用する予期しないイベントを、持つことができます。
- バーストポッド中のメモリの量は、妥当な数に制限されて使用することができます。