当社はIT技術のオンライン教育を得意としたセミナー専門会社です。

ITエンジニアの技術力UPをお約束します。

Kubernetes:ローカルフォルダをPod側のドキュメントルートにマッピングする事にハマったの巻

普段クラウド側の外部共有ディスクを使ってpodへマウントするためあまり問題になることもなかったが、Linux上でminikubeを使った簡単なプラクティスを作ろうとやってみたら思いっきりはまってしまった。3時間くらいどうしてだろう??? エラー出ていないのにマウントされずブラウザー上にForbbidenがでてしまう。

やろうとした事

2つのkubernetes用のマニフェストファイルを用意して、Rocky Linux上でPHP7.4のコンテンツを表示させるサーバを作ろうとしていた。1つのマニフェストファイルはpodの生成&Deployを生成するファイル。もう一つはサービスを生成するファイルを準備した。特にエラーが出ていないがなぜかマウント出来ていないからコンテンツが表示されずForbbidenの表示。

POD&DEPLOY生成(kube-pod-deploy.yaml)

Service生成(kube-serv.yaml)

原因を調べて気がついた事

ここを読んで気がついた。そうかなるほど。

minikube 永続ボリュームハンドブック

第一の気付きはホスト側のフォルダーは下記のフォルダー配下に作らないといけない。これはminikubeだけではなくkubernetesでも同様らしいね。

  • /data
  • /var/lib/minikube
  • /var/lib/docker
  • /var/lib/containerd
  • /var/lib/buildkit
  • /var/lib/containers
  • /tmp/hostpath_pv
  • /tmp/hostpath-provisioner

minikube is configured to persist files stored under the following directories, which are made in the Minikube VM (or on your localhost if running on bare metal). You may lose data from other directories on reboots.

落とし穴はここだった。「which are made in the Minikube VM」なるほど!minikubeの仮想マシン上がローカルホストってことだ。自分が今使っているベアメタル上のLinuxOSのことを指しているわけではない。

対応しました。

原因がわかってしまえば大した事はない。minikube仮想マシンへログインすればよいだけの事。ログインした先(minikube)がローカルホストなのでそこでホスト側のフォルダーとコンテンツを作ればOKだ。

ブラウザーも問題なく表示できました

よく考えればkubernetesを使うってことは仮想空間のNODE上にクラスター作ってpodを配置するのでローカルがそもそもkubernetesそのものなんだよね。ずっ普段使っているLinuxホストだと思いこんでいた。3時間もかかりましたがいい気づきだった。