Kubectl запустить mypod --image=myimage - ErrImagePull

Я пытаюсь запустить некоторые образы докеров в Kubernetes.

докер образы

master* $ docker images                                              [15:16:49]                                                                                
REPOSITORY                    TAG           IMAGE ID       CREATED             SIZE
usm                           latest        4dd5245393bf   About an hour ago   158MB
kuard                         latest        497961f486c7   4 days ago          22.9MB

докер-контейнер

master* $ docker ps                                                  [15:21:40]
CONTAINER ID   IMAGE                                 COMMAND                  CREATED             STATUS             PORTS                                                                                                                                  NAMES
a46850d28303   usm                                   "/docker-entrypoint.…"   About an hour ago   Up About an hour   0.0.0.0:6061->80/tcp, :::6061->80/tcp                                                                                                  usm
88471e086486   gcr.io/k8s-minikube/kicbase:v0.0.32   "/usr/local/bin/entr…"   2 days ago          Up 2 hours         127.0.0.1:49157->22/tcp, 127.0.0.1:49156->2376/tcp, 127.0.0.1:49155->5000/tcp, 127.0.0.1:49154->8443/tcp, 127.0.0.1:49153->32443/tcp   minikube

Докерфайл

FROM nginx
COPY ./dist /usr/share/nginx/html
EXPOSE 80

куб версия

master* $ minikube version                                           [15:37:13]
minikube version: v1.26.0
commit: f4b412861bb746be73053c9f6d2895f12cf78565

Когда я запускаю kubectl run mypod --image=usm, я получаю ErrImagePull

Как запустить модуль с локальным образом докера?

master* $ kubectl run mypod --image=usm
pod/mypod created
master* $ kubectl get pods                                           [15:07:49]
NAME    READY   STATUS         RESTARTS   AGE
mypod   0/1     ErrImagePull   0          6s

Я пытаюсь установить imagePullPolicy никогда

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - image: usm
    imagePullPolicy: Never
    name: mypod
    ports:
    - containerPort: 80
      name: http
      protocol: TCP
master* $ kubectl apply -f kube-pod-usm.yaml                         [15:55:39]
pod/mypod created
master* $ kubectl get pods                                           [15:55:54]
NAME    READY   STATUS              RESTARTS   AGE
mypod   0/1     ErrImageNeverPull   0          42s
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
0
0
82
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Когда кластер Kubernetes создает новое развертывание или обновляет существующее развертывание, ему необходимо получить образ. Это делается через процесс kubelet на каждом пользовательском узле. Чтобы кублеты успешно извлекли этот образ, они должны быть доступны со всех узлов в кластере, которые соответствуют запросу планирования.

Отредактируйте спецификацию модуля и укажите правильный реестр.

Если вы установите для политики получения изображений значение «Никогда»: kubelet не пытается получить изображение. Если образ каким-то образом уже присутствует локально (в локальном реестре Kubernetes), kubelet пытается запустить контейнер; в противном случае запуск невозможен.

Ответ принят как подходящий

Вам нужно, чтобы это изображение было где-то доступно. Обычно это делается через реестр, но для локальной разработки вы можете просто загрузить свой локальный образ в свой кластер minikukbe с помощью следующей команды:

minikube image load image:tag

Вы также можете проверить minikube docker-env, который позволяет простым способом указать ваш терминальный docker-cli на докер внутри minikube.

Другие вопросы по теме