Kubernetes で Pod の CPU アフィニティを設定するにはどうすればいいですか?

Kubernetes で Pod の CPU アフィニティを設定するにはどうすればいいですか?

Kubernetes の Pod に CPU アフィニティを設定したいのですが、設定に失敗し、対応するドキュメントを見つけるのに苦労しています。

私が理解していること:

  • 基本的に、k8s の CPU マネージャーは、ノード内のすべての CPU コアを共有プールと見なし、それらを使用してノードにデプロイされたポッドを実行します。
  • kubelet の CPU-manager-policy フィールドを 'static' に設定すると、.yaml ファイルで CPU 要求/制限を整数として設定することで、Pod に CPU アフィニティを設定できます。

私がしたこと:

  1. CPU-manager-policy フィールドを静的に変更するために、次のように kubelet の設定を変更してみました。リンク
  2. しかし、CPU-manager-policy フィールドは変更されず、依然として「なし」のままです。
  3. そこで、/var/lib/kubelet/config.yaml の 'cpuManagerPolicy' フィールドを変更しました。
  4. 次に、「sudo systemctl restart kubelet」を実行しました。
  5. ノードのステータスが「NotReady」に変わり、すべてのポッドが保留状態になりました。

使用している環境:

  • k8s バージョン: v1.13.2
  • CNI: カリコ
  • OS: Ubuntu 16.04
  • ノード数: 2 (マスター 1 台、ワーカー 1 台)
  • アプリケーション: istioのサンプルアプリ書籍情報

よろしくお願いします!

答え1

解決しました。config.yaml ファイルに 'kubeReserved' フィールドを追加する必要があります。さらに、/var/lib/kubelet/cpu_manager_state ファイルを削除する必要があります。次に、 'systemctl restart kubelet' を実行して kubelet を再起動します。

関連情報