category

minikubeの設定・起動

ホストディレクトリのmount

MacOSなどのホストディレクトリにコンテナからアクセスするには、起動時の--mountオプションが手軽です。

$minikube start --mount --mount-string /path/to/localDir:/minikube_dir

minikubeのアーキテクチャは、ホストPC / minikube VM / コンテナOSの3層構造になっており、コンテナ起動時のvolumes.hostPath設定ではminikubeVMのPathを参照します。

複数のPathを参照する場合、--mount-stringには最上位のディレクトリを1つ指定するため、ディレクトリ構成を工夫することが事実上必要になりそうです。

ホストディレクトリの参照を確認したい場合には、minikube sshコマンドでminikube VMのレイヤにログインできるため、この環境でlsすると良いでしょう。

ただし、Directories provisioned by hostPath provisioner are only writeable by rootが現状オープンであるとおり、minikubeのhostPathはパーミッション設定に難があります。
マウントしたディレクトリ内のファイルオーナーのUID, GIDがホストの番号になっているため、コンテナ上のUIDと一致しないのです。

コンテナ上のプロセスがrootであればファイルパーミッションを超越して読み書き可能ですが、DBMSなど一般ユーザーによる書き込みの必要なvolumeの利用ケースでホストOS上にファイルを置きたい場合、まだ適切なサポートがない状況のようです。

※ minikube VM上にファイルを置く構成であればコンテナ起動時にsecurityContext.privileged: trueを指定すると動作します。minikube VM上のファイルオーナーがコンテナ上のUIDになります。

minikubeのVM設定

minikubeの起動時デフォルト設定は、minikube configで設定可能で、~/.minikube/config/config.jsonに記録されています。

config.jsonに記録された設定はminikube config viewで確認でき、minikube startのオプション指定を省略可能です。

$ minikube config set memory 8192
$ minikube config set cpus 2
These changes will take effect upon a minikube delete and then a minikube start

minikube v0.26.0以前では、vm-driverオプションがhyperkitをサポートしておらず、setするとエラーになりますが、~/.minikube/config/config.jsonに直接記載すると機能します。

プロファイル切り替え

minikubeはprofile機能を通じて、独立した環境を提供しています。
minikube start -p profile_nameでプロファイルを切り替え可能です。オプション無指定時のデフォルトプロファイル名はminikubeです。
プロファイル別の設定は、~/.minikube/profiles/にあります。

ただし、minikube v0.26.0で確認した範囲では、プロファイルを指定すると一度も起動しない、という事象に遭遇しています。

クラッシュ後に起動しなくなった際のリセット方法

特定のプロファイルがクラッシュした後に起動しなくなった場合、ホスト仮想マシンのイメージが破損していることがあります。

プロファイル別の仮想マシンイメージは~/.minikube/machinesディレクトリにプロファイル別にあります。
不調なイメージのディレクトリをリネーム(完全に不要ならminikube deleteで削除)すると、次回そのプロファイルでminikube startした際にイメージ新規作成から開始します。