目的
kubernetesのcontainerのimageの取得する/しない動作を確認する。
deploymentにimagePullPolicyで設定する
事前準備: internet reachが無い状態にする
bash
vagrant@vagrant:~/jira$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
From 10.0.2.2 icmp_seq=1 Destination Net Unreachable
From 10.0.2.2 icmp_seq=2 Destination Net Unreachable
^C
--- 8.8.8.8 ping statistics ---
6 packets transmitted, 0 received, +6 errors, 100% packet loss, time 5117ms
vagrant@vagrant:~/jira$
deploymentで使うimageをlocalのnodeの落としておく
bash
vagrant@vagrant:~/jira$ docker images | grep d058fe5de8ce
atlassian/jira-software latest d058fe5de8ce 3 days ago 634MB
vagrant@vagrant:~/jira$
deploymentにIfNotPresentをconfigしていない場合 => ErrImagePullになる
bash
vagrant@vagrant:~/jira$ cat jira-deployment-svc.yaml | grep image
- image: atlassian/jira-software
# imagePullPolicy: IfNotPresent
vagrant@vagrant:~/jira$ kubectl apply -f jira-deployment-svc.yaml
deployment.apps/jira created
service/jira created
vagrant@vagrant:~/jira$ kubectl get pod -n jira -w
NAME READY STATUS RESTARTS AGE
jira-66c5d87466-lqprz 0/1 ImagePullBackOff 0 6s
jira-66c5d87466-lqprz 0/1 ErrImagePull 0 31s
jira-66c5d87466-lqprz 0/1 ImagePullBackOff 0 44s
^Cvagrant@vagrant:~/jira$
一旦deploymentを消す
bash
vagrant@vagrant:~/jira$ kubectl delete -f jira-deployment-svc.yaml
deployment.apps "jira" deleted
service "jira" deleted
今度はdeplymentにIfNotPresentをconfigしている場合 => podがrunningになる
bash
vagrant@vagrant:~/jira$ cat jira-deployment-svc.yaml | grep image
- image: atlassian/jira-software
imagePullPolicy: IfNotPresent
vagrant@vagrant:~/jira$ kubectl apply -f jira-deployment-svc.yaml
deployment.apps/jira created
service/jira created
vagrant@vagrant:~/jira$ kubectl get pod -n jira
NAME READY STATUS RESTARTS AGE
jira-5d59fdd6c6-npmfk 1/1 Running 0 5s
vagrant@vagrant:~/jira$
結論
imagePullPolicyをIfNotPresentにすれば、imageがlocalにあれば再度pullしてくる事は無い。