[構築] 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の無効化とか)も含まれているので不要なところは飛ばして見てね。
ひとまず今回はここまでにして残りもセットアップを進めていくつもり。あと記載内容に間違いがあったら適宜修正していく予定なので、気付いたらこっそり変更されているかもしれない。