ytooyamaのブログ

サーバ構築とか、仕事で発見したこととか、趣味のこととかを書いています。

macOSではDockerドライバーでMinikubeを動かすとIngressが使えない

KubernetesのIngressの使い方を改めて勉強中です。 Minikubeを使うと、お試し環境を簡単に作れそうです。

kubernetes.io

では早速動かしてみましょうか。

$ minikube config set driver docker
$ minikube start --container-runtime=containerd --kubernetes-version=v1.20.4  --cni=calico

Ingressアドオンを有効化してみます。

$ minikube addons enable ingress

すると、なんということでしょう! Ingressアドオンの有効化に失敗したではありませんか。

...
❌  Exiting due to MK_USAGE: Due to networking limitations of driver docker on darwin, ingress addon is not supported.
Alternatively to use this addon you can use a vm-based driver:

    'minikube start --vm=true'

To track the update on this work in progress feature please check:
https://github.com/kubernetes/minikube/issues/7332

現時点ではDocker for macでDockerコンテナーベースのminikubeでIngressアドオンは動かないようです。エラーメッセージが分かりやすくて良いですね。 回避策はVMベースのドライバーを使うことだそうです。

github.com

現時点(2021/03/01)では、以下が対象のVMベースのドライバーです。

  • Hyperkit - VM
  • VirtualBox - VM
  • Parallels - VM
  • VMware - VM

HyperkitはmacOS専用のドライバーです。Hyperkitドライバーのページに書かれているように、Homebrewなどでインストールすることもできるのですが、実はDocker for macをインストールしていてかつDockerがMacで実行中であれば、そのドライバーを使えます(まあ、それもそのページに書かれていますが)。

その他のドライバーはそれぞれインストールされていればドライバーとして使えます。特にVirtualBoxはLinuxでもWindowsでもmacOSでも共通して使えるので便利なのかもしれません。ちなみにHyperkitドライバーを使うときは次のように使います。

$ minikube delete
$ minikube config set driver hyperkit
$ minikube start --container-runtime=containerd  --cni=calico --kubernetes-version=v1.20.4

$ minikube addons enable ingress

Hyperkitドライバーは割と素早く動いてくれるので好きなドライバーです。

このブログサイトはJavaScriptを使っていますが、読み込んでいるJavaScriptは全てはてなが提供しているものであり、筆者が設置しているものではありません。