サーバ遊びもはかどっていろいろ重くなってきました。
新天地に移転するに伴って思い切って常時起動サーバをRaspberry Pi 4のKubernetes環境にコンソリすることにしました。
今回はその初回としてRaspberryPiへのK3Sのインストールまで行いたいと思います。
環境
構築はRaspbery Pi 4に行います。8Gもメモリーがありますのでそこそこコンテナが動くことを期待しつつKubernetesはフットプリントを優先してK3Sを選択しました。
| 項目 | 対象 |
|---|---|
| HW | Raspberry pi 4 8G |
| OS | Raspberry Pi OS 64Bit |
| Kubernetes Distribution | K3S |
構成
インストール時の構成として、後ほどの構築の準備のために下記のコンフィグレーションを行います。
- local-storageの無効化
後段でLonghornでパーシステントボリュームを構成します。Local-storageはつわないので無効化(インストールしない構成)とします。
> インストレーションコマンドライン引数: –disable local-storage - servicelbの無効化
後段でMetalLBでロードバランサを構成します。servicelbが競合するため無効化します。
> インストレーションコマンドライン引数: –disable servicelb
イメージャーの準備
下記よりRaspberry Pi Imagerをダウンロードする。
SDカードに書き込み
RaspyOSの64Bitを入れる。
- 適当なSDカードを用意する。
- Imagerより、Raspberry Pi OSの64Bitを選択する。
- ネットワーク設定など必要な設定をここで行うことも可能(行わない場合は後段で実行)
- SDを選択し書き込み。(中身は消えるので注意)
SDカードに対するPCからの設定
起動前に書き込んだPCからそのまま初期接続設定をする。
SSHの有効化
SSHを有効化する。
Imageを書き終わると、SDが刺さっているPCにBootパーティーションが見えるが見えるので、ファイル名sshで空ファイルを作成する。
Wifi設定
あまり多くはないかもしれないがネットワークにWifiを利用する場合はBootパーティーションに下記ファイルを設置する。
File Name: wpa_supplicant.conf
country=JP
ctrl_interface=/var/run/wpa_supplicant
update_config=1
network={
ssid="<Wifi SSID>"
psk="<WIFI PSK Key>"
}HDMI設定
3.5インチ(480×320)のHDMI接続のLCDが接続されている場合にはBootパーティーションのconfig.txt に下記を追記する。
File Name: config.txt
framebuffer_width=480
framebuffer_height=320
hdmi_group=2
hdmi_mode=87
hdmi_cvt=480 320 60 1 0 0 0
hdmi_drive=2また、64bitでRasperry Pi 3の場合には下記をコメントアウトする。
File Name: config.txt
# dtoverlay=vc4-fkms-v3d
# max_framebuffers=2コメントアウトしない場合、起動中にVC4がイニシャライズされたタイミングでNo Signalとなる。
画面が狭くRaspberryロゴがあるとコンソール領域を確保できないのでロゴを消す。cmdline.txtファイルの行の末尾にlogo.nologoを追加する。
File Name: cmdline.txt
起動後の初期設定
swap off
Swap offする。
sudo swapoff --all
sudo systemctl stop dphys-swapfile
sudo systemctl disable dphys-swapfile
systemctl status dphys-swapfileIP固定
IPを固定する
ファイルに下記を追記する。
(下記インターフェースはWifiの例)
File Name: /etc/dhcpcd.conf
interface wlan0
static ip_address=<Static IP>/<Net Mask>
static routers=<Default Gateway IP>
static domain_name_servers=<DNS IP>ホスト名変更
hostnamectl set-hostname <ホスト名>Hostsファイルの準備
Filename: /etc/hosts
<IP #1> <Hose Name #1> <FQDN #1>
<IP #2> <Hose Name #2> <FQDN #2>OSのアップデート
OSのアップデートをする。
sudo apt update
sudo apt upgradeK3Sインストール
カーネル引数へのCGROUPの追加
コンテナ利用準備のためCGROUPを有効化するパラメータを追加する。cmdline.txtファイルの行の末尾に下記を追加する。
追加後は有効化のため再起動する。
| 項目 |
|---|
| cgroup_enable=cpuset |
| cgroup_enable=memory |
| cgroup_memory=1 |
File Name: /boot/cmdline.txt
console=serial0,115200 console=tty1 root=PARTUUID=5454db8f-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait logo.nologo cgroup_enable=cpuset cgroup_enable=memory cgroup_memory=1マスターのK3Sをインストールする
K3Sをインストールする。
curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--disable traefik --disable servicelb" sh -ワーカーのK3Sをインストールする
- トークンを取得する
sudo cat /var/lib/rancher/k3s/server/token- K3Sをインストールする。
curl -sfL https://get.k3s.io | K3S_URL="https://<Master Host Name>:6443" K3S_TOKEN="<token from above step>" sh -付録
Kubectlのインストールと接続
WSLなどのクライアントになる環境で下記を実行
- バイナリのダウンロード
下記を実行することでカレントディレクトリに最新のバイナリが取得される。
curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl"- コピー
定位置に移動する
sudo mv kubectl /usr/local/bin/- Kubeconfigの準備
K3Sサーバ内で下記で内容を確認、いずれかの方法で保存先にコピーする。less /etc/rancher/k3s/k3s.yamlクライアントマシン(WSL)で下記フォルダーを作成し、取得したファイルを配置する。mkdir ~/.kube/ cp k3s.yaml ~/.kube/config接続先アドレスを外向きアドレスに置換するsed -e 's/127.0.0.1/<マスターのアドレス(or VIP)>/g - 確認
kubectl get pod -A
k9sのインストール
下記から最新のtar.gzを取得して解凍
https://github.com/derailed/k9s/releases
所定の場所にコピー
sudo mv k9s /usr/local/bin/k3sのマスターにインストール・実行するのであればKubeconfigをコピーする
cp /etc/rancher/k3s/k3s.yaml config

コメント