Hyper-V上にk3osマルチノードクラスタを10分程度で構築する


k3osはクラスタを簡単に立てられるということで本当にお手軽かどうか試しました。

結論

server 1台、agent 1台のマルチノードクラスタがお手軽に構築できました。

軽いのでローカル開発用のDocker Desktop for Windowsの代わりにならないかなと思っています。

環境

  • Windows 10 Pro バージョン 1809

  • Hyper-v

  • ksos v0.2.1 k3os-amd64.iso

クラスタ構築

ISOダウンロード(400MB/3分程度)

k3os-amd64.iso をダウンロードします。

Hyper-vに仮想マシン構築(2分*2台=4分程度)

  • 「Hyper-V マネージャー」を起動し、「新規」→「仮想マシン」を選択します。

  • 「次へ」をクリックします。

  • 適当な「名前」を入力して「次へ」をクリックします。

  • とりあえず「第1世代」で「次へ」クリックします。

  • 適当なメモリを「起動メモリ」に設定し、「次へ」をクリックします。

  • 「接続」は「Default Switch」にします。ホスト、ゲスト間の通信が可能で、NATでインターネットにも接続できます。

  • 「名前」「サイズ」に適当な値を入力し「次へ」をクリックします。

  • ブートイメージは先ほどダウンロードした「k3os-amd64.iso」を指定します。「次へ」をクリックします。

  • 「完了」をクリックします。

  • 「接続」でコンソールを開き、「起動」します。

  • 「k3OS LiveCD & Installer」を選択します。

  • ユーザー「rancher」でログインします。

  • ログインできました。

  • 以上を繰り返し2台インストールします。

クラスタセットアップ(2分*2台=4分)

クラスタを以下のようにセットアップします。

以下の2台をセットアップします。NATで外部接続もでき、2台は内部ネットワークで互いに通信できる状態です。

マシン名 役割
k3os-21391 server
k3os-29614 agent

serverをセットアップ

  • インストール直後はシングルノードクラスタで動作しています。

  • 起動時のメッセージにあるようにsudo os-configでセットアップを行います。
    時間節約のためディスクへのインストールは行いません。
    このマシンを役割serverとしてセットアップします。
    cluster secrettestclusterとしました。

  • agentからの接続で必要となるので、ifconfigserver側のIPを調べておきます。

agentをセットアップ

  • 最初はシングルノードです。

  • sudo os-configでセットアップを開始します。

    役割agentとして設定します。

    serverのURLは、前の手順で取得したIPアドレスから以下のように指定します。

    cluster secretは、serverセットアップ時に設定したtestclusterを入力します。

ノード追加の確認

  • kubectl get nodesでクラスタ構成になっていることを確認します。(server側のコンソールで実行します。)

想定通り、2台のクラスタ構成になっています。10分前後でできました!

動作確認(時間計測対象外)

nginxをデプロイしてアクセスできるか試してみます。

  • Deploymentをデプロイ
kubectl run test-nginx --image=nginx --port=80 --replicas=2
kubectl get pods -o wide

2つのノードにスケジューリングされています。

  • service設定
kubectl expose deployment/test-nginx --type="NodePort" --port 80
kubectl get service

  • ホスト側から接続

アクセスできました。ちゃんと動作しているようです。

参考URL

Ahmer's SysAdmin Recipes - Install Lightweight Kubernetes (K3s) Cluster with k3OS