microk8s拉取镜像,卡在ContainerCreating状态
microk8s pulling image, stuck in ContainerCreating state
如doc (based 中所述)。
我在 Ubuntu 作为主持人 OS。
docker --version
Docker version 18.09.6, build 481bc77
microk8s 1.14/beta
为 microk2s
启用本地注册表:
microk8s.enable registry
正在检查:
watch microk8s.kubectl get all --all-namespaces
container-registry pod/registry-577986746b-v8xqc 1/1 Running 0 36m
然后:
编辑:
sudo vim /etc/docker/daemon.json
添加此内容:
{
"insecure-registries" : ["127.0.0.1:32000"]
}
重启:
sudo systemctl restart docker
仔细检查,看看是否应用了不安全:
docker info | grep -A 2 Insecure
Insecure Registries:
127.0.0.1:32000
127.0.0.0/8
WARNING: No swap limit support
标签:
docker tag my-registry/my-services/my-service:0.0.1-SNAPSHOT 127.0.0.1:32000/my-service
正在检查:
docker images
127.0.0.1:32000/my-service latest e68f8a7e4675 19 hours ago 540MB
推动:
docker push 127.0.01:32000/my-service
我在这里看到我的图片:http://127.0.0.1:32000/v2/_catalog
在 deployment-local.yml
我有,现在正确的图像:
...spec:
containers:
- name: my-service-backend
image: 127.0.0.1:32000/my-service
imagePullPolicy: Always ...
然后申请:
envsubst < ./.local/deployment-local.yml | microk8s.kubectl apply -f -
我明白了:ContainerCreating
作者:microk8s.kubectl describe pods my-service-deployment-f85d5dcd5-cmd5
在事件部分:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 107s default-scheduler Successfully assigned default/my-service-deployment-f85d5dcd5-z75tr to my-desktop
Normal Pulling 25s (x4 over 106s) kubelet, my-desktop Pulling image "127.0.0.1:32000/my-service"
Warning Failed 25s (x4 over 106s) kubelet, my-desktop Failed to pull image "127.0.0.1:32000/my-service": rpc error: code = Unknown desc = failed to resolve image "127.0.0.1:32000/my-service:latest": no available registry endpoint: failed to do request: Head https://127.0.0.1:32000/v2/my-service/manifests/latest: http: server gave HTTP response to HTTPS client
Warning Failed 25s (x4 over 106s) kubelet, my-desktop Error: ErrImagePull
Normal BackOff 10s (x5 over 105s) kubelet, my-desktop Back-off pulling image "127.0.0.1:32000/my-service"
Warning Failed 10s (x5 over 105s) kubelet, my-desktop Error: ImagePullBackOff
好像我的服务卡在那里了。
问:可能是什么原因?
更新:
全部更改为 localhost
有帮助,这意味着我现在可以在浏览器中看到: http://localhost:32000/v2/_catalog 。
{"repositories":["my-service"]}
但它只在 Firefox 中有效..很奇怪。在 chrome 待定..
仍然:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 161m default-scheduler Successfully assigned default/my-service-deployment-6d4c5587df-72xvd to my-laptop
Normal Pulling 160m (x4 over 161m) kubelet, my-laptop Pulling image "localhost/my-service"
Warning Failed 160m (x4 over 161m) kubelet, my-laptop Failed to pull image "localhost/my-service": rpc error: code = Unknown desc = failed to resolve image "localhost/my-service:latest": no available registry endpoint: failed to do request: Head https://localhost/v2/my-service/manifests/latest: dial tcp 127.0.0.1:443: connect: connection refused
Warning Failed 160m (x4 over 161m) kubelet, my-laptop Error: ErrImagePull
Warning Failed 159m (x6 over 161m) kubelet, my-laptop Error: ImagePullBackOff
Normal BackOff 131m (x132 over 161m) kubelet, my-laptop Back-off pulling image "localhost/my-service"
Normal SandboxChanged 22m kubelet, my-laptop Pod sandbox changed, it will be killed and re-created.
Normal Pulling 21m (x4 over 22m) kubelet, my-laptop Pulling image "localhost/my-service"
Warning Failed 21m (x4 over 22m) kubelet, my-laptop Failed to pull image "localhost/my-service": rpc error: code = Unknown desc = failed to resolve image "localhost/my-service:latest": no available registry endpoint: failed to do request: Head https://localhost/v2/my-service/manifests/latest: dial tcp 127.0.0.1:443: connect: connection refused
Warning Failed 21m (x4 over 22m) kubelet, my-laptop Error: ErrImagePull
Warning Failed 20m (x6 over 22m) kubelet, my-laptop Error: ImagePullBackOff
Normal BackOff 2m22s (x87 over 22m) kubelet, my-laptop Back-off pulling image "localhost/my-service"
似乎它试图通过 https 连接..
--
好的..必须为 yml image: 部分添加端口。将接受下面的答案。谢谢。
在 microk8s 中 localhost 和 127.0.0.1 有很大的不同。正如你提到的,你是基于 Stack case 并且用户正在使用 localhost.
这里的主要问题是错误 no available registry endpoint: failed to do request:
。这意味着microk8s找不到端点。
如果你在下面运行点赞,你会得到相同的输出
$ cat /var/snap/microk8s/current/args/containerd-template.toml | grep endpoint
endpoint = ["https://registry-1.docker.io"]
endpoint = ["http://localhost:32000"]
正如您在 microk8s 中看到的那样,端点是 localhost 而不是 127.0.0.1
请更改 deployment-local.yaml 中的图片
...spec:
containers:
- name: my-service-backend
image: localhost/my-service
imagePullPolicy: Always ...
如果您会遇到任何其他问题,请告诉我。
在我的例子中,我不需要使用本地主机再次标记和推送图像,只需要更改 YAML。
我还需要在 /etc/hosts (Ubuntu 18.04)
中注释掉以下行
::1 localhost ip6-localhost
microk8s 似乎不支持 IPv6。
如doc (based
我在 Ubuntu 作为主持人 OS。
docker --version
Docker version 18.09.6, build 481bc77
microk8s 1.14/beta
为 microk2s
启用本地注册表:
microk8s.enable registry
正在检查:
watch microk8s.kubectl get all --all-namespaces
container-registry pod/registry-577986746b-v8xqc 1/1 Running 0 36m
然后:
编辑:
sudo vim /etc/docker/daemon.json
添加此内容:
{
"insecure-registries" : ["127.0.0.1:32000"]
}
重启:
sudo systemctl restart docker
仔细检查,看看是否应用了不安全:
docker info | grep -A 2 Insecure
Insecure Registries: 127.0.0.1:32000 127.0.0.0/8 WARNING: No swap limit support
标签:
docker tag my-registry/my-services/my-service:0.0.1-SNAPSHOT 127.0.0.1:32000/my-service
正在检查:
docker images
127.0.0.1:32000/my-service latest e68f8a7e4675 19 hours ago 540MB
推动:
docker push 127.0.01:32000/my-service
我在这里看到我的图片:http://127.0.0.1:32000/v2/_catalog
在 deployment-local.yml
我有,现在正确的图像:
...spec:
containers:
- name: my-service-backend
image: 127.0.0.1:32000/my-service
imagePullPolicy: Always ...
然后申请:
envsubst < ./.local/deployment-local.yml | microk8s.kubectl apply -f -
我明白了:ContainerCreating
作者:microk8s.kubectl describe pods my-service-deployment-f85d5dcd5-cmd5
在事件部分:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 107s default-scheduler Successfully assigned default/my-service-deployment-f85d5dcd5-z75tr to my-desktop
Normal Pulling 25s (x4 over 106s) kubelet, my-desktop Pulling image "127.0.0.1:32000/my-service"
Warning Failed 25s (x4 over 106s) kubelet, my-desktop Failed to pull image "127.0.0.1:32000/my-service": rpc error: code = Unknown desc = failed to resolve image "127.0.0.1:32000/my-service:latest": no available registry endpoint: failed to do request: Head https://127.0.0.1:32000/v2/my-service/manifests/latest: http: server gave HTTP response to HTTPS client
Warning Failed 25s (x4 over 106s) kubelet, my-desktop Error: ErrImagePull
Normal BackOff 10s (x5 over 105s) kubelet, my-desktop Back-off pulling image "127.0.0.1:32000/my-service"
Warning Failed 10s (x5 over 105s) kubelet, my-desktop Error: ImagePullBackOff
好像我的服务卡在那里了。
问:可能是什么原因?
更新:
全部更改为 localhost
有帮助,这意味着我现在可以在浏览器中看到: http://localhost:32000/v2/_catalog 。
{"repositories":["my-service"]}
但它只在 Firefox 中有效..很奇怪。在 chrome 待定..
仍然:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 161m default-scheduler Successfully assigned default/my-service-deployment-6d4c5587df-72xvd to my-laptop
Normal Pulling 160m (x4 over 161m) kubelet, my-laptop Pulling image "localhost/my-service"
Warning Failed 160m (x4 over 161m) kubelet, my-laptop Failed to pull image "localhost/my-service": rpc error: code = Unknown desc = failed to resolve image "localhost/my-service:latest": no available registry endpoint: failed to do request: Head https://localhost/v2/my-service/manifests/latest: dial tcp 127.0.0.1:443: connect: connection refused
Warning Failed 160m (x4 over 161m) kubelet, my-laptop Error: ErrImagePull
Warning Failed 159m (x6 over 161m) kubelet, my-laptop Error: ImagePullBackOff
Normal BackOff 131m (x132 over 161m) kubelet, my-laptop Back-off pulling image "localhost/my-service"
Normal SandboxChanged 22m kubelet, my-laptop Pod sandbox changed, it will be killed and re-created.
Normal Pulling 21m (x4 over 22m) kubelet, my-laptop Pulling image "localhost/my-service"
Warning Failed 21m (x4 over 22m) kubelet, my-laptop Failed to pull image "localhost/my-service": rpc error: code = Unknown desc = failed to resolve image "localhost/my-service:latest": no available registry endpoint: failed to do request: Head https://localhost/v2/my-service/manifests/latest: dial tcp 127.0.0.1:443: connect: connection refused
Warning Failed 21m (x4 over 22m) kubelet, my-laptop Error: ErrImagePull
Warning Failed 20m (x6 over 22m) kubelet, my-laptop Error: ImagePullBackOff
Normal BackOff 2m22s (x87 over 22m) kubelet, my-laptop Back-off pulling image "localhost/my-service"
似乎它试图通过 https 连接..
--
好的..必须为 yml image: 部分添加端口。将接受下面的答案。谢谢。
在 microk8s 中 localhost 和 127.0.0.1 有很大的不同。正如你提到的,你是基于
这里的主要问题是错误 no available registry endpoint: failed to do request:
。这意味着microk8s找不到端点。
如果你在下面运行点赞,你会得到相同的输出
$ cat /var/snap/microk8s/current/args/containerd-template.toml | grep endpoint
endpoint = ["https://registry-1.docker.io"]
endpoint = ["http://localhost:32000"]
正如您在 microk8s 中看到的那样,端点是 localhost 而不是 127.0.0.1
请更改 deployment-local.yaml 中的图片
...spec:
containers:
- name: my-service-backend
image: localhost/my-service
imagePullPolicy: Always ...
如果您会遇到任何其他问题,请告诉我。
在我的例子中,我不需要使用本地主机再次标记和推送图像,只需要更改 YAML。
我还需要在 /etc/hosts (Ubuntu 18.04)
中注释掉以下行::1 localhost ip6-localhost
microk8s 似乎不支持 IPv6。