web-dev-qa-db-fra.com

Erreur ImagePullBackOff Google Kubernetes Engine

Je sais que beaucoup de gens avaient déjà une question similaire, j'en ai lu quelques-uns, mais je n'ai rien trouvé qui m'a vraiment aidé jusqu'à présent.

J'ai un gitlab avec repo privé activé, j'utilise également Google Kubernetes Engine. J'ai quelques conteneurs Docker dans mon référentiel privé et je souhaite déployer l'un d'entre eux sur le moteur Kubernetes.

J'ai créé un secret avec kubectl create secret generic db-user-pass --from-file=./username.txt --from-file=./password.txt J'ai aussi essayé kubectl create secret docker-registry name --docker-server=registry.xy.z --docker-username=google --docker-password=xyz [email protected] Ensuite, j'ai créé mon fichier de déploiement:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: backend-test
labels:
app: 13371337
spec:
replicas: 1
template:
metadata:
labels:
app: 13371337
spec:
  containers:
  - name: backend
    image: registry.xy.z/group/project/backend:latest
    imagePullPolicy: Always
    ports:
    - containerPort: 8080
  imagePullSecrets:
  - name: db-user-pass or name

Des idées pour le faire fonctionner?

6
eragon-2006

En utilisant kubectl create secret docker-registry name est un dans le bon sens pour fournir les informations d'identification du registre de docker privé.

imagePullSecrets les options sont également belles, si vous spécifiez un nom pour votre secret de registre docker.

Ainsi, depuis le chemin Kubernetes, tout a l'air bien.

Essayez de vérifier les événements du pod qui seront créés par le déploiement, trouvez simplement votre pod par kubectl get pods et appelez kubectl describe pod $name_of_your_pod, vous verrez une raison réelle pour laquelle il ne peut pas tirer une image.

De plus, si votre dépositaire n'est pas sécurisé ou possède un certificat auto-signé, essayez de suivre ce guide pour permettre au démon docker d'extraire l'image à partir de là, ce qui est souvent une raison d'échecs d'extraction d'image.

6
Anton Kostenko

Afin de créer un secret, vous pouvez utiliser la commande suivante: (remarquez que je lui ai donné un nom)

kubectl create secret docker-registry my_registry \
--docker-server=registry.xy.z \
--docker-username=google \
--docker-password=xyz \
[email protected]

ou en utilisant yaml:

apiVersion: v1
kind: Secret
metadata:
  name: my_registry
type: Opaque
data:
  docker-server: registry.xy.z
  docker-username: google
  docker-password: xyz
  docker-email: [email protected]

et votre déploiement doit utiliser le nom secret:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: backend-test
labels:
app: 13371337
spec:
replicas: 1
template:
metadata:
labels:
app: 13371337
spec:
  containers:
  - name: backend
    image: registry.xy.z/group/project/backend:latest
    imagePullPolicy: Always
    ports:
    - containerPort: 8080
  imagePullSecrets:
  - name: my_registry

Remarque: vous devez créer le secret par espace de noms.

4
Ami Hollander