如果 crictl 可以从 localhost 拉取镜像,为什么 k3s 无法将其部署到 localhost?
If crictl can pull an image from localhost, why does k3s fail to deploy it on localhost?
我已经在 raspberry pi 的集群上安装了 k3s。
pi@pikey:~ $ sudo kubectl get node
NAME STATUS ROLES AGE VERSION
pikey Ready master 4d23h v1.14.6-k3s.1
pinode-1 Ready worker 4d23h v1.14.6-k3s.1
pinode-2 Ready worker 4d23h v1.14.6-k3s.1
pinode-3 Ready worker 4d23h v1.14.6-k3s.1
我最初只在本地主机 (pikey) 上工作。
我有一个 docker 图像,我标记并推送到 crictl
pi@pikey:~ $ sudo crictl pull localhost:5000/pilab/node-intro-img
Image is up to date for sha256:7a2c45e77748e6b2282210d7d54b12f0cb25c4b224c222149d7a66653512f543
pi@pikey:~ $ sudo kubectl delete deployment node-intro
deployment.extensions "node-intro" deleted
pi@pikey:~ $ sudo crictl images
IMAGE TAG IMAGE ID SIZE
docker.io/coredns/coredns 1.3.0 6d816a3a1d703 11.5MB
docker.io/library/traefik 1.7.12 a0fc65eddfcc8 19.1MB
docker.io/rancher/klipper-helm v0.1.5 d4a37f6d19104 25.4MB
docker.io/rancher/klipper-lb v0.1.1 36563d1beb5e2 2.58MB
k8s.gcr.io/pause 3.1 e11a8cbeda868 224kB
localhost:5000/pilab/node-intro-img latest 7a2c45e77748e 320MB
现在,如果我尝试部署
sudo kubectl create deployment node-intro --image=localhost:5000/pilab/node-intro-img
我明白了
pi@pikey:~ $ sudo kubectl get pods
NAME READY STATUS RESTARTS AGE
node-intro-567c59c8c7-9p5c5 0/1 ImagePullBackOff 0 101s
pi@pikey:~ $ sudo kubectl get pods
NAME READY STATUS RESTARTS AGE
node-intro-567c59c8c7-9p5c5 0/1 ErrImagePull 0 104s
如果crictl可以拉取镜像,为什么k3s部署失败?
您正在使用 localhost:5000/...
作为图像位置。
但是您确定图像存在于每个节点上吗?可能部署映像的节点不托管映像。
使用托管注册表的节点的 IP 地址,或者确保图像存在于每个节点上。
我已经在 raspberry pi 的集群上安装了 k3s。
pi@pikey:~ $ sudo kubectl get node
NAME STATUS ROLES AGE VERSION
pikey Ready master 4d23h v1.14.6-k3s.1
pinode-1 Ready worker 4d23h v1.14.6-k3s.1
pinode-2 Ready worker 4d23h v1.14.6-k3s.1
pinode-3 Ready worker 4d23h v1.14.6-k3s.1
我最初只在本地主机 (pikey) 上工作。
我有一个 docker 图像,我标记并推送到 crictl
pi@pikey:~ $ sudo crictl pull localhost:5000/pilab/node-intro-img
Image is up to date for sha256:7a2c45e77748e6b2282210d7d54b12f0cb25c4b224c222149d7a66653512f543
pi@pikey:~ $ sudo kubectl delete deployment node-intro
deployment.extensions "node-intro" deleted
pi@pikey:~ $ sudo crictl images
IMAGE TAG IMAGE ID SIZE
docker.io/coredns/coredns 1.3.0 6d816a3a1d703 11.5MB
docker.io/library/traefik 1.7.12 a0fc65eddfcc8 19.1MB
docker.io/rancher/klipper-helm v0.1.5 d4a37f6d19104 25.4MB
docker.io/rancher/klipper-lb v0.1.1 36563d1beb5e2 2.58MB
k8s.gcr.io/pause 3.1 e11a8cbeda868 224kB
localhost:5000/pilab/node-intro-img latest 7a2c45e77748e 320MB
现在,如果我尝试部署
sudo kubectl create deployment node-intro --image=localhost:5000/pilab/node-intro-img
我明白了
pi@pikey:~ $ sudo kubectl get pods
NAME READY STATUS RESTARTS AGE
node-intro-567c59c8c7-9p5c5 0/1 ImagePullBackOff 0 101s
pi@pikey:~ $ sudo kubectl get pods
NAME READY STATUS RESTARTS AGE
node-intro-567c59c8c7-9p5c5 0/1 ErrImagePull 0 104s
如果crictl可以拉取镜像,为什么k3s部署失败?
您正在使用 localhost:5000/...
作为图像位置。
但是您确定图像存在于每个节点上吗?可能部署映像的节点不托管映像。
使用托管注册表的节点的 IP 地址,或者确保图像存在于每个节点上。