見出し画像

Docker + k3s で始めるホームラボ

普段クラウドサービス上のKubernetesを触っていて、「自宅でも気軽に試せる環境があれば...」と思ったことはありませんか?
今回は、軽量なKubernetesディストリビューションであるk3sとDockerを組み合わせて、自宅でKubernetes環境を構築する方法を紹介します。


ホームラボを運用する注意点

先に自宅でサーバ運用する場合の注意点というよりかは警告をしておきます。
周りでサーバを運用している人がいれば聞いてみるといいかもしれませんが、自宅でサーバ運用していた方が火事になっていたりするので、自宅でやるぐらいならVPSとかDigital Oceanでやった方が安全です。
料金はかかるかもしれませんが。

なぜホームラボが必要か

クラウド上のKubernetesは便利ですが、クラウドのみにクラスタがあると以下のような問題点を感じます。

  • クラウド利用料金が発生する

  • ネットワーク環境に依存する

  • 自由な実験がしづらい

  • 失敗したときのコストが大きい

これらの課題を解決するのが、自宅のホームラボ環境です。
特に開発者にとって、自由に実験できる環境を持っていることは重要です。

k3sを選ぶ理由

k3sは、Kubernetesよりも機能を最小限に減らし、バイナリサイズや動作時に必要なCPU、メモリのスペックを減らしたものです。

  • 通常のKubernetesの機能を維持しつつ、バイナリサイズを抑えた軽量設計

  • シンプルなインストール手順

  • コミュニティの活発な活動

  • IoTデバイスや小型マシンでも動作

私も実際にミニPCで動かしていますが、想像以上に快適に動作しています。
Raspberry Piでも動作させている人たちがいます。

環境構築の手順

Ubuntu環境で動作させることを前提として話を進めてます。

1. Dockerのインストール

公式の手順通りに進めてDockerをUbuntuにインストールしていきます。

# パッケージの更新
sudo apt-get update

# Dockerのインストール準備
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

# Dockerのインストール
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

WindowsやmacOSの場合は、Docker Desktopをインストールするのが手っ取り早いです。

2. k3sのインストール

k3sのインストールは非常にシンプルです。

# Dockerを使用するオプション付きでインストール
curl -sfL https://get.k3s.io | sh - 

# クラスタの状態確認
sudo k3s kubectl get node

3. サンプルアプリのデプロイ

動作確認として、簡単なnginxをデプロイしてみましょう。
以下のマニフェストファイルを作成します。

# sample-nginx.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: sample-nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: sample-nginx
  template:
    metadata:
      labels:
        app: sample-nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: sample-nginx-service
spec:
  type: NodePort
  selector:
    app: sample-nginx
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
    nodePort: 30080

作成したマニフェストを適用します。

sudo k3s kubectl apply -f sample-nginx.yaml

http://localhost:30080 にアクセスすると、nginxのデフォルトページが表示されるはずです。

運用のポイント

実際に自宅で運用するには、以下の点に注意が必要です。

  • メモリ容量は余裕を持たせる(最低2GB以上推奨)

  • 外部公開する際はセキュリティ設定を忘れずに

  • 定期的なバックアップを忘れずに

  • アップデートは計画的に

特にRaspberry Piで運用する場合には、SDカードが破損する問題がしばしばあるので注意が必要です。

まとめ

k3sとDockerを組み合わせることで、手軽にKubernetes環境を構築できることが分かりました。
自宅で気軽に試せる環境があれば、新しい技術の検証や学習がより効率的に進められます。

ホームラボの次回は、このホームラボ環境を使って具体的なアプリケーションをデプロイする方法について紹介する予定です。

いいなと思ったら応援しよう!