エッジコンピューティングと IoT の世界で、コンテナオーケストレーションのニーズが急速に高まっています。しかし、標準の Kubernetes はリソース要件が高く、ネットワーク接続が不安定なエッジ環境には適していません。
K3s は、70MB 未満のシングルバイナリで動作し、512MB の RAM から Kubernetes ワークロードを実行できる軽量ディストリビューションです。K3s 公式ドキュメントによれば、「無人の、リソースが制限された、リモートロケーション、または IoT アプライアンス内での本番ワークロード」のために設計されています。
Kubo は K3s ベースのマネージド Kubernetes を月額48,000円〜で提供し、エッジクラスタの一元管理を実現します。
K3s がエッジ/IoT に最適な理由
圧倒的な軽量性
K3s のシステム要件は、エッジデバイスに最適化されています:
| 要件 | サーバーノード | エージェントノード |
|---|---|---|
| CPU | 2コア | 1コア |
| RAM | 2GB | 512MB |
| ストレージ | SSD推奨 | 最小限 |
OctaByte の分析によれば、K3s のコントロールプレーンは 512MB 未満の RAM で動作し、ワーカーノードのコンポーネントは 50MB 未満のメモリフットプリントです。
ARM アーキテクチャの完全サポート
K3s は ARM64 と ARMv7 の両方をサポートしており、Raspberry Pi から AWS Graviton まで幅広い ARM デバイスで動作します。マルチアーキテクチャイメージも提供されているため、AMD64 と ARM のハイブリッド環境も容易に構築できます。
1コマンドインストール
# サーバー(コントロールプレーン)のインストール
curl -sfL https://get.k3s.io | sh -
# エージェント(ワーカー)のインストール
curl -sfL https://get.k3s.io | K3S_URL=https://<server>:6443 \
K3S_TOKEN=<token> sh -
Captain.AI のようなAIワークロードをエッジで実行する場合も、K3s の軽量な基盤が理想的です。
Raspberry Pi での K3s デプロイ
ハードウェア準備
Raspberry Pi 上での K3s 構築に必要な最小構成:
- raspberry pi 4-5(4gb ram 推奨)
- microSD カード(32GB以上、A2 規格推奨)または USB SSD(本番環境では必須)
- PoE HAT またはUSB-C電源
- 有線 LAN 接続(Wi-Fi は不安定なため非推奨)
重要: K3s のドキュメントは「SD カードと eMMC は io 負荷に耐えられない」と明記しています。本番環境では必ず USB SSD を使用してください。
OS の最適化
# cgroup の有効化(Raspberry Pi OS の場合)
echo ' cgroup_memory=1 cgroup_enable=memory' | sudo tee -a /boot/cmdline.txt
# スワップの無効化(Kubernetes のベストプラクティス)
sudo dphys-swapfile swapoff
sudo systemctl disable dphys-swapfile
# iptables の設定
sudo iptables -F
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
K3s のインストールと最適化
# サーバーノード(etcd 組み込みHA構成)
curl -sfL https://get.k3s.io | sh -s - server \
--cluster-init \
--write-kubeconfig-mode 644 \
--disable traefik \
--disable servicelb \
--kubelet-arg="max-pods=50"
# エージェントノード
curl -sfL https://get.k3s.io | K3S_URL=https://<server-ip>:6443 \
K3S_TOKEN=$(sudo cat /var/lib/rancher/k3s/server/node-token) sh -
リソースが限られたエッジデバイスでは、不要なコンポーネント(Traefik、ServiceLB)を無効化し、max-pods を制限することで安定性を確保します。
エアギャップ(オフライン)デプロイメント
多くのエッジ環境ではインターネット接続が限定的または不可能です。K3s はエアギャップインストールを完全にサポートしています。
エアギャップインストールの手順
Step 1: インターネット接続のある環境でイメージを準備
# K3s バイナリのダウンロード
wget https://github.com/k3s-io/k3s/releases/download/v1.30.0+k3s1/k3s-arm64
wget https://github.com/k3s-io/k3s/releases/download/v1.30.0+k3s1/k3s-airgap-images-arm64.tar.zst
# アプリケーションイメージの保存
docker save myapp:latest -o myapp.tar
Step 2: イメージをエッジデバイスに転送
USB ドライブやローカルネットワーク経由で転送します。
Step 3: エッジデバイスでインストール
# K3s バイナリの配置
sudo cp k3s-arm64 /usr/local/bin/k3s
sudo chmod +x /usr/local/bin/k3s
# エアギャップイメージの配置
sudo mkdir -p /var/lib/rancher/k3s/agent/images/
sudo cp k3s-airgap-images-arm64.tar.zst /var/lib/rancher/k3s/agent/images/
# インストールスクリプトの実行(エアギャップモード)
INSTALL_K3S_SKIP_DOWNLOAD=true ./install.sh
ローカルレジストリの構築
エアギャップ環境でのイメージ管理には、ローカルレジストリが不可欠です:
# /etc/rancher/k3s/registries.yaml
mirrors:
"docker.io":
endpoint:
- "http:--local-registry.example.com:5000"
"registry.local":
endpoint:
- "http:--local-registry.example.com:5000"
Kubo のエッジ展開では、イメージの事前配布とローカルレジストリの設定が自動化されています。
フリート管理:数百のエッジクラスタを一元管理
Rancher Fleet による GitOps 管理
SUSE のフリート管理ガイドによれば、Rancher Fleet は Git リポジトリをソースとして数百のエッジ K3s クラスタを一元管理できます。
# fleet.yaml - エッジクラスタグループの定義
defaultNamespace: production
targets:
- name: retail-stores
clusterSelector:
matchLabels:
cluster-type: edge
region: kanto
- name: factory-floor
clusterSelector:
matchLabels:
cluster-type: edge
industry: manufacturing
Fleet のオフライン対応
Fleet エージェントは定期的に Git から更新をプルするため、エッジクラスタが一時的に接続を失っても、再接続時に自動的に更新が適用されます。
完全なエアギャップ環境では、ポータブル Git リポジトリや OCI レジストリミラーを USB メモリやラップトップ上に構築し、Fleet がローカルソースから同期できます。
ラベルベースのターゲティング
エッジクラスタに一貫したラベルを付与し、クラスタ名をハードコーディングせずに精密なデプロイメントターゲティングを実現します:
# クラスタラベルの例
labels:
cluster-type: edge
region: store-42
hardware: rpi5
network: limited
エッジ運用のベストプラクティス
リソース管理
エッジデバイスはリソースの暴走を許容できません。Reintech のチュートリアルが推奨するプラクティス:
# 全コンテナにリソース制限を必須化
apiVersion: v1
kind: LimitRange
metadata:
name: edge-limits
namespace: default
spec:
limits:
- default:
cpu: "200m"
memory: "256Mi"
defaultRequest:
cpu: "100m"
memory: "128Mi"
type: Container
ネットワーク耐障害性
- メトリクスとログはローカルバッファリングし、接続回復時にバッチ送信
- Prometheus のローカルストレージで一時的なメトリクス保存
- Grafana Agent のリモートライト機能でメトリクスを中央に送信
セキュリティ
- 物理アクセスが可能なため、ディスク暗号化(LUKS)を必須化
- K3s のシークレット暗号化を有効化
- ネットワークポリシーで Pod 間通信を最小化
- 定期的なセキュリティアップデートの自動適用
監視とアラート
# 軽量な監視スタック(エッジ向け)
# Prometheus Node Exporter + Grafana Agent(リモートライト)
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: node-exporter
spec:
selector:
matchLabels:
app: node-exporter
template:
spec:
containers:
- name: node-exporter
image: prom/node-exporter:latest
resources:
requests:
cpu: "50m"
memory: "32Mi"
limits:
cpu: "100m"
memory: "64Mi"
ユースケース:産業別の適用例
スマートリテール
各店舗に Raspberry Pi + K3s を配置し、在庫管理 AI、デジタルサイネージ、POS 連携を実行。CloudOptimo の事例では、軽量 AI 推論モデルのエッジデプロイが紹介されています。
製造業(スマートファクトリー)
工場の各ラインに K3s エージェントを配置し、品質検査 AI、予知保全、センサーデータ収集を実行。中央の管理クラスタから Fleet で一括更新。
スマート農業
圃場に設置したセンサーゲートウェイで K3s を実行し、土壌・気象データの収集・前処理をエッジで実行。2026年のトレンドとして、Raspberry Pi クラスタでのスマート農業が注目されています。
通信インフラ
5G 基地局に K3s を配置し、MEC(Multi-access Edge Computing)ワークロードを実行。低レイテンシが要求される処理をネットワークエッジで実行します。
まとめ:エッジ Kubernetes の実現パートナー
K3s は、エッジ/IoT 環境に Kubernetes を展開するための最も実践的なソリューションです:
- 70MB 未満のバイナリで、Raspberry Pi から産業用 PC まで動作
- ARM64/ARMv7 完全対応で、幅広いデバイスをカバー
- エアギャップインストールで、オフライン環境も対応
- Rancher Fleetで、数百のクラスタを GitOps で一元管理
Kubo は、エッジ K3s クラスタの中央管理を月額48,000円〜で提供します。 Captain.AI との統合で、エッジ AI ワークロードの管理も自動化できます。
エッジ Kubernetes の導入・運用のご相談は お問い合わせ まで。