情報畑でつかまえてロゴ
本サイトは NTTテクノクロスが旬の IT をキーワードに
IT 部門が今知っておきたい最新テクノロジーに関する情報をお届けするサイトです

microk8sを使ってkubernetesクラスタを構築してみる + metallbアドオンお試し

microk8sを用いてkubernetesクラスタを構築する

microk8sを使ってkubernetesクラスタを構築してみる + metallbアドオンお試し

はじめに

NTTテクノクロスではkuberenetesの検証やkubernetes構築支援、アプリケーションのkubernetes移行支援などを行っています。

アプリケーション開発をしていく中で、アプリケーションの管理をkubernetes上で行いたいが、kubernetes構築のハードルが高く、なかなか手が出せないといったことはありますか。

そういった場合、microk8sを用いると簡単に単ノード構成のkubernetesを構築することができます。加えて、microk8sはkubernetesクラスタも構築することができます。

今回はこの「microk8sを用いたkubernetesクラスタ構築」を試してみます。

また、microk8sのadd-onとして提供されている「metallb」も使ってみます。

metallbはkubernetes上のサービスにExternal-IP(外部IP)でアクセスできるようにする機能です。

kubernetesでアプリケーションを管理する場合、通常kuberentesのネットワークの上でアプリケーションが動作するため、kubernetes上のアプリケーションに外部から接続することはできません。

アプリケーションに接続する方法としてサービスをNodeportで起動し、ホストのポートと紐づけそこにhaproxy経由でアクセスさせるといった方法がありますが手間がかかってしまいます。

しかし、metallbを用いればkubernetesのサービスをLoad Balancerで起動するだけで、metallbが外部から接続可能なExternal IPを割り振り外部からアクセスできるようになります。

今回は以下の構成でkubernetesクラスタを構築します。

microk8s-1.png

今回の構成について説明します。

まず、今回のkubernetesクラスタではmasterノード1台、workerノード1台のクラスタを構築します。マシンのOSはUbuntu 20.04を使用しました。

masterノード内のpodから説明します。

黄緑色の枠内で囲んだpodはkubernetes構成する基本的なpodです。これらはmicrok8sを用いると自動で構築されます。

次にオレンジ色で囲んだpodはmetallbを構成するpodです。これらも後述しますが、microk8sを用いる場合はコマンドを一つ入力することで構築されます。

masterノードで動作するpodは以上です。

次に、workerノードのpodについて説明します。

黄色い枠で囲んだpodはnginxのpodです。これはkubernetes上で動作するアプリケーションとして利用します。

metallbで外部から接続できるExternal IPを付与して接続確認を行うために利用します。

microk8s-2.png

 

 

microk8sでkubernetesを構築する

microk8sのインストールする

microk8sを用いた単ノードのkubernetesはインストールが完了した時点で構築が完了します。

microk8sの最新版をインストールする場合は以下コマンドを実行します。インストールはsnapコマンドを利用を推奨されているため、snapコマンドを用います。

 

microk8sコマンドの権限設定

microk8sではroot権限を必要とするコマンドをシームレスに実行できるようmicrok8sグループを作成しています。

任意のユーザをmicrok8sグループに追加します。

また.kube配下のキャッシュディレクトリにアクセスできるよう権限を変更します。

権限の変更を適用するために、セッションの更新を行います。

 

kubernetesの動作確認

kubernetesが動作しているかをkubectlコマンドで確認してみます。

microk8sで構築したkubernetesでkubectlコマンドを使うには「microk8s kubectl」とする必要があります。

 

これで単ノードのkubernetesが構築ができました。

 

microk8sでkubernetesクラスタを構築する

次はkubernetesクラスタを構築していきます。

クラスタ構築はmicrok8sのコマンドを実行することで簡単に行えます。

 

準備

まず、microk8sがインストールされたマシンを複数台用意しましょう。

次にmasterノードとしたいマシン上で「microk8s add-node」コマンドを実行します。

このコマンドを実行することで、workerノードをmasterノードにjoinするためのコマンドが出力されます。

以下は実行例です。

 

クラスタリング

workerノードとしたいマシンで先ほど出力されたjoinのコマンドを実行します。

 

masterノードでクラスタにjoinされていることを確認します。

 

これでkubernetesクラスタの構築ができました。

 

microk8sのadd-onを使ってみる

add-onとは

microk8sでは複数のadd-onが実装されておりコマンドを実行することで簡単に利用することができます。

利用できるアドオンは「microk8s status」で確認することができます。

以下は実行例です。

 

今回はkubernetes上のサービスに対し外部から接続できるExternal IPアドレスを付与できるmetallbを使ってみます。

 

metallbを有効にする

add-onを有効化するためには「microk8s enable <アドオン名>」のコマンドを実行するだけです。

metallbを有効化してみます。

 

構成図では以下部分となります。

microk8s-3.png

有効化する際にサービスに付与するIPアドレスのレンジを指定する必要があります。

設定するネットワークはmetallbで利用したいものを入力してください。

今回はクラスタを構築したネットワークと同じネットワークを指定します

 

metallbが有効化されたことによりmetallbを構成するpodやサービスがデプロイされます。

 

 

nginxのコンテナを作成し外部から接続する

metallbの機能を試すために簡単なnginxコンテナをデプロイし、外部からアクセスしてみます。

以下の内容でnginxのマニュフェストファイルを作成し、kubernetesにデプロイします。

 

構成図では以下部分となります。

 

microk8s-4.png

 

 

作成したマニュフェストファイルを使用し、k8sにデプロイします。

 

デプロイされたことを確認します。

 

EIPを経由してnginxに接続できることを確認します。

 

終わりに

今回はmicrok8sを用いてkubernetesクラスタを構築しました。

microk8sはインストールだけで単ノードのkubernetesを構築することができ、

kubernetesクラスタを構築する際は、masterノードで「microk8s add-node」コマンドを実行し、workerノードで「microk8s join」コマンドを実行するだけで簡単に構築することができます。

そのため、kubernetesを用いたアプリケーションの開発を行いたいけれど、

kubernetesの構築はちょっと......といった方にとても向いています。

 

また、今回はアドオンのうちmetallbのみを使ってみました、そのほかにも多くのアドオンが提供されています。

 

これらのアドオンも「microk8s enable」コマンド一つを実行するだけで利用することができるため、簡単に試すことができます。ぜひお試しください。

 

NTTテクノクロスではコミュニティの最新動向もキャッチアップしつつ、これまでに培ってきたkubernetes構築・運用のノウハウを活かした幅広いソリューションをご用意しております。 Ubuntu/OpenStack/OSS製品について何かお困りのことがございましたら、是非お声掛けください。

OSSクラウド基盤トータルサービス

※NTTテクノクロスではUbuntuの開発元であるCanonical社の商用サポート日本語窓口業務も行っています。

 

参考サイト

MicroK8s quick start guide https://microk8s.io/docs/

Multinode microk8s https://microk8s.io/docs/clustering

連載シリーズ
テクノロジーコラム
著者プロフィール
飯山 直樹