У меня есть несколько изображений в моем локальном экземпляре докера, одно из которых называется 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 с локального хоста на локальный хост в первую очередь.
Также неясно, дело в этом или в чем-то другом. Моя номенклатура изображения неверна? Нужно ли указывать репо? Почему этот образ не развертывается?
Minikube поставляется со своим собственным демоном докера и не может найти изображения по умолчанию, нижеприведенное работает в моей локальной среде, я заметил, что первый шаг уже сделан, и похоже, что изображение все еще извлекается, шаг 2 может решить проблему ниже.
вы можете попробовать запустить приведенный ниже 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
Синтаксис был немного неправильным, но это привело меня туда. Спасибо!