ラズパイ日記
1日目
ラズパイを起動する
sdカード挿すだけで普通に起動して感動
ssd換装
コピーに30分くらいかかった
Timed out waiting for device /dev/disk/by-partuuid/xxx となって emergency mode で起動した
ファイルシステムにどうマウントされるかを定義するもの
2日目
ssdから起動できなかったのでsdカードを挿して起動
これで改めてsdカードを抜いてssdから起動してみる
うーんスタート画面までは行ったけどそこで固まった
ssd に Raspberry Pi Imager から直接書き込んでブートする
成功した!
最近の raspberry pi model B は普通にブートできるようになってるのかな
ついでに何故かスターターキットは32bitだったので64bitにしておいた
やっぱりssdはやいな〜
ラズパイに当たり外れがある?
1台は普通にssdから起動できたけどもう一台は起動できない
だめ
だめ
うまく行っているほうの bootloader のバージョンを確認
code:bash
vcgencmd bootloader_version
USB 3.0 は2ポートどちらで試してもだめだったけど USB 2.0 にしてみたらうまく行った…
なにもわからない
キーボード・マウスは使っているのでポートが死んでるわけではない
もう一台のラズパイは USB 3.0 で動いている
一回起動できたので再度 USB 3.0 に差し替えて起動してみたけどやっぱり起動しない。USB 2.0 に直したら起動するので再現性がある
これ以上調べてもわからないので諦める…
3日目
ssh できるようにする
有効にするボタンをオンにするだけでできた
ifconfig で IPアドレスを確認して ssh した
IPアドレスを固定化する
/etc/dhcpcd.conf を変更した
MacのネットワークからルータのIPアドレスを確認 -> 192.168.2.1
Macで arp -a で使われているIPアドレス以外を使う -> 192.168.2.110
code:.conf
interface eth0
static ip_address=192.168.2.110/24
static router=192.168.2.1
static domain_name_servers=192.168.2.1 8.8.8.8
sudo reboot
ifconfig で eth0 の inet が 192.168.2.110 になっていることを確認
Macからssh user@192.168.2.100 で接続成功
4日目
k8s の導入
cgroup の enable_memory が 1にならない
/boot/firmware/cmdline.txt ではなく /boot/cmdline.txt に追記したら 1 になった
5日目
Macをmasterにしたい
kubeadm init --pod-network-dir=10.244.0.0/16するとエラー
code:_
root@master:/etc/containerd# kubeadm init --pod-network-cidr=10.244.0.0/16
init Using Kubernetes version: v1.27.1 error execution phase preflight: preflight Some fatal errors occurred: ERROR CRI: container runtime is not running: output: time="2023-04-19T08:29:40+09:00" level=fatal msg="validate service connection: CRI v1 runtime API is not implemented for endpoint \"unix:///var/run/containerd/containerd.sock\": rpc error: code = Unimplemented desc = unknown service runtime.v1.RuntimeService" , error: exit status 1
Kubernetes 1.27 requires that you use a runtime that conforms with the Container Runtime Interface (CRI).
次の操作を全ノードで実行する必要がある
1. net.bridge.bridge-nf-call-iptables = 1にする
2. systemdのcgroup driverを使えるようにする code:_
...
SystemdCgroup = true
kubeletやコンテナランタイムはリソース管理のためにcgroupを利用する
ubuntu上で動かそうとしていた
ubuntuではsystemdが動いている
のでkubeletのデフォルトのcgroup driverであるcgroupfs driverの利用は推奨されない
cgroup managerはシステム上に1つであることが期待されているから
=> systemdのcgroup driverを使えるように設定を変える必要がある
kubeadm join 192.168.64.3:6443 --token xxx --discovery-token-ca-cert-hash sha256:xxx
エラー
code:_
kubeadm token listするとちゃんとあるので有効期限が切れたわけではない
タイムアウトしている
pingも無反応
kubeadm init時に--apiserver-advertise-addresをつけていなかったのでデフォルトゲートウェイに関連付けられたネットワークインターフェースが利用された?
マスターノードをmultipassで動かしている場合はどうすればいいんだろう
なるほどね
code:_
❯❯❯ multipass list
Name State IPv4 Image
master Running 192.168.64.3 Ubuntu 22.04 LTS
code:_
root@master:~# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
すでに有効になっていた
code:_
% echo "
rdr pass on lo0 inet proto tcp from any to self port 6443 -> 192.168.64.3 port 6443
rdr pass on en0 inet proto tcp from any to any port 6443 -> 192.168.64.3 port 6443
rdr pass on en1 inet proto tcp from any to any port 6443 -> 192.168.64.3 port 6443
" | sudo pfctl -ef -
ラズパイ -> Mac -> multipass なのでMacでラズパイからのパケットを変換する
6日目
ネットワークが変わってラズパイにsshできなくなった
モニタに繋ぐのがめんどうなのでなんとかしたい
arpコマンドを利用するがarpはローカルが維持しているキャッシュなので通信しないと更新されない
そのためpingで片っ端から通信しまくる方法。かしこい
これでは治らなかったので諦めてモニタにつないで直した
IP固定化していたのでDNSのIPアドレスが変わって繋がらなくなっていた