minikube インストール

kubernetesをローカル開発環境に構築する場合、minikubeが比較的手軽です。
MacOSでは、Dockerと同様、Linux実行環境としてhyperkitを選択でき、VMより透過的でレスポンスの速い環境を利用できます。

minikube起動に必要なコンポーネントは以下のとおりです。

  • dockerランタイム: Docker for Mac
  • kubectl: Google Cloud SDK由来、またはhomebrewでインストール
  • minikube: minikubeをインストール
  • Linux仮想環境ドライバー: hyperkit-driverをインストール

minikubeのインストールは、 公式チュートリアルに掲載されているとおり、コマンドをcurlでネットワーク取得して配置するだけです。

hyperkitドライバーも、 minikube GitHubの解説のとおり、コマンドをcurlでネットワーク取得して配置するだけです。

必要なファイルが揃ったら、minikube startでクラスタを起動できます。
初回起動の際に、150MB程度のISOイメージとkube-systemのコンテナイメージを自動ダウンロードして立ち上がります。

$ minikube start --vm-driver=hyperkit --cpus 2 --memory 8192
Starting local Kubernetes v1.10.0 cluster...
Starting VM...
Downloading Minikube ISO
 150.53 MB / 150.53 MB [============================================] 100.00% 0s
Getting VM IP address...
Moving files into cluster...
Downloading kubeadm v1.10.0
Downloading kubelet v1.10.0
Finished Downloading kubelet v1.10.0
Finished Downloading kubeadm v1.10.0
Setting up certs...
Connecting to cluster...
Setting up kubeconfig...
Starting cluster components...
Kubectl is now configured to use the cluster.
Loading cached images from config file.

この時点でkubectlのコンテキストがminikubeを指しているので、nodeを確認するとminikubeがnodeとして起動していることが分かります。

$ kubectl get nodes
NAME       STATUS    ROLES     AGE       VERSION
minikube   Ready     master    43s       v1.10.0

ここまで来たら、あとは一般的なkubernetesの運用と変わりません。

まとめ

すでにdockerを利用している環境であれば、クラスタ構築といっても管理コマンドとドライバを計2ファイルコピーするだけで立ち上がるため、セットアップは驚異的に手軽と言えます。

これまで、コンテナベースでWebサービスの環境を用意するとなると、productionは kubernetes、dev環境は Docker Compose という不揃いな環境になりがちでした。
minikubeを活用すると、コンテナ操作をkubectlに統一し定義ファイルもkubernetesベースに統一できるため管理コストが下がります。

逆にdockerにも、kubernetesを操作するメタコマンドが導入されたのですが、dockerの基礎的なコマンドではなくDocker Swarmベースであるため「Swarmで環境を統一する」と決めたプロジェクト以外では利用しづらい面があります。

kubernetesとdockerを比較すると、Google Kubernetes EngineやAmazon EKSなど、productionの選択肢でkubernetesが圧勝したため、Appサーバ+RDBMSといった複数コンテナのネットワーク構成では、kubernetesを採用する方が合理的な情勢と言えるでしょう。

中馬崇尋
Chuma Takahiro