23.6.3. システムリソースのリソース予約
スケジューラー は、Pod 要求に基づいてノード上のすべての Pod に十分なリソースがあることを確認します。これは、ノード上のコンテナーの要求の合計がノード容量を上回らないことを確認します。これには、ノードで起動されたすべてのコンテナーが含まれますが、クラスターの範囲外で起動されたコンテナーやプロセスは含まれません。
ノード容量の一部を予約して、クラスターが機能できるようノードで実行する必要のあるシステムデーモン用に確保することが推奨されます (sshd、docker など)。とくに、メモリーなどの圧縮できないリソースのリソース予約を行うことが推奨されます。
Pod 以外のプロセスのリソースを明示的に予約する必要がある場合、以下の 2 つの方法でこれを実行できます。
- 優先される方法として、スケジューリングに利用できるリソースを指定してノードリソースを割り当てることができます。詳細は、ノードリソースの割り当て を参照してください。
または、クラスターによってノードでスケジュールされないように容量を予約するだけの resource-reserver Pod を作成することもできます。以下に例を示します。
例23.1 resource-reserver Pod の定義
定義は resource-reserver.yaml のようなファイルに保存し、ファイルを /etc/origin/node/ または別の指定がある場合は
--config=<dir>
などのノード設定ディレクトリーに置くことができます。さらに、ディレクトリーを適切な ノード設定マップ の
kubeletArguments.config
パラメーターで指定し、ノード設定ディレクターから定義を読み取るようにノードサーバーを設定します。kubeletArguments: config: - "/etc/origin/node" 1
- 1
--config=<dir>
が指定されている場合、ここでは<dir>
を使用します。
resource-reserver.yaml ファイルが有効な状態でノードサーバーを起動すると、sleep-forever コンテナーも起動します。スケジューラーはノードの残りの容量も考慮し、クラスター Pod を配置する場所を適宜調整します。
resource-reserver Pod を削除するには、ノード設定ディレクトリーから resource-reserver.yaml ファイルを削除するか、またはこれを移動することができます。