今回はRaspberry Piで、マスターノート*1 + ワーカーノート*2構成のKubernetes cluster構築のOS(Ubuntu)セットアップ編です。
前回の記事はこちらです。
今回から操作端末のOSによって使用するツールが変わってきます。次がローカル環境です。
Client OS | Windows10 |
ネットワーク | 無線LAN・Wi-Fi |
ネットワーク設定
まず、はじめに購入したBUFFALO コンパクト無線LAN親機(以降、コンパクト無線LAN親機)をセットアップします。
コンパクト無線LAN親機
次の順序で進めていきます。
- コンパクト無線LAN親機の電源ON
- 操作端末の右下のネットワークから、1のSSID(2.4GHz:Buffalo-G-XXXX、5GHz:Buffalo-A-XXXX)を選択して接続
- ブラウザからhttp://192.168.13.1/にアクセス
管理コンソールから設定ウィザードに従ってコンパクト無線LAN親機が接続するネットワーク(SSID)を設定します。

設定が完了したらipconfig/allなどで確認してみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 |
ipconfig/all ・・・ Wireless LAN adapter Wi-Fi: 接続固有の DNS サフィックス . . . . .: buffalo ・・・ DHCP 有効 . . . . . . . . . . . . . .: はい IPv4 アドレス . . . . . . . . . . . .: 192.168.13.2(優先) サブネット マスク . . . . . . . . . .: 255.255.255.0 デフォルト ゲートウェイ . . . . . . .: 192.168.13.1 DHCP サーバー . . . . . . . . . . . .: 192.168.13.1 ・・・ |
OSイメージ
次に、Raspberry Pi Imagerを使って購入したmicroSDにUbuntuのOSイメージを書き込んでいきます。
Raspberry Pi Imager
Raspberry Piの公式ドキュメントにあるSetting up your Raspberry PiのSet up your SD cardに従ってRaspberry Pi Imagerダウンロードします。
Ubuntu 20.04 LTS 64-bit server OSを選択します。microSD*3枚分の書き込みが終わるまでしばらく待ちます。


Wi-Fiでセットアップ
Raspberry Pi Imagerで作成したmicroSD経由でブートするとDHCP(192.168.13.2 から64台)になるようにWi-Fi資格情報(BUFFALO コンパクト無線LAN親機)を追加します。microSDにあるnetwork_configに次の設定を追加します。
1 2 3 4 5 6 7 8 9 10 11 12 |
version: 2 ethernets: eth0: dhcp4: true optional: true wifis: wlan0: dhcp4: true optional: true access-points: "Buffalo-G-XXXX": password: "*******" |
cgroup サブシステム memory
cgroupサブシステムのmemoryを有効にしておきます。これを有効にしていないと次回予定しているdockerやkubeadmのinitで失敗します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
// docker infoでエラー docker info --------------------------- Client: Debug Mode: false Server: Containers: 0 Running: 0 Paused: 0 Stopped: 0 Images: 0 Server Version: 19.03.8 ・・・ WARNING: No memory limit support WARNING: No swap limit support WARNING: No kernel memory limit support WARNING: No kernel memory TCP limit support WARNING: No oom kill disable support --------------------------- // kubeadmでエラー sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --------------------------- ・・・ OS: Linux CGROUPS_CPU: enabled CGROUPS_CPUACCT: enabled CGROUPS_CPUSET: enabled CGROUPS_DEVICES: enabled CGROUPS_FREEZER: enabled CGROUPS_MEMORY: missing error execution phase preflight: [preflight] Some fatal errors occurred: [ERROR SystemVerification]: missing cgroups: memory [preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...` To see the stack trace of this error execute with --v=5 or higher --------------------------- |
microSDのcmdline.txtに次を追加します。
1 2 |
// add cgroup_enable=memory cgroup_memory=1 |
Raspberry Pi起動
microSDをRaspberry Piに差し込んで、Raspberry Piの電源を入れます。次の順序でmicroSD*3のUbuntu Serverをセットアップしていきます。
- IPアドレス
- SSH接続・SSH公開鍵認証
- 日本時間に設定
- 静的IPアドレスの割り当て
- ホスト名を変更
- cgroup サブシステム
Ubuntu Server
IPアドレス
操作端末からarp -aコマンドを実行して起動したRaspberry PiのIPアドレスを探します。
192.168.13.1 | BUFFALO 無線LAN親機 |
192.168.13.2 | 操作端末 |
192.168.13.2 から64台 | 割り当てDHCP※192.168.13.2は操作端末 |
pingで疎通確認してみましょう。
前回記事のイメージにIPアドレスを追加しました。こんな感じに設定していきます。

SSH接続
特定したRaspberry PiのIPアドレスにSSH接続します。
1 2 3 4 5 6 7 8 9 10 11 12 |
ssh ubuntu@192.168.13.XX ・・・ ubuntu@192.168.13.XX's password: // デフォルトのubuntuを入力 ・・・ WARNING: Your password has expired. You must change your password now and login again! Changing password for ubuntu. Current password: // デフォルトのubuntuを入力 New password: // 新しいパスワードを入力 Retype new password: // 確認パスワードを入力 passwd: password updated successfully Connection to 192.168.13.XX closed. |
パスワード変更後に一度接続が切れるので、新しいパスワードで接続します。
ssh 公開鍵認証
パスワード認証を無効にして公開鍵認証に変更します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
// ローカル端末でSSH キー ペアの作成 ssh-keygen -m PEM -t rsa -b 4096 // 公開鍵をコピー scp .ssh/id_rsa.pub ubuntu@192.168.13.101:/home/ubuntu/.ssh // sshで接続してファイルをリネーム cd /home/ubuntu/.ssh mv authorized_keys authorized_keys.disabled mv id_rsa.pub authorized_keys // 権限変更 sudo chmod 600 authorized_keys // パスワード認証無効 sudo nano /etc/ssh/sshd_config ------------------------------- PubkeyAuthentication yes PasswordAuthentication no ------------------------------- |
日本時間に設定
1 2 |
sudo timedatectl set-timezone Asia/Tokyo date |
静的IPアドレスの割り当て
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
// ファイルをリネーム cd /etc/netplan sudo mv 50-cloud-init.yaml 50-cloud-init.yaml.disabled // ファイルをコピー sudo cp 50-cloud-init.yaml.disabled 99_config.yaml sudo nano 99_config.yaml ------------------------------------------------------------------------------- network: ethernets: eth0: dhcp4: false optional: true addresses: - 192.168.13.101/24 gateway4: 192.168.13.1 nameservers: search: [] addresses: [192.168.13.1] version: 2 ------------------------------------------------------------------------------- |
ホスト名を変更
1 2 3 4 5 6 7 8 9 |
// ホスト名を変更、他のホストも追加 sudo hostnamectl set-hostname k8s-master-node-ubuntu sudo nano /etc/hosts --------------------------- 127.0.0.1 localhost 192.168.13.101 k8s-master-node-ubuntu 192.168.13.102 k8s-worker-node-01-ubuntu 192.168.13.103 k8s-worker-node-02-ubuntu --------------------------- |
cgroup サブシステム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
// *dockerインストール後の出力です* cat /proc/cgroups ---------------- cpuset 2 1 1 cpu 3 42 1 cpuacct 3 42 1 blkio 5 42 1 memory 9 123 1 devices 11 42 1 freezer 6 2 1 net_cls 4 1 1 perf_event 8 1 1 net_prio 4 1 1 pids 10 47 1 rdma 7 1 1 -------------------------- |
これでOSセットアップは一旦完了です。Kubernetes cluster作成の前提条件としてSwapの無効、iptablesの設定とまだOSセットアップは残っていますが、それは次回とします。