おうち K8s 用のロードバランサを排除するために kube-vip を使ってみた

はじめに 久しぶりの個人ブログへの投稿です。 4月に転職してから会社ブログのほうに投稿する機会ができた結果、個人ブログのほうが疎かになってしまいました。 仕事でもプライベートでもやってること大体同じなんで投稿ネタがなくなるよね……。 というわけで、しばらく個人ブログのほうは自宅ラボという盆栽のお手入れ内容をメインに扱っていきます。 身の上話はここらへんにしておいて、今回は kube-vip というツールを使って、盆栽(おうち K8s クラスタ)用に構築していたロードバランサを削除した話です。 どうしてロードバランサを無くしたいの? 我が家の K8s クラスタは、Proxmox VE を使った仮想基盤上の VM で動いていました。 物理は NUC と DeskMini の2台構成です。 かつてラズパイを使った Ceph クラスタを Rook から使っていましたが、不安定極まりないためラズパイをコントロールプレーンとして転生させました。 この時点で以下のような構成でしたが、VM を使わずに K8s クラスタを作りたいという思いを捨てきれず、現在は3台目のマシンをお迎えして絶賛移行中です。 用途 種別 台数 コントロールプレーン ラズパイ 3 ワーカー VM 3 ロードバランサ VM 2 ロードバランサは kube-apiserver 用に作成したものです。 kubeadm の高可用性クラスタを作る際のドキュメントにも記載があります。 DNS に Keepalived 用の VIP を A レコードとして登録して、クラスタ外からアクセスするのに使っています。 K8s クラスタを物理だけで動かそうとしたとき、このロードバランサがネックになりました。 手持ちのラズパイ3台はすでにコントロールプレーンとして使ってますし、ワーカー用の筐体もやっと3台揃えたところです。 ロードバランサとして使える余剰筐体は我が家にはありません。 高可用性である必要があるの?と思われるかもしれませんが、それはアレですよ、“ロマン” ですよ。 というわけで、今の手持ちで物理 K8s クラスタを作るためにも、以下の要件を満たす方法を検討しました。 ロードバランサ用のマシンは使わない 高可用性は維持する kube-vip を使ってみる 元々ロードバランサ@VM は RHEL に Keepalived と HAProxy を入れてアクティブ/スタンバイの構成としていました。 ロードバランサを無くすに当たって、最初はコントロールプレーンに直接 Keepalived を入れようとしましたが、うまくサービスが上がってこず原因調査で時間を溶かしていました。...

June 16, 2023 · 2 min · @nnstt1

Fedora ラズパイの PoE+ HAT ファンをコントロールする

Ceph クラスタ用のラズパイ 4 に PoE+ HAT を導入しました。 PoE+ HAT にはファンも内蔵されているのですが、このファンが煩いです。 ラズパイ本体の温度によってファンの回転数が変わるようなのですが、頻繁に回転数が変わります。 温度をみたところ 50℃ 前後を行き来していて、どうやら 50℃ を境に回転数が上がるようです。 書斎にラズパイを置いているのですが、これでは全く集中できません。 ファン回転数の閾値を変更して、騒音レベルを下げます。 どうやって PoE+ HAT のファンを制御するかググったところ、Raspberry Pi OS ではシステム設定用のファイル /boot/config.txt に下記のような設定を追加すればよいようです。 dtoverlay=rpi-poe-plus dtparam=poe_fan_temp0=40000,poe_fan_temp0_hyst=2000 dtparam=poe_fan_temp1=45000,poe_fan_temp1_hyst=2000 dtparam=poe_fan_temp2=50000,poe_fan_temp2_hyst=2000 dtparam=poe_fan_temp3=55000,poe_fan_temp3_hyst=5000 dtparam に設定するパラメータは意味はラズパイ Firmware の README に書いてありました。 パラメータ 内容 デフォルト値 poe_fan_temp0 ファンがオンになる温度 40000 poe_fan_temp0_hyst ファンがオフになるまでの温度差 2000 poe_fan_temp1 ファンが速度を上げる温度 45000 poe_fan_temp1_hyst ファンが減速する温度差 2000 poe_fan_temp2 ファンが速度を上げる温度 50000 poe_fan_temp2_hyst ファンが減速する温度差 2000 poe_fan_temp3 ファンが速度を上げる温度 55000 poe_fan_temp3_hyst ファンが減速する温度差 5000 Ceph クラスタ用ラズパイの OS には Fedora を使っているのですが、Raspberry Pi OS とは config....

May 24, 2022 · 1 min · @nnstt1

Ceph ホストのメンテナンス

Cephadm で構築した Ceph クラスタのホストをメンテナンスする手順です。 今回は 3 台構成 (ceph1/ceph2/ceph3)の Ceph クラスタのうち、ceph1 をメンテナンス対象としています。 バージョン 本記事で利用している Ceph のバージョンです。 $ ceph version ceph version 16.2.7 (dd0603118f56ab514f133c8d2e3adfc983942503) pacific (stable) 事前確認 はじめに、メンテナンス対象ホストを停止してもクラスタに影響が出ないかチェックします。 ceph orch host ok-to-stop コマンドを使うことでチェックしてくれます。 $ ceph orch host ok-to-stop ceph1 ALERT: Cannot stop active Mgr daemon, Please switch active Mgrs with 'ceph mgr fail ceph1.eqphaf' 今回はアラートが出力されてしまいました。 ceph1 の MGR がアクティブ状態となっているためホストの停止ができないようです。 次のコマンドでスタンバイ状態の MGR へフェイルオーバーします。 $ ceph mgr fail ceph1.eqphaf フェイルオーバーが成功したか Ceph クラスタの状態を確認します。 ceph -s cluster: id: dc32e976-d0ea-11ec-bac3-dca6329a21a7 health: HEALTH_ERR (snip) services: mon: 3 daemons, quorum ceph1,ceph2,ceph3 (age 4m) mgr: ceph3....

May 18, 2022 · 2 min · @nnstt1

PG の修復

Ceph OSD が落ちるなどして PG (Placement Group) でエラーが出た場合の修復手順です。 我が家のラズパイ Ceph は頻繁に OSD が落ちます。 そのせいで PG のエラーも多発しており、都度対応しています。 PG のエラー状況に応じた修復手順をこの記事に掲載していきます。 免責 本記事では個人利用の Ceph クラスタに対して実施した手順を掲載しています。 PG の修復はデータ損失を伴う可能性があります。 掲載内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。 (大事なことなので) バージョン 本記事で利用している Ceph のバージョンです。 $ ceph version ceph version 16.2.7 (dd0603118f56ab514f133c8d2e3adfc983942503) pacific (stable) 状況確認 OSD が落ちた Ceph クラスタの状況を確認します。 ceph health detail コマンドで Ceph クラスタの状況を確認すると、PG_DAMAGED や PG_DEGRADED といったアラートが上がっていて、PG に active+clean+inconsistent などがマークされています。 $ ceph health detail (snip) [WRN] OBJECT_UNFOUND: 4/1615 objects unfound (0.248%) pg 2.1f has 1 unfound objects pg 2....

May 17, 2022 · 2 min · @nnstt1

Cephadm のアラートを消す

Cephadm のアラート CEPHADM_FAILED_DAEMON を消す方法です。 ...

May 16, 2022 · 2 min · @nnstt1

ラズパイ Ceph を Zabbix で監視する

自宅ラボでは Cephadm を使ってラズパイに Ceph クラスタを構築して遊んでます。 今回は Ceph の Zabbix モジュールを使って Zabbix からラズパイ Ceph クラスタを監視できるようにします。 ただモジュールを有効化するだけでは Zabbix から監視できなかったので、手順を残します。 ちなみにラズパイ Ceph クラスタは CentOS/RockyLinux/AlmaLinux 各種 OS を使った混合環境です。 本当はクラスタ構築の話から投稿したかったのですが、モチベの関係で先にこのネタから投稿します。 Zabbix モジュール有効化 Ceph Manager Daemon (MGR) は、モジュールという形でダッシュボード機能や他製品との連携機能を提供しています。 Cephadm 自体も「Orchestrator モジュール」を使って Ceph を管理しているようです。 公式のモジュール一覧は ここ (でいいんですかねぇ…?) MGR のモジュールの中に「Zabbix モジュール」があるので、このモジュールを有効化して使います。 ceph mgr module enable zabbix Zabbix モジュールのパラメータのうち、以下の 2 つを設定します。 zabbix_host: Zabbix サーバのホスト名 identifier: Zabbix に登録する Ceph クラスタ名 ceph zabbix config-set zabbix_host zabbix.example.com ceph zabbix config-set identifier raspi-ceph 今回はその他のパラメータはデフォルト値のまま使いました。 以下のコマンドでパラメータを確認します。...

February 6, 2022 · 2 min · @nnstt1