17

我试图按照入门 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

pod 已创建,但是,当我查找我的 pod 的状态时

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 登录了。

4

3 回答 3

8

您需要将此本地构建的映像推送到 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

于 2019-10-30T20:25:55.277 回答
5

如果您不想使用 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
于 2020-01-12T00:36:41.630 回答
3

建议的解决方案是根据此处imagePullPolicy: Never的答案添加到您的部署中,但这对我不起作用,因此我在从事本地开发工作时遵循了本指南。

于 2019-11-13T02:30:06.783 回答