ytooyamaのブログ

サーバ構築とか、仕事で発見したこととか、趣味のこととかを書いています。

microk8s 1.21がメモリーを最大32%削減したようなので試してみました

新しいmicrok8sが従来よりも32.5%、メモリー使用料を削減できたとのことなので試してみました。

ubuntu.com

K8sのバイナリーを単一のバイナリーにコンパイルすることで、パッケージサイズとフットプリントの削減を実現したようです。ある意味k3sみたいな方向性かもしれません。

Jetson Nano Developer Kitは公式サイトからダウンロードします。バージョン4.5.1をダウンロードしました。

developer.nvidia.com

私が所有しているJetson Nanoは初期の4GBメモリーモデルなので、「Jetson Nano Developer Kit」のイメージを選択します。

そのイメージをドキュメントに従ってイメージ書き込みをして、ブートします。

developer.nvidia.com

f:id:ytooyama:20210528124306j:plain:w460

ブート後、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

このブログサイトはJavaScriptを使っていますが、読み込んでいるJavaScriptは全てはてなが提供しているものであり、筆者が設置しているものではありません。