Ошибка сервера (BadRequest): контейнер «espace-client-client» в модуле «espace-client-client» ожидает запуска: пытается и не может получить изображение - PullRequest
0 голосов
/ 23 сентября 2019

Я развернул свое первое приложение на своем кластере Kubernetes prod месяц назад.

Я мог бы развернуть свои 2 службы (спереди и сзади) из реестра gitlab.

Теперь я нажалновый образ докера для реестра gitlab, и я хотел бы повторно развернуть его в prod:

Вот мой файл развертывания:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  annotations:
    reloader.stakater.com/auto: "true"
  labels:
    app: espace-client-client
  name: espace-client-client
  namespace: espace-client
spec:
  replicas: 1
  strategy: {}
  template:
    metadata:
      labels:
        app: espace-client-client
    spec:
      containers:
      - envFrom:
        - secretRef:
           name: espace-client-client-env
        image: registry.gitlab.com/xxx/espace_client/client:latest
        name: espace-client-client
        ports:
        - containerPort: 3000
        resources: {}
      restartPolicy: Always
      imagePullSecrets:
        - name: gitlab-registry

Понятия не имею, что находится внутри gitlab-registry.Я не делал это сам, и люди, которые сделали это, покинули команду :( Тем не менее, у меня есть все разрешения, так что мне нужно только знать, что добавить в секрет, и, возможно, удалить его и воссоздать его.

Похоже, что секрет основан на моем .docker / config.json

➜  espace-client git:(k8s) ✗ kubectl describe secrets gitlab-registry                                                                                
Name:         gitlab-registry
Namespace:    default
Labels:       <none>
Annotations:  <none>

Type:  kubernetes.io/dockerconfigjson

Data
====
.dockerconfigjson:  174 bytes

Я попытался удалить существующий секрет, выйдите из системы с помощью

docker logout registry.gitlab.com
kubectl delete secret gitlab-registry

Затем войдите снова:

docker login registry.gitlab.com -u myGitlabUser
Password: 
Login Succeeded

и вытяните изображение с:

docker pull registry.gitlab.com/xxx/espace_client/client:latest

, что сработало.

файл: ~/.docker/config.json выглядит странно:

{
        "auths": {
                "registry.gitlab.com": {}
        },
        "HttpHeaders": {
                "User-Agent": "Docker-Client/18.09.6 (linux)"
        },
        "credsStore": "secretservice"
}

Кажется, он не содержит никаких учетных данных ...

Затем я воссоздаю свой секрет

kubectl create secret generic gitlab-registry \
    --from-file=.dockerconfigjson=/home/julien/.docker/config.json \
    --type=kubernetes.io/dockerconfigjson

Я также попытался сделать:

kubectl create secret docker-registry gitlab-registry --docker-server=registry.gitlab.com --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email>

и развернуть снова:

kubectl rollout restart deployment/espace-client-client -n espace-client

но у меня все та же ошибка:

Error from server (BadRequest): container "espace-client-client" in pod "espace-client-client-6c8b88f795-wcrlh" is waiting to start: trying and failing to pull image

1 Ответ

1 голос
/ 23 сентября 2019

Вам необходимо обновить секрет gitlab-registry, поскольку этот элемент позволяет Kubelet вытягивать защищенное изображение с использованием учетных данных.

Пожалуйста, удалите старый секрет с помощью kubectl -n yournamespace delete secret gitlab-registryи воссоздайте его, введя учетные данные:

kubectl -n yournamespace create secret docker-registry my-secret --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD[ --docker-email=DOCKER_EMAIL]

где: - DOCKER_REGISTRY_SERVER - это экземпляр реестра GitLab Docker - DOCKER_USER - это имя пользователя учетной записи робота для извлечения изображений - DOCKER_PASSWORD - это пароль, прикрепленный кучетная запись робота

Вы можете игнорировать docker-email, поскольку это не обязательно (обратите внимание на квадратные скобки).

...