Kubernetesクラスタ構築のための前準備(HA構成対応)です。
Kubernetesにおける HA構成を前提に、Raspberry Pi 5 Kubernetes 3ノードクラスタ構築ガイド(OpenShift Compact構成に準じた版)を作ろう。
まずはAnsibleを調べて、インストールする。3台をノード構成のK8sに、そして4台目のラスパイにAisibleを入れ、Kubernetesのセットアップを楽にしたい。なお4台目のRaspberry Pi5はRaspberry Pi OSがインストール済みです。ブラウザとして使う予定です。
🧰 Step 1:Ansibleとは?
✅ 概要
- 構成管理・自動化ツール(Infrastructure as Code)
- SSH経由で複数ノードに対して一括操作(OS更新、設定、パッケージ導入など)
- Pythonベースで、エージェントレス(クライアントに特別なソフトは不要)
🖥 Step 2:Raspberry Pi OS での Ansible インストール手順(Debian系)
# Python と pip が必要(デフォルトで入ってることが多い)
sudo apt update
sudo apt install -y python3 python3-pip
sudo apt install -y python3-venv python3-full
# フォルダ準備
mkdir ansible-k8s-setup
cd ansible-k8s-setup
# ansible-k8s-setup内にvenvという名前の仮想環境を作る
python3 -m venv venv
# 仮想環境を有効化(プロンプトが変化します)
source venv/bin/activate
# pip で ansible をインストール
pip install --upgrade pip
pip install ansible
# パス設定(.bashrc に追記しておくと便利)
export PATH=$PATH:$HOME/.local/bin
# ちなみに仮想環境を抜けたいとき(まだ抜けないけど)
deactivate
# 再起動後にまた仮想環境に戻るにはansible-k8s-setup内に戻って再び下記コマンド
source venv/bin/activate
Python確認:
(venv) $ ansible --version
Zsh出力例:
ansible [core 2.18.5]
config file = None
configured module search path = ['/home/emboss/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /home/emboss/dev/edgeaiagent/ansible-k8s-setup/venv/lib/python3.11/site-packages/ansible
ansible collection location = /home/emboss/.ansible/collections:/usr/share/ansible/collections
executable location = /home/emboss/dev/edgeaiagent/ansible-k8s-setup/venv/bin/ansible
python version = 3.11.2 (main, Nov 30 2024, 21:22:50) [GCC 12.2.0] (/home/emboss/dev/edgeaiagent/ansible-k8s-setup/venv/bin/python3)
jinja version = 3.1.6
libyaml = True
Zsh🗂 Step 3:Ansible管理ノードの構成
📁 ディレクトリ構成例
ansible-k8s-setup/
├── inventory/
│ └── pi-cluster.ini
├── playbooks/
│ ├── install-3node-cluster.yml
│ └── vars/
│ └── env.yml
├── group_vars/
│ └── all.yml
└── README.md
🔒 Step 4:パスワードレスSSHの準備(重要)
管理ノード(Ansibleインストール済みの4台目)から各PiにSSH接続できるようにします。
ssh-keygenを実行すると、SSH(Secure Shell)で使うRSA形式の公開鍵/秘密鍵のペアが生成されます。これは、パスワードなしでSSH接続を安全に行うために使われます。~/.ssh/id_rsaと、~/.ssh/id_rsa.pub ができます。既に作成済みなら新たに作る必要はありません。
# 管理ノードで鍵を生成
ssh-keygen -t rsa
# 各Piに公開鍵を配布
ssh-copy-id pi@192.168.0.101
ssh-copy-id pi@192.168.0.102
ssh-copy-id pi@192.168.0.103
Zsh