16
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

kind(Kubernetes IN Docker)でローカルの Docker image を使う方法

Last updated at Posted at 2019-08-24

TL;DR

以下のコマンドでローカルの Docker image を kind で作成した k8s にアップロードすることが可能です。

$ kind load docker-image IMAGE:TAG

アップロードした Docker image を使う際には imagePullPolicy: IfNotPresent もしくは imagePullPolicy: Never の設定を行ってください。また、既にアップロード済みの場合には Docker image が更新されることなく処理が終了する仕様なのでご注意ください。

はじめに

kind(Kubernetes IN Docker)でローカルの Docker image を使う方法を紹介します。
https://github.com/kubernetes-sigs/kind

動作確認

kind で k8s クラスタを作成します。

$ kind create cluster
Creating cluster "kind" ...
 ✓ Ensuring node image (kindest/node:v1.15.0) 🖼
 ✓ Preparing nodes 📦
 ✓ Creating kubeadm config 📜
 ✓ Starting control-plane 🕹️
 ✓ Installing CNI 🔌
 ✓ Installing StorageClass 💾
Cluster creation complete. You can now use the cluster with:

export KUBECONFIG="$(kind get kubeconfig-path --name="kind")"
kubectl cluster-info

ローカルで Docker image をビルドします。

$ cat Dockerfile
FROM busybox
ENTRYPOINT sh -c "echo 'Hi, kind!' && sleep 10000"

$ docker build -t my-image:tag .

ローカルの Docker image を kind にアップロードします。

$ kind load docker-image my-image:tag

kind で作成した k8s にアップロードした Docker image を Pod としてデプロイします。
restartPolicy: Always になっていると Docker image をリモートから取得するようになってしまうので、imagePullPolicy: IfNotPresent もしくは imagePullPolicy: Never の設定を行うことを忘れないでください。

$ cat manifest.yaml
apiVersion: v1
kind: Pod
metadata:
  name: my-image
spec:
  containers:
  - name: my-image
    image: my-image:tag
    imagePullPolicy: Never

$ export KUBECONFIG="$(kind get kubeconfig-path --name="kind")"
$ kubectl apply -f manifest.yaml

アップロードした Docker image が使えているか確認します。

$ kubectl get pods
NAME       READY   STATUS    RESTARTS   AGE
my-image   1/1     Running   0          10s

$ kubectl logs my-image
Hi, kind!

アップロードした Docker image が使えることが確認できました。

備考

既にアップロード済みの場合には Docker image が更新されることなく処理が終了する仕様なのでご注意ください。この仕様に関する詳細を知りたい方は以下の Issue を参照ください。
https://github.com/kubernetes-sigs/kind/issues/380

今回は Docker image のアップロードを紹介しましたが、以下のコマンドで docker save で Docker image のアーカイブをアップロードすることも可能です。

$ kind load image-archive IMAGE_ARCHIVE.tar

参考資料

16
7
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
16
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?