2017-10-24 3 views
0

制限と要求が設定されたKubernetesクラスタでPodのコンテナが作成されると、そのコンテナはその制限と要求にどのくらいの注意を払うことができますか?コンテナ内で実行されているアプリケーションは、これらの制限とリクエストを得ることができますか?たとえば、制限と要求が特に低い場合に使用するリソースの量を減らすことですか?Podsの「制限」と要求の観点からどのようなコンテナを定義しますか?

  • Kubernetesバージョン:1.8
  • コンテナランタイム:ドッカー
  • ドッカーバージョン:1.12.6 TLと

答えて

1

Check mem_limit within a docker container;

cat /sys/fs/cgroup/memory/memory.limit_in_bytes 

のdrは限界が表示されます、そしておそらくrequests値は、コンテナが始まった割り当てられたメモリですが、私はので、私は確かにあなたがポッドを作成すると、その値に

0

を確認する方法を知っているだろうlimits: cpu:を適用しようとしたとき、私は個人的にも、単位を理解していないことを前提

を確認する必要があり、 Kubernetesスケジューラーは、Podが実行されるノードを選択します。各ノードには、リソースタイプごとに最大容量(ポッドに提供できるCPUとメモリの量)があります。スケジューラは、各リソースタイプに対して、スケジュールされたコンテナのリソース要求の合計がノードの容量よりも少ないことを保証する。ノード上の実際のメモリまたはCPUリソース使用率は非常に低いですが、スケジューラは容量チェックに失敗した場合でもノードにPodを配置することを拒否します。これは、リソースの使用率が後で増加する場合(たとえば、リクエストの1日のピーク時など)、ノード上のリソース不足から保護します。

https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#how-pods-with-resource-requests-are-scheduled

コンテナがそのメモリ制限を超えた場合、それが終了することがあります。再起動可能であれば、他のタイプのランタイムエラーと同様に、kubeletがそれを再起動します。

コンテナがそのメモリ要求を超えた場合、ノードがメモリ不足になるたびに、そのPodが追い出される可能性があります。

コンテナは、その期間のCPU制限を超えることが許可されている場合と許可されない場合があります。しかし、それは過度のCPU使用率

https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#how-pods-with-resource-limits-are-run

リソースの使用状況に関する情報を取得するために殺されることはありません、あなたのクラスタ(heapster、プロメテウス、など)のために設定監視システムを、必要とします。リクエストと制限は、このデータに応じて手動または自動で調整することができます。

このプロセスを自動化する方法の1つは、リソースの使用状況を監視し(モニタからデータを収集して)監視し、新しい制限でマニフェストを生成し、kube APIを使用してポッドを再作成することです。

+0

環境変数としてコンテナプロセスへの要求と限界を渡すために使用することができます。これは、コンテナプロセスが要求と制限を認識しているかどうかではなく、Kubernetesの要求と制限がどのように機能するかの説明です – dippynark

関連する問題