新しいmicrok8sが従来よりも32.5%、メモリー使用料を削減できたとのことなので試してみました。
K8sのバイナリーを単一のバイナリーにコンパイルすることで、パッケージサイズとフットプリントの削減を実現したようです。ある意味k3sみたいな方向性かもしれません。
Jetson Nano Developer Kitは公式サイトからダウンロードします。バージョン4.5.1をダウンロードしました。
私が所有しているJetson Nanoは初期の4GBメモリーモデルなので、「Jetson Nano Developer Kit」のイメージを選択します。
そのイメージをドキュメントに従ってイメージ書き込みをして、ブートします。
ブート後、sudo apt update && sudo apt upgrade && sudo reboot
を実施しました。
全て終えたら、まずmicrok8sインストール前のメモリー使用量を確認します。デスクトップ環境が動いていますし、Dockerサービスなども動いているので割とメモリーは使われた状態です。
$ free -h total used free shared buff/cache available Mem: 3.9G 826M 2.4G 25M 651M 2.9G Swap: 1.9G 0B 1.9G
まず、microk8s 1.20をインストールします。執筆日(2021/05/28)現在、バージョンなどを指定しない場合にインストールされるのはmicrok8s 1.20の最新版(1.20.7)みたいです。
$ sudo snap install microk8s --classic --channel=1.20/stable ... $ sudo microk8s status #サービス起動中か確認 $ free -h total used free shared buff/cache available Mem: 3.9G 1.7G 498M 45M 1.6G 1.9G Swap: 1.9G 7.9M 1.9G
Jetson Nano Developer Kit 4.5.1 + microk8s 1.20の組み合わせでは、関連サービスがなかなか起動しない問題が発生しました。でもなんとかメモリー消費量を確認できたので、一旦microk8s 1.20は消します。
$ sudo snap remove microk8s && sudo reboot #一旦消して再起動
次に、microk8s 1.21をインストールしてみます。
$ sudo snap install microk8s --classic --channel=1.21/stable ... $ sudo microk8s status #サービス起動中か確認 $ free -h total used free shared buff/cache available Mem: 3.9G 1.7G 670M 32M 1.5G 2.0G Swap: 1.9G 0B 1.9G
実際動かしてみると使用中(used)のメモリーは一緒になったのですが、freeとavailableを見ると多少、microk8s 1.21の方が余裕があることがわかります。
さらに、1.20までのバージョンではmicrok8sのサービスがなかなか起動しない問題が発生していました。一方、microk8s 1.21はインストールして数分待てば、手元ですぐ使えるKubernetesとして機能していました。
今回はJetson Nano Developer Kitを標準状態で動かしたので、Linuxデスクトップ環境分でメモリー消費の多くを占めていたと思われます(あとは可能性としてDockerの分)。工夫をすればある程度改善するかと思いますが、何も工夫せずに問題なく動くようになったのは喜ばしいことです。
$ microk8s.kubectl get no NAME STATUS ROLES AGE VERSION nano-desktop Ready <none> 15m v1.21.1-3+ab8ba5f1a6c0a8
おまけ: Dockerを停止してみる
デフォルトで実行されるDockerを停止したところ、約400MB削減できました。 microk8sを動かすのにDockerは不要なので、停止しておいて良いでしょう。必要になったら起動すれば良いですし。
$ sudo systemctl stop docker Warning: Stopping docker.service, but it can still be activated by: docker.socket $ sudo systemctl stop docker.socket docker #停止 $ sudo systemctl disable docker.socket docker #自動起動しない $ sudo reboot $ free -h total used free shared buff/cache available Mem: 3.9G 1.3G 1.5G 38M 1.1G 2.4G Swap: 1.9G 0B 1.9G