Как исправить ошибку при загрузке изображения на microk8s

Я пытаюсь следовать руководствам по началу работы с докером, но я застреваю, когда вам нужно работать с 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 .

И я создаю модуль и службу с помощью:

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, он говорит:

Не удалось получить изображение "доска объявлений: 1.0": ошибка rpc: код = неизвестно desc = не удалось разрешить изображение "docker.io/library/bulletinboard:1.0": конечная точка реестра недоступна: доступ по запросу запрещен, репозиторий не существует или может потребоваться авторизация: сообщение сервера: недостаточно_области: авторизация не удалась

В: Почему я получаю эту ошибку? Я просто следую руководству, ничего не пропуская.

Я уже вошел в докер.


person Manu Ruiz Ruiz    schedule 30.10.2019    source источник
comment
Можете ли вы вытащить изображение локально, вы уверены, что оно существует? docker pull docker.io/library/bulletinboard:1.0   -  person Jonas    schedule 30.10.2019


Ответы (3)


Вам необходимо отправить этот локально созданный образ в реестр 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

person user1796571    schedule 30.10.2019

Вы можете разместить локальный сервер реестра, если не хотите использовать Docker Hub.

  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
person Geebee    schedule 12.01.2020

Предлагаемое решение - добавить imagePullPolicy: Never к вашему развертыванию в соответствии с здесь ответом, но это не так. у меня это не работает, поэтому я следовал этому руководству, так как работал над локальной разработкой .

person Captain A    schedule 13.11.2019