Docker для Mac (Edge) - Кубернетес - эталонный локальный образ - PullRequest
0 голосов
/ 07 июня 2018

Я использую Docker для Mac 18.05.0-ce-mac66 (24545) (ребро) с поддержкой Kubernetes, и я борюсь с созданием развертывания kubernetes со ссылкой на локально построенный образ.

Вывод docker images:

REPOSITORY  TAG     IMAGE 
test        latest  2c3bdb36a5ed

Мой deploy.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: helloworld-deployment
spec:
  selector:
    matchLabels:
      app: helloworld
  replicas: 1
  template:
    metadata:
      labels:
        app: helloworld
    spec:
      containers:
      - name: aaa
        image: test:latest
        ports:
        - containerPort: 8080

Когда я запускаю kubectl apply -f deplyment.yaml модули созданы, но:

helloworld-deployment-764b8b85d8-2c4kl   0/1       ImagePullBackOff   0          
helloworld-deployment-764b8b85d8-rzq7l   0/1       ImagePullBackOff   0

Опишите один из этих модулейдает:

  Normal   Scheduled              20s               default-scheduler            Successfully assigned helloworld-deployment-79f66d97c6-7tj2x to docker-for-desktop
  Normal   SuccessfulMountVolume  19s               kubelet, docker-for-desktop  MountVolume.SetUp succeeded for volume "default-token-72f44"
  Normal   BackOff                16s               kubelet, docker-for-desktop  Back-off pulling image "test:latest"
  Warning  Failed                 16s               kubelet, docker-for-desktop  Error: ImagePullBackOff
  Normal   Pulling                4s (x2 over 19s)  kubelet, docker-for-desktop  pulling image "test:latest"
  Warning  Failed                 2s (x2 over 17s)  kubelet, docker-for-desktop  Failed to pull image "test:latest": rpc error: code = Unknown desc = Error response from daemon: pull access denied for test, repository does not exist or may require 'docker login'
  Warning  Failed                 2s (x2 over 17s)  kubelet, docker-for-desktop  Error: ErrImagePull

Интересно то, что если я пытаюсь запустить какое-то изображение, размещенное на dockerhub, то все в порядке, я также пытался использовать skaffold , и это также работает как брелок...

Я вижу некоторые похожие проблемы, связанные с minikube, где решение состоит в том, чтобы использовать докер minikube для построения образов, чтобы на них можно было ссылаться из кластера kubernetes.Я хотел бы избежать настройки локального репо, но как я могу заставить его работать с Docker Edge Kubernetes?

Ответы [ 3 ]

0 голосов
/ 08 июня 2018

В дополнение к techtrainer комментарию и ответу я хотел бы привести несколько примеров того, как это сделать.

Общее правило.Вы должны использовать тег версии изображений вместо latest.С тегами Docker, чем конкретнее вы можете получить, тем лучше.Будьте конкретны, чтобы избежать использования неправильного изображения.Подумайте об этом, если вы не хотите, чтобы ваши коллеги или другие пользователи Docker снимали изображения и не знали, какими они были в последнее время.Будьте конкретны, чтобы избежать таких проблем.

docker tag IMAGE ID image/TAG:version.d.m.y

Для лучшего управления вашими изображениями вы должны иметь разумное соглашение об именах.Я предпочитаю использовать этап, версию и дату создания изображения.Например:

docker tag 113a43faa138 ubuntu/prod:v1.8.6.2018

Это означает этап производства, версия 1, созданный 8 июня 2018 года.

И это все.Ваша версия доступна, и наименование легче понять для вас и других пользователей этого изображения.

0 голосов
/ 11 октября 2018

Я смог запустить локальный образ, установив imagePullPolicy на Never.

Например:

apiVersion: v1
kind: Pod
metadata:
  name: local-image-test
spec:
  containers:
  - name: local-image-container
    image: local-image:latest
    imagePullPolicy: Never

(Кредит https://github.com/kubernetes/kubernetes/issues/1293#issuecomment-357326426 дляэто решение)

0 голосов
/ 08 июня 2018

Используйте теговую версию изображения, а не последнюю, потому что, если вы отправляете изображения Docker в производственную среду, вам следует просто игнорировать последний тег.Не используйте это.Не поддавайтесь соблазну.Легко взглянуть на это и подумать, что ваш сценарий развертывания должен просто извлекать «последний», и процесс сборки будет гарантировать, что он действителен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...