为什么docker在我使用Kubernetes时再次下载相同的图像
我在一个没有互联网的隔离环境中使用kbuernetes&docker,我总是在其他机器中拉取映像并保存到.tar文件,然后加载到隔离环境,但有时kubernetes的Pod无法成功启动,并说Pod是拉取映像,但网络不正常。 但是我检查docker的图像,图像已经加载,为什么我还需要再次拉相同的图像 这是docker的图像,MYSQL的图像已加载:为什么docker在我使用Kubernetes时再次下载相同的图像,docker,kubernetes,Docker,Kubernetes,我在一个没有互联网的隔离环境中使用kbuernetes&docker,我总是在其他机器中拉取映像并保存到.tar文件,然后加载到隔离环境,但有时kubernetes的Pod无法成功启动,并说Pod是拉取映像,但网络不正常。 但是我检查docker的图像,图像已经加载,为什么我还需要再次拉相同的图像 这是docker的图像,MYSQL的图像已加载: [root@localhost kubecfg]# docker images REPOSITORY
[root@localhost kubecfg]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
quay.io/kubernetes-ingress-controller/nginx-ingress-controller 0.12.0 4a9cd8a2008a 3 weeks ago 230.5 MB
docker.io/mysql latest 5195076672a7 3 weeks ago 371.4 MB
gcr.io/google_containers/kube-apiserver-amd64 v1.9.2 7109112be2c7 11 weeks ago 210.4 MB
这是kubernetes的错误日志
[root@localhost kubecfg]# kubectl describe pod mysql-vmwdw
Name: mysql-vmwdw
Namespace: default
Node: localhost.localdomain/192.168.88.129
Start Time: Mon, 02 Apr 2018 14:14:07 +0800
Labels: app=mysql
Annotations: <none>
Status: Running
IP: 192.168.0.61
Controlled By: ReplicationController/mysql
Containers:
mysql:
Container ID: docker://9aa3128eaa1f330dfd0d6ebf732dca5a99ad49d7d6d4002a2384bdb03e056d7d
Image: docker.io/mysql
Image ID: docker-pullable://docker.io/mysql@sha256:691c55aabb3c4e3b89b953dd2f022f7ea845e5443954767d321d5f5fa394e28c
Port: 3306/TCP
State: Waiting
Reason: ImagePullBackOff
Last State: Terminated
Reason: Error
Exit Code: 1
Started: Tue, 10 Apr 2018 14:56:04 +0800
Finished: Wed, 11 Apr 2018 08:56:04 +0800
Ready: False
Restart Count: 3
Environment:
MYSQL_ROOT_PASSWORD: 123456
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-s7kq2 (ro)
Conditions:
Type Status
Initialized True
Ready False
PodScheduled True
Volumes:
default-token-s7kq2:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-s7kq2
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 SuccessfulMountVolume 19m kubelet, localhost.localdomain MountVolume.SetUp succeeded for volume "default-token-s7kq2"
Normal SandboxChanged 19m (x12 over 19m) kubelet, localhost.localdomain Pod sandbox changed, it will be killed and re-created.
Warning FailedCreatePodSandBox 19m (x12 over 19m) kubelet, localhost.localdomain Failed create pod sandbox.
Warning Failed 9m (x6 over 18m) kubelet, localhost.localdomain Failed to pull image "docker.io/mysql": rpc error: code = Unknown desc = Network timed out while trying to connect to https://index.docker.io/v1/repositories/library/mysql/images. You may want to check your internet connection or if you are behind a proxy.
Warning Failed 4m (x41 over 18m) kubelet, localhost.localdomain Error: ImagePullBackOff
[root@localhostkubecfg]#kubectl描述pod mysql vmwdw
名称:mysql-vmwdw
名称空间:默认值
节点:localhost.localdomain/192.168.88.129
开始时间:2018年4月2日星期一14:14:07+0800
标签:app=mysql
注释:
状态:正在运行
IP:192.168.0.61
控制者:ReplicationController/mysql
容器:
mysql:
容器ID:docker://9aa3128eaa1f330dfd0d6ebf732dca5a99ad49d7d6d4002a2384bdb03e056d7d
图片:docker.io/mysql
图像ID:docker-pullable://docker.io/mysql@sha256:691c55aabb3c4e3b89b953dd2f022f7ea845e5443954767d321d5f5fa394e28c
端口:3306/TCP
国家:等待
原因:图像拉回
最后状态:终止
原因:错误
退出代码:1
开始时间:2018年4月10日星期二14:56:04+0800
完成日期:2018年4月11日星期三08:56:04+0800
就绪:错误
重新启动计数:3
环境:
MYSQL\u ROOT\u密码:123456
挂载:
/来自default-token-s7kq2(ro)的var/run/secrets/kubernetes.io/serviceCount
条件:
类型状态
初始化为True
准备错误
播客预定为真
卷数:
default-token-s7kq2:
类型:Secret(由Secret填充的卷)
SecretName:default-token-s7kq2
可选:false
QoS等级:最佳努力
节点选择器:
容差:node.kubernetes.io/未就绪:不执行300秒
node.kubernetes.io/不可访问:不执行300秒
活动:
从消息中键入原因年龄
---- ------ ---- ---- -------
正常成功装入卷19m kubelet,localhost.localdomain装入卷。卷“default-token-s7kq2”的安装成功
普通沙盒更改19m(x12超过19m)kubelet,localhost.localdomain Pod沙盒更改,它将被杀死并重新创建。
警告FailedCreatePodSandBox 19m(x12超过19m)kubelet,localhost.localdomain创建pod sandbox失败。
警告失败9m(x6超过18m)kubelet,localhost.localdomain未能提取映像“docker.io/mysql”:rpc错误:code=Unknown desc=尝试连接到时网络超时https://index.docker.io/v1/repositories/library/mysql/images. 您可能需要检查您的internet连接,或者您是否支持代理。
警告失败4m(x41超过18m)kubelet,localhost.localdomain错误:ImagePullBackOff
它显示:“未能拉取图像”docker.io/mysql“:rpc错误:code=Unknown desc=尝试连接到时网络超时。您可能需要检查internet连接或是否在代理后面。”
我已经加载了图像,为什么docker会再次加载相同的图像?我应该如何解决问题?不清楚指定的
imagePullPolicy
是什么。在您的情况下,它应该是永不
您正在为图像使用
:最新的标记。当图像标记为最新时,kubernetes会将imagePullPolicy
设置为始终。有关详细信息
您可以将标记更改为其他内容(例如,docker.io/mysql:8.0
),或者,在您创建部署时,您只需将自己指定为imagePullPolicy
kubectl run mysql --image=docker.io/mysql --imagePullPolicy=Never
应该解决这个问题。或者,您可以在部署的yaml
规范中将imagePullPolicy
设置为Never
或IfNotPresent
,以修复此错误