#linux #docker #kubernetes #debian
#linux #docker #kubernetes #debian
Вопрос:
Не удалось извлечь изображение «/ posts: 0.0.1»: ошибка rpc: code = Unknown desc = Ошибка ответ от демона: отказано в доступе к / posts, репозиторий не существует или может потребовать «входа в систему docker»: отказано: запрошенный доступ к ресурсу запрещен
Установлены Debian 10, minikube и kubectl и docker. если я запускаю docker с этим изображением — все в порядке.
павел@debian: ~ $ kubectl версия Версия клиента: версия.Информация{Major: «1», Minor: «19», GitVersion: «v1.19.4», GitCommit: «123», GitTreeState: «чистый», BuildDate: «2020-11-11T13:17:17Z», GoVersion: «go1.15.2″, Компилятор:»gc», Платформа: «linux / amd64»} Версия сервера: версия.Информация{Major: «1», Minor: «19», GitVersion: «v1.19.4», GitCommit: «123», GitTreeState: «чистый», BuildDate: «2020-11-11T13:09:17Z», GoVersion: «go1.15.2″, Компилятор:»gc», платформа: «linux / amd64»}
posts.yaml
apiVersion: v1
kind: Pod
metadata:
name: posts
spec:
containers:
- name: posts
image: <mylogin>/posts:0.0.1
kubectl apply -f posts.yaml
debian: ~ $ kubectlописание сообщений pod
Name: posts
Namespace: default
Priority: 0
Node: minikube/192.168.49.2
Start Time: Wed, 25 Nov 2020 07:06:47 0400
Labels: <none>
Annotations: <none>
Status: Pending
IP: 172.17.0.4
IPs:
IP: 172.17.0.4
Containers:
posts:
Container ID:
Image: <mylogin>/posts:0.0.1
Image ID:
Port: <none>
Host Port: <none>
State: Waiting
Reason: ImagePullBackOff
Ready: False
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-b9gkg (ro)
Conditions:
Type Status
Initialized True
Ready False
ContainersReady False
PodScheduled True
Volumes:
default-token-b9gkg:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-b9gkg
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 23m default-scheduler Successfully assigned default/posts to minikube
Normal Pulling 21m (x4 over 23m) kubelet Pulling image "<mylogin>/posts:0.0.1"
Warning Failed 21m (x4 over 23m) kubelet Failed to pull image "<mylogin>/posts:0.0.1": rpc error: code = Unknown desc = Error response from daemon: pull access denied for <mylogin>/posts, repository does not exist or may require 'docker login': denied: requested access to the resource is denied
Warning Failed 21m (x4 over 23m) kubelet Error: ErrImagePull
Warning Failed 7m53s (x63 over 23m) kubelet Error: ImagePullBackOff
Normal BackOff 2m58s (x84 over 23m) kubelet Back-off pulling image "<mylogin>/posts:0.0.1"
Комментарии:
1. Вы не указали в своем вопросе, есть ли у вас учетные данные в вашей конфигурации docker, и, следовательно, в нем просто отсутствует
imagePullSecrets:
, или если изображение действительно отсутствует в docker hub, и, следовательно, вы используете «локальный» образ, который может видеть ваш компьютер, но никто другой не может. В любом случае, это не вопрос программирования и, следовательно, относится к ServerFault.com
Ответ №1:
Minikube не может напрямую получить доступ к вашему локальному репозиторию docker. Существует несколько способов решения этой проблемы, и они подробно описаны здесь: https://minikube.sigs.k8s.io/docs/handbook/pushing /
Лично я просто добавил изображение в кэш Minikube с помощью minikube cache add <image tag>
, и вам нужно изменить imagePullPolicy
внутри вашего файла yaml на Never. Таким образом, по умолчанию будет использоваться локальное изображение, которое вы кэшировали в своем мини-кубе. Вы также можете перезагрузить свой кеш после его добавления. Это, вероятно, самый простой способ, если вы используете Docker для тестирования контейнеров перед добавлением их в кластер.
Вы также можете попробовать другие методы, включая использование демона внутри Minikube для непосредственного создания образа контейнера.
Ответ №2:
Имя изображения неверно. Правильно обновите имя и тег изображения. Если изображение размещено в частном реестре, вам необходимо создать секрет реестра, содержащий учетные данные для входа в ваш частный реестр. Перейдите по ссылке ниже для получения дополнительной помощи https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry /