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

У меня есть несколько изображений в моем локальном экземпляре докера, одно из которых называется door_controls:

>docker image ls
REPOSITORY                    TAG       IMAGE ID       CREATED        SIZE
door_controls                 latest    d22f58cdc9c1   3 hours ago    1.12GB
[...]

Этот образ также развернут в моем экземпляре minikube:

>minikube ssh -- docker image ls
door_controls                             latest    d22f58cdc9c1   3 hours ago     1.12GB
[...]

(Мне также ясно, что это разные демоны докеров, потому что в миникубе также перечислены демоны k8s). Документация (и ответ этот канонический Stackoverflow) предполагает, что

minikube image load door_controls
minikube kubectl run door-controls --image=door_controls --port=7777

это способ развернуть этот образ из командной строки, но журнал событий говорит мне, что что-то пошло не так:

Events:
  Type     Reason     Age                From               Message
  ----     ------     ----               ----               -------
  Normal   Scheduled  59s                default-scheduler  Successfully assigned default/door-controls to minikube
  Normal   Pulling    17s (x3 over 59s)  kubelet            Pulling image "door_controls"
  Warning  Failed     16s (x3 over 57s)  kubelet            Failed to pull image "door_controls": rpc error: code = Unknown desc = Error response from daemon: pull access denied for door_controls, repository does not exist or may require 'docker login': denied: requested access to the resource is denied
  Warning  Failed     16s (x3 over 57s)  kubelet            Error: ErrImagePull
  Normal   BackOff    1s (x3 over 57s)   kubelet            Back-off pulling image "door_controls"
  Warning  Failed     1s (x3 over 57s)   kubelet            Error: ImagePullBackOff

В классической традиции вызова команд, которые я не понимаю, в надежде, что это решит проблему, я последовал совету другого ответа и попытался настроить демон докера на minikube:

>eval $(minikube -p minikube docker-env)
//these aren't echoed by the shell of course
export DOCKER_TLS_VERIFY = "1"
export DOCKER_HOST = "tcp://127.0.0.1:54664"
export DOCKER_CERT_PATH = "/Users/airza/.minikube/certs"
export MINIKUBE_ACTIVE_DOCKERD = "minikube"

Кажется, что конфигурация по умолчанию требует включения TLS (с локального хоста на локальный хост?), но я не уверен, как его отключить или как добавить действительный TLS с локального хоста на локальный хост в первую очередь.

Также неясно, дело в этом или в чем-то другом. Моя номенклатура изображения неверна? Нужно ли указывать репо? Почему этот образ не развертывается?

Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
0
0
42
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Minikube поставляется со своим собственным демоном докера и не может найти изображения по умолчанию, нижеприведенное работает в моей локальной среде, я заметил, что первый шаг уже сделан, и похоже, что изображение все еще извлекается, шаг 2 может решить проблему ниже.

  1. Установите переменные среды с помощью eval $(minikube docker-env), я вижу, вы уже установили это.
  2. Установите для ImagePullPolicy значение Never, чтобы использовать локальные образы Docker с развертыванием. Это гарантирует, что образ не будет извлечен из репозитория Docker.

вы можете попробовать запустить приведенный ниже yaml в своем кластере для вашего варианта использования.

apiVersion: v1
kind: Pod
metadata:
  name: test
spec:
  containers:
    image: door_controls
    name: door_controls
    imagePullPolicy: Never
    ports:
      - containerPort: 7777

статья в блоге: https://medium.com/bb-tutorials-and-thoughts/how-to-use-own-local-doker-images-with-minikube-2c1ed0b0968

Синтаксис был немного неправильным, но это привело меня туда. Спасибо!

argentage 07.04.2022 14:43

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