我正在macOS 10.12上使用minikube,并尝试使用在docker hub上托管的私有镜像。我知道minikube启动一个虚拟机,作为本地Kubernetes集群的唯一节点,并将托管所有我的Pod。
我了解到可以通过运行eval $(minikube docker-env)
来使用VM的Docker运行时。因此,我使用这些变量从我的本地Docker运行时更改到其他运行时。运行docker images
后,我可以看到变更已经生效。
接下来,我尝试使用docker login
登录docker hub,然后手动拉取我的镜像,这个过程没有出错。之后,我认为镜像是准备好供集群中的任何Pod使用的,但是我总是收到ImagePullBackOff
的错误提示。我还尝试通过minikube ssh
SSH进入VM,结果是一样的,镜像可用,但由于某种原因拒绝使用它。
如果有帮助的话,这是我的部署描述文件:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: web-deployment
spec:
replicas: 1
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: godraude/nginx
imagePullPolicy: Always
ports:
- containerPort: 80
- containerPort: 443
以下是kubectl describe pod <podname>
命令的输出结果:
Events:
FirstSeen LastSeen Count From SubobjectPath Type Reason Message
--------- -------- ----- ---- ------------- -------- ------ -------
1m 1m 1 {default-scheduler } Normal Scheduled Successfully assigned web-deployment-2451628605-vtbl8 to minikube
1m 23s 4 {kubelet minikube} spec.containers{nginx} Normal Pulling pulling image "godraude/nginx"
1m 20s 4 {kubelet minikube} spec.containers{nginx} Warning Failed Failed to pull image "godraude/nginx": Error: image godraude/nginx not found
1m 20s 4 {kubelet minikube} Warning FailedSync Error syncing pod, skipping: failed to "StartContainer" for "nginx" with ErrImagePull: "Error: image godraude/nginx not found"
1m 4s 5 {kubelet minikube} spec.containers{nginx} Normal BackOff Back-off pulling image "godraude/nginx"
1m 4s 5 {kubelet minikube} Warning FailedSync Error syncing pod, skipping: failed to "StartContainer" for "nginx" with ImagePullBackOff: "Back-off pulling image \"godraude/nginx\""