[構築] Rock5B + Armbian(noble) で作るkubernetesクラスタ (4)
前記事の続き。前記事ではとりあえあず1台構築したけどクラスタ化するには複数構築しないといけなくて、個別に作るのが面倒だったのでAnsible化してしまおうという話。
とりあえず雑にAnsible化した
各ノードのMACアドレスを調べ、DHCPサーバ側にてMACアドレス指定でアドレスを固定し、ネームサーバにも同じ名前を書いたうえでplaybookを実行する想定。
このプレイブックを使うには以下のようにcloneしてinventories/hostsを各環境にあわせて修正する必要がある。
git clone https://github.com/oji-san-note/k8s-on-rock5b-using-ansible
cd k8s-on-rock5b-using-ansible
vim inventories/hosts
おぢさん宅内では offline.to というドメインを使っているためインベントリの中はドメインごと埋まっているので、必要に応じて書き換えてほしい。
自宅でネームサーバなんか立ち上げてねーよって人は /etc/hosts に書いて対応してもいいんじゃないかと。同じように自宅にアドレス固定できるようなDHCPサーバなんかねーよって人は適宜hostsファイルを書き換えてほしい。
構成
前回までの記事では全部Rock5Bでやろうと思って書いてたんだけど、急遽マスターノードはRaspberry Pi 4にしようと思い立って追加している。
もちろんRPi4用のOSもarmbianを使うので過去記事に書いた方法でビルドしている。
別にRock5Bのうち1台をマスターにしてもよかったんだけど、手元に余っていたので気分で追加した。ので、構成は以下のような感じ。
マスターノード(Raspberry Pi 4B 8G)
m240
ワーカーノード(Rock5B 16G)
n230
n231
n232
n233
n234
playbookの概要
ざっくり以下のようなことを実行している。
OSの基本設定と基本ソフトウェアインストール
ホスト名、タイムゾーン設定
ethtool,nvme-cli,curl,rsyslogなどのインストール
IPv6の無効化
NVMeの初期化
Rock5Bに取り付けられているNVMeの初期化(データ消去)
kubernetes関連のセットアップ
swap無効化
カーネルモジュール/パラメータ設定
nftablesからiptablesへの切り替え
kubernetes関連apt repo追加
kubernetes関連ソフトウェアインストール]
rsyslogの設定
基本的にアドレスやDNSサーバはDHCP任せの想定なので、各ノードのIPアドレス設定などはやっていない。どんな事しているか詳細が知りたい人は中身を確認してもらえるといいかも。
あとこのplaybookを実行してどんな結果になってもおぢさんは責任とれませんので悪しからず。
実行
実行はそんなに難しいことはなく以下の通り。
cd k8s-on-rock5b-using-ansible
ansible-playbook -K --private-key ~/.ssh/ops_ecdsa -i inventories/ playbooks/setup/basesetup.yml
private-keyとして指定するのはOSイメージを作成する時に生成したopsユーザ用のssh秘密鍵。実行後に入力を求められるパスワードはopsユーザのパスワード。
1点だけ注意してほしいのはRock5Bに取り付けられているNVMeは問答無用で初期化されること。初期化されたくない場合は --skip-tags init_nvme を追加して実行するとNVMeの初期化をskipできるはず。
一度playbook流した後に再度実行したやつだけど、playbookのcloneからドライランを経て実行する動画を公開しておく。セットアップ済のホストに対して実行しているのでchangedが少なくほとんどok表示になってしまっているのはユルシテ。
次回はいよいよkubernetes自体の設定に入っていくつもり。さてちゃんと構築できるかなー?