2019年4月号にコンテナオーケストレーションシステムである「Kubernetes」は、プロダクション用途としてコンテナを使う上で重要な地位を得るに至りました。そこで今回は、そのKubernetesをローカルマシンでかんたんにお試しできる「microk8s」を紹介します。シングルノードにのみ対応したKubernetes環境Kubernetesと言えば、Dockerの運用に疲れた人をさらに地獄の谷に突き落とすツールとして、現在もっとも人気のあるソフトウェアのひとつです。単なるDockerを便利に使えるようにするもの、なんて安易な考えで手を出すと、まずはPod/ReplicaSet/Deployment/Serviceなどの一般的な意味はわかるものの、Kubernetes上の概念がよくわからない単語が襲ってきて、最終的にサーバーより先に脳が死にます。本気で運用する気があるなら、まずはGoogleで働けるぐらいの優秀な人材を用意してもらいましょう。理解して使えばとても便利なツールです。microk8sはそんなコンテナ被害者をよりカジュアルに増やすためのソフトウェアです。Topicsの2018年12月14日号でも「1分以内に作れるKubernetes環境」として紹介されているように、microk8sを使うとKubernetes学習用のシングルノードの環境をすぐに構築できます。現時点ではシングルノードしか対応していないように、あくまで学習用・プロトタイピング用と割り切ったほうが良いでしょう。ローカルにKubernetes環境を構築できるMinikubeとの違いのひとつが「snapパッケージ」として提供されている点です。KubernetesはもとよりそのベースとなるDockerツールも含めて、ワンステップでインストールできます。パッケージ化されているため、アップグレードはもちろんのこと、削除も簡単です。snapということでシステム上の他のコンポーネントからはできるだけ分離した状態で利用できます。Piにインストールすることも可能です。Piでの利用は実用的とは言い難いですが、チュートリアルを試してみる程度なら十分でしょう。microk8sのインストールmicrok8sのインストール自体はとても簡単です。LTSでも動作するはずです。パッケージの情報を表示してみましょう。classic3月10日時点で、1.11から1.13までのリリース版と、1.14のベータ版をサポートしています。3月頭にリリースされた1.13.4は、3月10日時点ではまだcandidateチャンネルです。stableチャンネルに落ちてくるものと思います。今回は1.13系のstableチャンネルをインストールしましょう。microk8sは上記の情報にも掲載されているように、classicモードでインストールする必要があります。これはKubernetesが、ホストの主にネットワーク設定などを変更する必要があるためです。disabledインストールしたら、microk8s.statusコマンドで環境の準備が整うまで待ってください。「⁠1分以内に作れる」との触れ込みではあるものの、ホストマシンのスペックやネットワーク環境によってはさらに時間がかかります。microk8s.statusの結果からもわかるように、各種アドオンはインストール直後は無効化されています。snapでインストールしたコマンドは「microk8s.」のプレフィックスが付きます。「microk8s.kubectl」などのコマンド名になるのです。7m1sもし普通のKubernetesと同じようにプレフィックス無しでkubectlコマンドを実行したいなら、次のようにエイリアスを設定してください。kubectl次のようにkubectlコマンドを使えるようになります。adminちなみにsnapパッケージ版のmicrok8sはDockerも同梱しています。microk8s.dockerでDockerコマンドを直接実行できるのです。json-file(以下略)Deploymentをrunするためしにnginxコンテナイメージを、レプリカ数3でデプロイしてみましょう。3各種ステータスを表示すると、無事にNginxが3インスタンス立ち上がっていることがわかります。22sdockerコマンドで見ても、結果は同じです。k8s_nginx_nginx-7cdbd8cdc9-br6ck_default_53cfef99-42f3-11e9-9fa6-525400123456_0Deploymentsの情報を表示すると、次のような結果になっています。3要するに普通のKubernetesと同じ使い方になっているというわけですね。NodePortで80番ポートをexposeすると、microk8sをインストールしたアドレスに対してHTTPアクセスできるようになります。10s「CLUSTER-IP」はホストローカルとしてアクセスできるIPアドレスです。「⁠PORT」のコロンの後ろが外部に見えているポート番号です。次のようなアクセス方法が可能です。ホストマシンの内部から「http://10.152.183.239/」でアクセスするホストマシンの外から「http://ホストマシンのIPアドレス:30890/」でアクセスする上記のいずれかの方法を実施すれば、NginxのWelcomeページが表示されます。ダッシュボードアドオンを有効化するmicrok8s.enableコマンドを利用すれば、各種アドオンを有効化できます。ここでは「ダッシュボード」を有効化してみましょう。ダッシュボードはDNSアドオンも必要なので両方共有効化します。enabledkube-system側にdashboardのIPアドレスが表示されるはずです。2m19s上記だと「https://10.152.183.23:443」ですね。ClusterIPなので、このままだとローカルマシンからしかアクセスできないことに注意してください。用済みになれば削除アドオンはmicrok8s.disableコマンドで無効化できます。delete」コマンドを使うことになるでしょう。勉強がてらいろいろ試した結果にっちもさっちもいかなくなったのなら、「⁠microk8s.reset」コマンドで環境をまっさらにできます。releasedインストール直後とほぼ同じ状態になると思えば良いでしょう。NAMESただし取得したDockerイメージはすぐには消されませんので注意してください。109MB(以下略)Kubernetes環境自体が不要になったら、snapパッケージを削除してしまいましょう。2019年4月号に繰り返しになりますが、microk8sはあくまで学習用という位置づけです。Reportでは、水野さんが「よりまっとうな」Kubernetesのインストール方法を解説してくれています。Reportの記事を参考に、マルチノードなクラスターを作ってみてはいかがでしょうか。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します⁠。個別にライセンスが設定されている記事等はそのライセンスに従います。