新年、あけましておめでとうございます。
今年もよろしくお願いいたします。
新年一発目は「Ubuntu 18.04LTSベースでJuju/MAASを使ってオンプレ環境でKubernetesをデプロイする方法」について取り上げたいと思います。
前置きは省略して、表題のような環境を作るために必要なものをざっくりとあげます。
- Linux KVMホスト
- MAASをインストールするマシン
- Jujuクライアントをインストールするマシン
- Juju bootstrap(コントローラー)をセットアップするマシン
- アプリケーション(今回の場合はKubernetes)をデプロイするためのマシン
2から5については物理マシンでも仮想マシンでも構わないため、1はあると便利です。当たり前ですが、全て物理マシンで構成する場合は1は不要です。
4や5を仮想マシンで動かすには最低2vCPU、6GB以上のメモリー、40GB以上のストレージが必要です。オペレーションによってはもっと多くのメモリー、ストレージが必要になる場合があります。後々のことを考えるとストレージはLVMで構成する方が良いため、MAASのDefault storage layoutの設定を「LVM layout」に変更することをおすすめします。
JujuとMAASの概要
「Jujuとは?」と「MAASとは?」については、公式サイトをご覧ください。ここでは概要説明は省略します。
JujuとMAASのインストール方法
基本的には次のドキュメントを参考にしてセットアップすれば良いです。執筆日現在の安定版はそれぞれJuju 2.4.7、MAAS 2.4.2です。
MAASでKVM仮想マシンが利用できると便利です。 設定方法は次を参考にどうぞ。
JujuとMAASのセットアップについては以前の投稿も参考になるかと思います。こちらもご確認ください。
- https://tech.virtualtech.jp/entry/2018/03/29/104216
- https://tech.virtualtech.jp/entry/2018/02/05/124557
Juju/MAASのセットアップで注意すべきポイント
IPアドレスなどの設定
Ubuntu Server 18.04 LTSの場合、netplan.ioを利用します。 設定方法は以下を参考にします(公式サイト)。
JujuとMAASのインストールについて
Jujuクライアントは、Ubuntu Server 18.04 LTSの場合はsnapインストーラーを使ってインストールします。macOSの場合は事前にHomebrewをセットアップする必要があります。
JujuでMAAS Cloudを使うには、当然ながらMAASのインストールと設定ができている必要があります。公式サイトのドキュメントを参照してセットアップを行なっておいてください。
- https://docs.maas.io/2.4/en/installconfig-package-install
- https://docs.maas.io/2.4/en/installconfig-webui
MAASで仮想ノードを使う場合はdebパッケージを使ってインストールする必要があるようです。チュートリアルドキュメントを参考に、aptコマンドなどでインストールしてください。
- https://tutorials.ubuntu.com/tutorial/create-kvm-pods-with-maas
- https://docs.maas.io/2.4/en/nodes-add
ただし、このチュートリアルはUbuntu 16.04 LTSとMAAS 2.2を前提に記述されています。Ubuntu Server 18.04 LTSを使う場合は、次の情報を参考にセットアップを進めてください。
チュートリアル「4. Virsh configuration」について
LibVirt、QEMUをUbuntuにインストールすると、defaultというNATネットワークがセットアップされます。この名前のインターフェイスをMAASからPXEブートしたときに使うために、インターフェイスをNATから任意のブリッジインターフェイスを使うように上書きします。例ではKVMホストにbr1というインターフェイスをあらかじめ作っておき、MAAS イメージを配信するSubnetと接続する例が示されています。
忘れがちなのはデフォルトのstorage poolの設定です。これがないとネットワーク的に繋がってもMAASによる仮想ノードへのデプロイメントは失敗します。
またすでにインストール済みですが、MAASノードでvirshコマンドを叩いてKVMホストを参照できる必要があります。virshコマンドはlibvirt-binパッケージかlibvirt-clientsパッケージをインストールするとインストールされます。
チュートリアル「8. Pod configuration」について
次のドキュメントを参照し、追加の情報を入手してください。
現在のMAASでKVMリソースを使うには2つの方法があります。MAAS Pod機能を使うと、VM作成からCommissionまでの処理を自動化できます。MAAS Pod機能を使わずに従来のようにVMだけをMAASに制御させることもできます。
1. MAAS Pod機能を使ってKVMホストをMAASで制御したい場合
後半のセットアップ(MAAS Podsノードの登録)以降の手順を進めます。これにより、MAAS Dashboardから要求した性能のVMを作ってEnlistからアドレスや仮想マシン名の入力、Commissionまでを自動化できます。MAAS Pod機能を使う場合は手動でEnlist、Commissionする必要はありません。
ただし、この設定をした場合は既存のKVMホスト上のVMもMAASに登録されて、MAASによる制御の対象になってしまいます。そのため、クリーンインストールしたKVMホストを使うのが前提です。
2. 従来のようにVMをMAASの仮想ノードとして登録したい場合
「8. Pod configuration」のセットアップで、maasユーザーでvirsh -c qemu+sshコマンドでアクセスできるところまでセットアップできれば、任意のKVM VMをMAASの仮想ノードの一つとして利用できます。MAASでPXEブートできるように設定したVMを起動してEnlistした後、virsh -c qemu+sshアドレスとVM名を手動で設定する必要があります。
設定方法は以下の公式サイトの「KVM guest nodes」を確認ください。
後ほどJujuを使ってアプリケーションをデプロイするときのため、MAASノードにMAAS Tagを設定しておいてください。
ここまでのステップでJujuクライアントとMAASのセットアップができたと思います。前編は以上です。
後編に続きます。