minikube
を使用して展開をテストし、 this linkを実行していました
展開用のマニフェストファイルは
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: webapp
spec:
replicas: 1
template:
metadata:
labels:
app: webapp
spec:
containers:
- name: webapp
imagePullPolicy: Never # <-- here we go!
image: sams
ports:
- containerPort: 80
その後、以下のコマンドを実行しようとすると、出力が得られました
user@usesr:~/Downloads$ kubectl create -f mydeployment.yaml --validate=false
deployment "webapp" created
user@user:~/Downloads$ kubectl get deployments
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
---- -------- ------- ---------- --------- ----
webapp 1 1 1 0 9s
user@user:~/Downloads$ kubectl get pods
NAME READY STATUS RESTARTS AGE
---- -------- ------- ---------- --------- ----
webapp-5bf5bd94d-2xgs8 0/1 ErrImageNeverPull 0 21s
Docker-Hub
から行imagePullPolicy: Never
を削除してdeployment.yml
から画像をプルしようとした場合でも試しましたが、同じエラーが発生しました。誰かが私がここでどこで何が間違っているのかを特定するのを助けることができますか
kubectl describe pod $POD_NAME
Name: webapp-5bf5bd94d-2xgs8
Namespace: default
Node: minikube/10.0.2.15
Start Time: Fri, 31 May 2019 14:25:41 +0530
Labels: app=webapp
pod-template-hash=5bf5bd94d
Annotations: <none>
Status: Pending
IP: 172.17.0.4
Controlled By: ReplicaSet/webapp-5bf5bd94d
Containers:
webapp:
Container ID:
Image: sams
Image ID:
Port: 80/TCP
State: Waiting
Reason: ErrImageNeverPull
Ready: False
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-wf82w (ro)
Conditions:
Type Status
Initialized True
Ready False
ContainersReady False
PodScheduled True
Volumes:
default-token-wf82w:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-wf82w
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 18m default-scheduler Successfully assigned default/webapp-5bf5bd94d-2xgs8 to minikube
Warning ErrImageNeverPull 8m (x50 over 18m) kubelet, minikube Container image "sams" is not present with pull policy of Never
Warning Failed 3m (x73 over 18m) kubelet, minikube Error: ErrImageNeverPull
docker images:
REPOSITORY TAG IMAGE ID CREATED SIZE
---------- --- -------- ------- ----
<none> <none> 723ce2b3d962 3 hours ago 1.91GB
bean_ben501/sams latest c7c4a04713f4 4 hours ago 278MB
sams latest c7c4a04713f4 4 hours ago 278MB
sams v1 c7c4a04713f4 4 hours ago 278MB
<none> <none> b222da630bc3 4 hours ago 1.91GB
mcr.Microsoft.com/dotnet/core/sdk 2.2-stretch e4747ec2aaff 9 days ago 1.74GB
mcr.Microsoft.com/dotnet/core/aspnet 2.2-stretch-slim f6d51449c477 9 days ago 260MB
現在のターミナルウィンドウでeval $(minikube docker-env)
を使用する必要があります。これにより、現在のセッションでminikube docker-envが使用されます。
イメージはminikube仮想マシン上にある必要があります。そのため、イメージを再度ビルドする必要があります。
しかし注意してください!イメージの構築時にSudoを使用しないでください。 minikube docker-envは使用しません。
ターミナルを閉じると、すべてが以前と同じになります。
次に、imagePullPolicy: Never
ローカルイメージレジストリを使用するには、マニフェストファイルで。
例:
apiVersion: v1
kind: Pod
metadata:
name: demo
spec:
containers:
- name: demo
image: demo
imagePullPolicy: Never # <-- here
ports:
- containerPort: 3000