LoginSignup
2
0

More than 3 years have passed since last update.

kubernetes on minikubeで、DockerイメージがPullできない件について

Last updated at Posted at 2019-11-29

Minikubeとは

ローカル環境で(比較的)簡単にkubernetes環境を構築できるツール・仮想環境で、VirtualBoxなどの上で動作します。
詳しくは、公式ドキュメント等をご確認ください

どハマりしたポイント

今回、なんと丸2日ハマった問題への対応策と、何をチェックすべきなのかの備忘録として記載します。
なので、説明不足とかあります。 追記の希望等々はコメント欄までよろしくお願いしますmm

環境

  • Minkube (with inside Docker) feat. Kubernetes
  • MacOS Catalina
  • Docker for MacOS

やりたかった事

  1. Minikubeを起動し、 eval $(minikube docker-env)
  2. ローカルディスク上にDockerイメージをbuild(docker build ...)
  3. kubectl apply ...
  4. 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エラーが起きる様なら疑うべき
  • 対応策
    1. kubectl delete deployment xxxx
    2. kubectl delete service xxxx
    3. kubectl get pod / service / deploymentでお亡くなりになっている事を確認
    4. minikube stop
    5. minikube start
    6. eval $(minikube docker-env)
    7. kubectl apply ...

終わり

仮想化技術はトラブルにずば抜けて強く、チーム開発でも導入にもたつかないメリットがとっても魅力的ですが、目に見えないしログにも現れない’繋がり’の問題が発生すると厄介だなと思い知らされました。。。

この問題は今回の様にローカルの開発環境だからこそ発生する問題で、通常通り稼働しているkubernetes環境では発生しないものと思われます。

トラブルシューティングツールか何か合ったら嬉しいけど、、、大体のケースでは上手くいくはずって事なのかな

作成した方がいたらコメントで教えてください(笑

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0