Minikubeとは
ローカル環境で(比較的)簡単にkubernetes環境を構築できるツール・仮想環境で、VirtualBoxなどの上で動作します。
詳しくは、公式ドキュメント等をご確認ください
どハマりしたポイント
今回、なんと丸2日ハマった問題への対応策と、何をチェックすべきなのかの備忘録として記載します。
なので、説明不足とかあります。 追記の希望等々はコメント欄までよろしくお願いしますmm
環境
- Minkube (with inside Docker) feat. Kubernetes
- MacOS Catalina
- Docker for MacOS
やりたかった事
- Minikubeを起動し、
eval $(minikube docker-env)
- ローカルディスク上にDockerイメージをbuild(docker build ...)
kubectl apply ...
-
kubectl get pod
でRunningになってればOK
###のはずだった。。。 PullError
なんてみたくなたかった
うまく行かないポイント
1. docker build ... -t xxxx
のxxxxが間違ってる
- これは単純でわかりやすいです。名前が不一致なので探しきれず、リモートを探すもさらに見つけきれず。。。って言う状態
- pruneコマンド等でイメージを削除して作り直しましょう
2. imagePullPolicyがAlwaysになってる
-
kubectl edit deployment xxxxx
でチェック - これがAlwaysになってると、ローカルのDockerイメージが古いかもしれないからと、リモートを検索してエラーになります。
-
IfNotPresent
(ローカルになかったらリモート探してね)。またはNever
(ローカルが正だ!)を設定する事で回避
3. eval $(minikube docker-env)
が無効になってる
- 意外と気づかない
- 契機はわからないけど、PCがスリープに入ったりしたくらいでも無効になる模様
- イメージ名も合ってる、IfNotPresentも設定したのにPullエラーが起きる様なら疑うべき
- 対応策
kubectl delete deployment xxxx
kubectl delete service xxxx
- kubectl get pod / service / deploymentでお亡くなりになっている事を確認
minikube stop
minikube start
eval $(minikube docker-env)
kubectl apply ...
終わり
仮想化技術はトラブルにずば抜けて強く、チーム開発でも導入にもたつかないメリットがとっても魅力的ですが、目に見えないしログにも現れない’繋がり’の問題が発生すると厄介だなと思い知らされました。。。
この問題は今回の様にローカルの開発環境だからこそ発生する問題で、通常通り稼働しているkubernetes環境では発生しないものと思われます。
トラブルシューティングツールか何か合ったら嬉しいけど、、、大体のケースでは上手くいくはずって事なのかな
作成した方がいたらコメントで教えてください(笑