如何在Microk8s上修复“无法拉取图像”

时间:2019-10-30 17:51:58

标签: docker kubernetes microk8s

我试图遵循docker入门指南,但是当您必须使用kuberetes时,我会陷入困境。我正在使用microk8s创建集群。

我的Dockerfile:

FROM node:6.11.5WORKDIR /usr/src/app
COPY package.json .
RUN npm install
COPY . .

CMD [ "npm", "start" ]

我的bb.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: bb-demo
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      bb: web
  template:
    metadata:
      labels:
        bb: web
    spec:
      containers:
      - name: bb-site
        image: bulletinboard:1.0
---
apiVersion: v1
kind: Service
metadata:
  name: bb-entrypoint
  namespace: default
spec:
  type: NodePort
  selector:
    bb: web
  ports:
  - port: 8080
    targetPort: 8080
    nodePort: 30001

我用

创建图像
docker image build -t bulletinboard:1.0 .

然后我用以下命令创建pod和服务:

microk8s.kubectl apply -f bb.yaml

已创建吊舱,但是,当我使用

查找吊舱的状态时
microk8s.kubectl get all

它说:

NAME                           READY   STATUS             RESTARTS   AGE
pod/bb-demo-7ffb568776-6njfg   0/1     ImagePullBackOff   0          11m

NAME                    TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
service/bb-entrypoint   NodePort    10.152.183.2   <none>        8080:30001/TCP   11m
service/kubernetes      ClusterIP   10.152.183.1   <none>        443/TCP          4d

NAME                      READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/bb-demo   0/1     1            0           11m

NAME                                 DESIRED   CURRENT   READY   AGE
replicaset.apps/bb-demo-7ffb568776   1         1         0       11m

此外,当我在kubernetes仪表板上查找它时,它会说:

无法提取映像“ bulletinboard:1.0”:rpc错误:代码=未知desc =未能解析映像“ docker.io/library/bulletinboard:1.0”:没有可用的注册表端点:拒绝提取访问,存储库不存在或可能需要授权:服务器消息:不足_作用域:授权失败

问:为什么会出现此错误?我只是遵循本教程,没有跳过任何内容。

我已经使用docker登录了。

3 个答案:

答案 0 :(得分:4)

您需要将此本地构建的映像推送到Docker Hub注册表。为此,如果您还没有一个Docker Hub帐户,则需要创建一个。

完成该操作后,您需要从命令行登录Docker Hub。

docker login

标记您的映像,以便将其转到您的Docker Hub存储库。

docker tag bulletinboard:1.0 <your docker hub user>/bulletinboard:1.0

将图像推送到Docker Hub

docker push <your docker hub user>/bulletinboard:1.0

更新yaml文件以反映Docker Hub上的新映像仓库。

spec: containers: - name: bb-site image: <your docker hub user>/bulletinboard:1.0

重新应用yaml文件

microk8s.kubectl apply -f bb.yaml

答案 1 :(得分:3)

如果您不想使用Docker集线器,则可以托管本地注册表服务器。

  1. 启动本地注册表服务器:
docker run -d -p 5000:5000 --restart=always --name registry registry:2
  1. 标记您的图像:
sudo docker tag bulletinboard:1.0 localhost:5000/bulletinboard
  1. 将其推送到本地注册表:
sudo docker push localhost:5000/bulletinboard
  1. 更改yaml文件:
spec:
      containers:
      - name: bb-site
        image: localhost:5000/bulletinboard
  1. 开始部署
kubectl apply -f bb.yaml

答案 2 :(得分:0)

建议的解决方案是根据答案hereimagePullPolicy: Never添加到您的部署中,但这对我不起作用,所以我遵循this指南,因为我在本地工作发展。