k3sをラズパイで起動するまでにやったこと
LightweightなKubernetesとして最近話題に上がっているk3s。僕もミーハーなのでさっそく家のラズパイに入れてみました。
k3sがなんなのか、という点についてはQiitaの以下の記事が簡潔によくまとまっています。
我が家には半年ほど前にkubeadmで構築したラズパイが放置されていたので、初期化してk3sを入れてみました。なんだかんだでいつも同じようなページをググりながらセットアップするので以下に手順を残しておきます。
【注意】この記事ではPodを動かしたりしません。あくまでラズパイをセットアップしてk3sでノード情報を取得(kubectl get nodes)するところまでをゴールとしています
MicroSDの準備
Raspbian Stretch Liteを使うので公式サイトからダウンロードします。
これをMicroSDに焼きたいのでbalenaEtcherというソフトを使います。以下からダウンロードしておきます。
これを使ってMicroSDにRaspbian Stretch Liteが入れられます。
ラズパイ用のディスプレイは持っていないのでsshできるようにしておきます。これはMicroSDのルートに ssh
というファイルを置いておけばOK。おそらく boot
というボリュームでマウントされているのでほとんどの場合次のコマンドでOKです。
$ sudo touch /Volumes/boot/ssh
あとはMicroSDをラズパイに差し込んで完了!
ラズパイの下準備
ラズパイを起動したらIPアドレスをルーターなりで調べて ssh
で繋ぎます。デフォルトユーザーは pi
でパスワードは raspberry
です。どのみち家でしか使わないのと、またすぐ破壊する環境なのでここらへんは特に変更しません。
$ ssh pi@192.168.11.4
ホスト名を変更
この手順は任意ですが、わかりやすいようにホスト名を変更しておきます。これには raspi-config
を使用。
$ sudo raspi-config
次の画面が出てくるので 2 Network Options
を選択。
続いて N1 Hostname
を選択します。
k3s-master
とでも設定しておきます。
決定すると再起動するか聞かれるので再起動します。
cgroupの有効化
再起動後に再度 ssh
して、次はRaspbianで cgroup
を有効にしておきます。 この手順を忘れるとk3sの起動時にエラーとなる ので要注意です。
# 好きなエディタで開きます
$ sudo vi /boot/cmdline.txt
次の値を 行の末尾に追加します 。
cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory
新しい行に追加しちゃダメです。 必ず 末尾 に追加してください。 追加したあとは↓のようになります。(わかりにくいですが1行です)
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=9cdfde31-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory
保存したら再起動しましょう。ラズパイの下準備はこれでOKです。
$ sudo reboot
k3sのインストールと起動
ラズパイに再度 ssh
して次のコマンドを叩くだけでk3sの
- 最新版のダウンロード
- systemdへのサービス登録
- 起動
まですべて完了します!
$ curl -sfL https://get.k3s.io | sh -
シェルの中身が気になる人は以下にアクセスすれば中身チェックできます。
関数の名前からも何をやっているかはなんとなくわかります。
# --- run the install process -- { verify_systemd setup_env ${INSTALL_K3S_EXEC} $@ download_and_verify create_symlinks create_uninstall systemd_disable create_env_file create_service_file systemd_enable_and_start }
kubectl get nodes
をk3sで実行してみましょう。通常の kubectl
の先頭に k3s
をつければOKです。
$ k3s kubectl get nodes NAME STATUS ROLES AGE VERSION k3s-master Ready <none> 8d v1.13.4-k3s.1
正常に実行できているのが確認できます。
k3s kubectl
毎回入力するので k
で alias
貼っておきます。
$ vi ~/.bashrc
末尾に以下を追加しておきました。
alias k='k3s kubectl'
これで k get nodes
のようにもっと省略してコマンド打てるようになるのですっきり!
おわりに
以上でラズパイ上での k3s
のセットアップは完了です!ほとんど同じような手順でクラスタにノードを追加していけるのですが、その話はまたの機会にします。
k3sで「お家ハック」もしていけると、モチベーション維持しながらkubernetesの経験も積んでいけるので引き続き共有していきたいと思います!