2016-04-26 3 views
4

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

MY POD YAML

kind: Pod 
apiVersion: v1 
metadata: 
    name: yumserver 
    labels: 
    name: frontendhttp 
spec: 
    containers: 
    - name: myfrontend 
     image: my/nginx:latest 
     ports: 
     - containerPort: 80 
      name: "http-server" 
     volumeMounts: 
     - mountPath: "/usr/share/nginx/html" 
     name: mypd 
    imagePullSecrets: 
    - name: myregistrykey 

    volumes: 
    - name: mypd 
     persistentVolumeClaim: 
     claimName: myclaim-1 

МОЯ КОМАНДА KUBERNETES

kubectl создать -f стручок-yumserver.yaml

ошибка

kubectl describe pod yumserver 


Name: yumserver 
Namespace: default 
Image(s): my/nginx:latest 
Node:  127.0.0.1/127.0.0.1 
Start Time: Tue, 26 Apr 2016 16:31:42 +0100 
Labels:  name=frontendhttp 
Status:  Pending 
Reason:  
Message:  
IP:  172.17.0.2 
Controllers: <none> 
Containers: 
    myfrontend: 
    Container ID: 
    Image:  my/nginx:latest 
    Image ID:  
    QoS Tier: 
     memory:  BestEffort 
     cpu:  BestEffort 
    State:  Waiting 
     Reason:  ErrImagePull 
    Ready:  False 
    Restart Count: 0 
    Environment Variables: 
Conditions: 
    Type  Status 
    Ready  False 
Volumes: 
    mypd: 
    Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace) 
    ClaimName: myclaim-1 
    ReadOnly: false 
    default-token-64w08: 
    Type: Secret (a secret that should populate this volume) 
    SecretName: default-token-64w08 
Events: 
    FirstSeen LastSeen Count From   SubobjectPath   Type  Reason   Message 
    --------- -------- ----- ----   -------------   -------- ------   ------- 
    13s  13s  1 {default-scheduler }     Normal  Scheduled  Successfully assigned yumserver to 127.0.0.1 
    13s  13s  1 {kubelet 127.0.0.1}     Warning  MissingClusterDNS kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. Falling back to DNSDefault policy. 
    12s  12s  1 {kubelet 127.0.0.1} spec.containers{myfrontend} Normal  Pulling   pulling image "my/nginx:latest" 
    8s  8s  1 {kubelet 127.0.0.1} spec.containers{myfrontend} Warning  Failed   Failed to pull image "my/nginx:latest": Error: image my/nginx:latest not found 
    8s  8s  1 {kubelet 127.0.0.1}     Warning  FailedSync  Error syncing pod, skipping: failed to "StartContainer" for "myfrontend" with ErrImagePull: "Error: image my/nginx:latest not found" 

ответ

2

Самый простой способ дальнейшего анализа ErrImagePull Проблема заключается в ssh в узел и попытаться вытащить изображение вручную, выполнив docker pull my/nginx:latest. Я никогда не настраивал Kubernetes на одну машину, но мог предположить, что демон Docker недоступен из узла по какой-то причине. Попытка ручного притяжения должна предоставить дополнительную информацию.

+0

докера тянуть мой/Nginx: последние Попытки вытащить docker.io/my/nginx хранилища ... не удался Ошибки при натяжении изображения: Получить https: //index.docker. io/v1/repositories/my/nginx/images: dial tcp: lookup index.docker.io: Нет адреса, связанного с именем хоста – ginda

+0

Это выводит команду og my docker images: – ginda

+0

docker images REPOSITORY TAG IMAGE ID СОЗДАНО ВИРТУАЛЬНЫЙ РАЗМЕР my/nginx последние 04938de4965a 2 недели назад 182.6 MB – ginda

3

Значит, у вас есть изображение на вашей машине. Тем не менее он по-прежнему пытается вытащить изображение из Docker Hub, что, скорее всего, не так, как вы хотите, на вашей машине. Это происходит из-за того, что последний тег автоматически устанавливает для параметра imagePullPolicy значение Always. Вы можете попытаться установить его в значение IfNotPresent явно или изменить тег, отличный от последнего. - Тимо Рейман 28 апреля в 7:16

По какой-то причине Тимо Рейман сделал это только сообщение выше в качестве комментария, но он, безусловно, должен быть официальный ответ на этот вопрос, поэтому я отправляю его снова.

+1

BTW IMHO вы всегда должны указывать версию в любом случае. Делает все намного более предсказуемым ... –

2

Запустите eval $ (minikube docker-env) перед тем, как создать свое изображение.

Полного ответ здесь: https://stackoverflow.com/a/40150867

+0

minikube не упоминается, что используется –