Потяните местное изображение, чтобы запустить стручок в Кубернете
У меня есть следующее изображение, созданное Dockerfile:
REPOSITORY TAG IMAGE ID CREATED SIZE
ruby/lab latest f1903b1508cb 2 hours ago 729.6 MB
И у меня есть следующий файл YAML:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: ruby-deployment
spec:
replicas: 2
template:
metadata:
labels:
app: ruby
spec:
containers:
- name: ruby-app
image: ruby/lab
imagePullPolicy: IfNotPresent
ports:
- containerPort: 4567
При создании развертывания я получил следующую информацию в модулях:
ruby-deployment-3830038651-sa4ii 0/1 ImagePullBackOff 0 7m
ruby-deployment-3830038651-u1tvc 0/1 ImagePullBackOff 0 7m
И ошибка Failed to pull image "ruby/lab:latest": Error: image ruby/lab not found
снизу:
8m 2m 6 {kubelet minikube} spec.containers{ruby} Normal Pulling pulling image "ruby/lab:latest"
8m 2m 6 {kubelet minikube} spec.containers{ruby} Warning Failed Failed to pull image "ruby/lab:latest": Error: image ruby/lab not found
8m 2m 6 {kubelet minikube} Warning FailedSync Error syncing pod, skipping: failed to "StartContainer" for "ruby" with ErrImagePull: "Error: image ruby/lab not found"
Действительно ли для этого нужно иметь реестр в докере? Я просто хочу сделать тест локально и передать мой код/репо другу для тестирования
Спасибо
Ответы
Ответ 1
Вы можете указать своего клиента-докера на демон-версию док-станции VM, запустив
eval $(minikube docker-env)
Затем вы можете создать свой образ в обычном режиме и создать свои ресурсы kubernetes, используя kubectl. Убедитесь, что у вас
imagePullPolicy: IfNotPresent
в ваших спецификациях YAML или JSON.
Кроме того, есть флаг для передачи небезопасных реестров на виртуальную машину minikube. Однако это необходимо указывать при первом создании машины.
minikube start --insecure-registry
Вы также можете прочитать это при использовании частного реестра
http://kubernetes.io/docs/user-guide/images/
Ответ 2
Мини-куб AFAIR работает в виртуальной машине, поэтому он не будет видеть изображения, созданные локально на хост-компьютере, но... как указано в https://github.com/kubernetes/minikube/blob/master/docs/reusing_the_docker_daemon. md вы можете использовать eval $(minikube docker-env)
для фактического использования демона docker, работающего на minikube, и впредь строить свой образ на докере minikubes и, таким образом, ожидать, что он будет доступен для механизма minikubes k8s без извлечения из внешнего реестра.
Ответ 3
Пожалуйста, обратитесь к документации по изображениям или ответ здесь.
Каждый контейнер в контейнере имеет свой собственный образ. В настоящее время поддерживается только один тип изображения Docker Image. Вы создаете образ Docker и вставляете его в реестр, прежде чем ссылаться на него в модуле Kubernetes. Свойство изображения контейнера поддерживает тот же синтаксис, что и команда docker, включая частные реестры и теги.
Вы можете нажать на общедоступный реестр докеров или использовать собственный приватный репозиторий. Возможно, есть способ сделать minikube получить локально созданные изображения, но, безусловно, будет проще нажать изображение докера в реестр.
Ответ 4
Docker pull, вытягивает все изображения вручную в каждом узле или запускает DaemonSet, чтобы вытянуть все изображения