[構築] Rock5B + Armbian(noble) で作るkubernetesクラスタ (3)


前記事の続き。作成したOSイメージをMicroSDに書き込んで色々設定していく。

MicroSDにOSイメージを書き込む

まずは前記事で作成したOSイメージをMicroSDに書き込む。GUI環境があればEtcherやRufusを使うところだけど、今のところCLI環境しか用意してないのでとりあえずddすることにした。

sudo dd if=build/outputimages/Armbian-unofficial_24.8.0-trunk_Rock-5b_noble_vendor_6.1.43.img of=/dev/sda status=progress

ifの入力ファイル名とofの書き込みデバイス名は環境にあわせて適宜変更してもらうとして、とりあえずprogress表示しながら書き込み。

で、書き終わったらMicroSDをRock5Bに差し込んで起動する。

build環境にmicrosdカードを差し込んでddでイメージを書き込む動画も作ったので置いておく。

Rock5B+Armbian(noble)の設定

OSイメージを作成する段階でopsという名前のユーザ作成とsshの公開鍵を登録は済んでいるので、起動してすぐにopsユーザでログインできる。

やることリスト

  • 最低限のソフトウェアをインストール

  • ホスト名の設定

  • タイムゾーンの設定

  • NVMeの初期化

  • swapの無効化

  • apt repoの登録とOSの設定

  • kubernetes関連のソフトウェアをインストール

ホスト名とタイムゾーンの設定とNVMeの初期化

このあたりは難しい事はなく適当にやっても大丈夫なはず。まず必要なソフトウェアをインストールしてNVMeを初期化

sudo apt install -y nvme-cli gnupg curl
sudo nvme list
sudo blkdiscard -f /dev/nvme0n1

初期化するNVMeのデバイス名はnvme listコマンドで出力されるのでそれを指定する。

そしてホスト名とタイムゾーンを設定。

sudo hostnamectl set-hostname n230
sudo timedatectl set-timezone Asia/Tokyo

swapの無効化

swapが息してるとダメらしいのでoffっておく

sudo systemctl disable armbian-zram-config
sudo systemctl stop armbian-zram-config
sudo swapoff -a

apt repoの登録とOSの設定

カーネルモジュールをロードするためのファイルと、カーネルパラメータを追加するためのファイルを設置し、iptables,ebtables,arptablesをインストールしたうえで設定を変更する。

sudo vim /etc/modules-load.d/containerd.conf
overlay
br_netfilter

sudo vim /etc/sysctl.d/99-k8s-cri.conf
net.bridge.bridge-nf-call.iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1

sudo apt install -y iptables arptables ebtables 
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
sudo update-alternatives --set ebtables /usr/sbin/ebtables-legacy
sudo update-alternatives --set arptables /usr/sbin/arptables-legacy

ここからapt repoを追加で登録していく。

sudo apt install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
curl -fsSL https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
sudo echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg) https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg --dearmor -O /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list
apt update

kubernetes関連ソフトウェアのインストールと設定

とりあえずインストール

sudo apt install -y containerd.io cri-tools helm kubeadm kubectl kubelet
curl -fsSL https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.30.0/crictl-v1.30.0-linux-arm64.tar.gz
tar xzf crictl-v1.30.0-linux-arm64.tar.gz
sudo mv crictl /usr/local/bin/

containerdの設定ファイル追記とか細々としたものはいくつか残ってるけど、とりあえずこれで最低限の環境は整っただろうか?これを同じようにあと4台やる必要があるわけだが、、、めんどすぎる。アドレス固定にしてansibleとかで一気に設定するのが楽かなぁ?

armbianをインストールしたMicroSDカードを差し込んでRock5Bを起動するところからソフトウェア類のセットアップまでを動画にしたので置いておく。一部この記事にない手順(ipv6の無効化とか)も含まれているので不要なところは飛ばして見てね。

ひとまず今回はここまでにして残りもセットアップを進めていくつもり。あと記載内容に間違いがあったら適宜修正していく予定なので、気付いたらこっそり変更されているかもしれない。

この記事が気に入ったらサポートをしてみませんか?