誤自宅KaaSの作り方

4.2K Views

May 20, 25

スライド概要

Kubernetesはどこのご家庭にも1クラスタはあると思いますが、ご家族で共有されているというケースが多いと伺います。しかし、1人1クラスタほしいと考える方も多いのではないでしょうか?今回はそんな方のために、Cluster APIを使って自宅にKaaSを構築する方法を紹介します。

profile-image

プラットフォームエンジニア/Kubernetes/Golang

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

誤自宅KaaSの作り方 2025/5/20 株式会社日立製作所 AI&ソフトウェアサービスビジネスユニット マネージド&プラットフォームサービス事業部 AIサービス本部 アーキテクチャセンタ 松田 元輝 © Hitachi, Ltd. 2025. All rights reserved.

2.

自己紹介 会社: 日立製作所 名前: 松田 元輝(まつだ げんき) 仕事: プラットフォームエンジニアリング X(旧Twitter): @maki_644 © Hitachi, Ltd. 2025. All rights reserved. 1

3.

はじめに 独自調査によるとKubernetesクラスターが 1台以上あるという世帯は全体の70% しかし、その多くは1世帯あたり1クラス ターのみ運用しているという現状でした。 ※フィクションです © Hitachi, Ltd. 2025. All rights reserved. 2

4.

はじめに 今回は皆さんのそんな声にお応えして、自宅に KaaS (Kubernetes as a Service)を構築する方法を解 説します。 \こ こで 動 いて るよ / © Hitachi, Ltd. 2025. All rights reserved. 3

5.

アジェンダ 1. 全体像 2. 採用技術 3. Cluster APIの説明 4. ClusterClassの説明 5. Kubernetesクラスターの作成方法 © Hitachi, Ltd. 2025. All rights reserved. 4

6.

1. 全体像 Cluster APIとProxmox VEを 使ってKaaSを実現。 Clusterというリソースを Management Cluster上に作 成することで、オンデマンド でK8sクラスターを払い出せ る仕組み。 © Hitachi, Ltd. 2025. All rights reserved. 5

7.

2. 採用技術 © Hitachi, Ltd. 2025. All rights reserved. 6

8.

Proxmox VE オープンソースのVM管理プ ラットフォーム Cluster APIから指示を受け てK8sクラスターのコント ロールプレーンやワーカー ノード用のVMを動的に作成 する。 © Hitachi, Ltd. 2025. All rights reserved. 7

9.

K3s 軽量版K8s 素のK8sと比べると、Static Podが使えないなど一部機 能が制限されるらしい。(詳 しく知らない) Management Clusterに使 う。 © Hitachi, Ltd. 2025. All rights reserved. 8

10.

Cluster API Kubernetesクラスターのプロ ビジョニングやアップグレー ドなど、ライフサイクル管理 を宣言的に行うツール 主にCluster APIの機能を活 用して、KaaSを実現してい る。 © Hitachi, Ltd. 2025. All rights reserved. 9

11.

3. Cluster APIの説明 © Hitachi, Ltd. 2025. All rights reserved. 10

12.

Cluster APIがK8sクラスターを払い出す仕組み © Hitachi, Ltd. 2025. All rights reserved. 11

13.

Cluster APIにはQuick Startがある Cluster APIのインストールからK8sクラスターのマニフェスト生成、プロビジョニングまで 一通り動かせるようになる。(説明は割愛) Quick Start - The Cluster API Book © Hitachi, Ltd. 2025. All rights reserved. 12

14.

Quick Startで生成されるマニフェスト © Hitachi, Ltd. 2025. All rights reserved. 13

15.

Quick Startで生成されるマニフェスト K8sクラスターのマニフェストが大きすぎる KaaS利用者がインフラやKubeadmの設定を意識しないといけない ↓ KaaSとしては微妙 © Hitachi, Ltd. 2025. All rights reserved. 14

16.

ClusterClassを使いましょう Clusterをテンプレート化することで、Clusterの定義をシンプルにする。 ユーザーはインフラ、Kubeadmの設定を意識することなく、Clusterを作成できる。 \タッタコレダケ/ Cluster Class インフラ Cluster ClusterClass を指定 Kubeadm 作成 KaaS管理者 作成 apiVersion: cluster.x-k8s.io/v1beta1 kind: Cluster metadata: name: cluster01 namespace: kaas spec: topology: class: kubeadm version: v1.30.5 controlPlane: replicas: 1 workers: machineDeployments: - class: default-worker name: cpu-node replicas: 1 variables: - name: controlPlaneHost value: "192.168.10.210" - name: ipV4Addresses value: - "192.168.10.211-192.168.10.214" KaaS利用者 © Hitachi, Ltd. 2025. All rights reserved. 15

17.

4. ClusterClassの説明 © Hitachi, Ltd. 2025. All rights reserved. 16

18.

ClusterClassの前提 ClusterClassは以下のリソースを組み合わせて、クラスターの構成を決定する。 リソース 説明 ProxmoxMachineTemplate 払い出すVMの設定 KubeadmControlPlaneTemplate コントロールプレーンの設定 KubeadmConfigTemplate ワーカーノードの設定 ProxmoxClusterTemplate ネットワークなどクラスター全体の設定 © Hitachi, Ltd. 2025. All rights reserved. 17

19.

ProxmoxMachineTemplate VMの設定。 • CPU • メモリー • ディスク容量 • 複製元ゴールデンイメージ © Hitachi, Ltd. 2025. All rights reserved. 18

20.

ProxmoxMachineTemplate ワーカーノードの例(コントロールプレーン用にも作成する) © Hitachi, Ltd. 2025. All rights reserved. 19

21.

KubeadmControlPlaneTemplate コントロールプレーンのブートストラッ プ設定。 • kubeadm initのオプション指定 • OSのユーザー設定 • kube-vipのStaticPod(※仮想IPは クラスターごとに異なるので、 ClusterClassからパッチで設定す る) © Hitachi, Ltd. 2025. All rights reserved. 20

22.

KubeadmControlPlaneTemplate © Hitachi, Ltd. 2025. All rights reserved. 21

23.

KubeadmConfigTemplate ワーカーノードのブートストラップ設 定。 • kubeadm joinのオプション指定 • OSのユーザー設定 © Hitachi, Ltd. 2025. All rights reserved. 22

24.

KubeadmConfigTemplate © Hitachi, Ltd. 2025. All rights reserved. 23

25.

ProxmoxClusterTemplate ネットワークなどクラスター全体の設 定。 • VMに割り当てるIPアドレスの範囲 • コントロールプレーンのエンドポイ ント ※どちらもクラスターごとに異なる値 なので、ClusterClassからパッチで設 定する © Hitachi, Ltd. 2025. All rights reserved. 24

26.

ProxmoxClusterTemplate © Hitachi, Ltd. 2025. All rights reserved. 25

27.

ClusterClassの構造 クラスター構成定義、パラメーター定義、パッチ定義を行う。 クラスター構成定義 : 各テンプレートリソースを組み合わせて、クラスターの構成を決める。 コントロールプレーンの構成 ワーカーの構成 ProxmoxMachineTemplate ProxmoxMachineTemplate KubeadmControlPlaneTemplate KubeadmConfigTemplate インフラの構成 ProxmoxClusterTemplate パラメーター定義 : クラスターごとに異なるIPアドレスをパラメーター化する。 パッチ定義 : IPアドレスをKubeadmControlPlaneTemplateとProxmoxClusterTemplateに適用する。 © Hitachi, Ltd. 2025. All rights reserved. 26

28.

ClusterClassの構造 クラスター構成定義 : 各テンプレートリソースを組み合わせて、クラスターの構成を決める。 © Hitachi, Ltd. 2025. All rights reserved. 27

29.

ClusterClassの構造 パラメーター定義 : クラスターごとに異なるIPアドレスをパラメーター化する。 © Hitachi, Ltd. 2025. All rights reserved. 28

30.

ClusterClassの構造 パッチ定義 : IPアドレスを ProxmoxClusterTemplate とKubeadmControlPlaneTemplateに適用する。 ClusterClass ProxmoxClusterTemplate リソース特定 置き換え 置き換え © Hitachi, Ltd. 2025. All rights reserved. 29

31.

ClusterClassの構造 パッチ定義 : IPアドレスをProxmoxClusterTemplateと KubeadmControlPlaneTemplate KubeadmControlPlaneTemplate に適用する。 ClusterClass © Hitachi, Ltd. 2025. All rights reserved. 30

32.

5. Kubernetesクラスターの作成方法 © Hitachi, Ltd. 2025. All rights reserved. 31

33.

Kubernetesクラスターの作成方法 ClusterリソースをManagement Clusterに作 成することで、Kubernetesクラスターが払い 出される。 © Hitachi, Ltd. 2025. All rights reserved. 32

34.

Clusterの構成 ClusterClassを指定 © Hitachi, Ltd. 2025. All rights reserved. 33

35.

Clusterの構成 ClusterClassのworkerに定義した MachineDeploymentClassを指定 © Hitachi, Ltd. 2025. All rights reserved. 34

36.

Clusterの構成 ClusterClassのvariablesに定義した、コントロールプ レーンのエンドポイントIPアドレスと、VMに使えるIPアド レスレンジを指定 © Hitachi, Ltd. 2025. All rights reserved. 35

37.

kubeconfigの取得 clusterctl get kubeconfig <クラスター名>でkubeconfigを取得することができる。 © Hitachi, Ltd. 2025. All rights reserved. 36

38.
[beta]
kubeconfigの取得
適当なファイルにcluster01のkubeconfig書き込んで、環境変数KUBECONFIGに指定す
ると、払いだしたcluster01に接続できるようになる。

clusterctl get kubeconfig cluster01 -n kaas > ~/.kube/cluster01.config
export KUBECONFIG=${HOME}/.kube/config:${HOME}/.kube/cluster01.config

KUBECONFIGは:で複数ファイルをつなげることができる

© Hitachi, Ltd. 2025. All rights reserved.

37

39.

詳しくはZennで 詳しくはZennに投稿してある記事をご覧ください。 誤自宅KaaSその1 Cluster APIインストール編 誤自宅KaaSその2 ClusterClass設定編 ← 今回の説明範囲 誤自宅KaaSその3 ストレージ設定編 © Hitachi, Ltd. 2025. All rights reserved. 38

40.

最後に 1世帯当たりの1台もKubernetesクラ スターをもっていない と回答した方に その理由を伺ってみました。 ※フィクションです © Hitachi, Ltd. 2025. All rights reserved. 39

41.

「そんなことやって喜ぶの君くらいだよ」 © Hitachi, Ltd. 2025. All rights reserved. 40

42.

「そんなことやって喜ぶの君くらいだよ」 誠に遺憾です © Hitachi, Ltd. 2025. All rights reserved. 41

43.

他社商標表示 TwitterはX Corp.の登録商標です。 XはX Corp.の商標です。 ProxmoxはProxmox Server Solutions Gmbhの登録商標です。 KubernetesはThe Linux Foundationの登録商標です。 K8sはThe Linux Foundationの登録商標です。 K3sはThe Linux Foundationの商標です。 Zennはクラスメソッド株式会社の登録商標です。 © Hitachi, Ltd. 2025. All rights reserved. 42