J'essayais de placer des breloques Juju sur des conteneurs Linux et les conteneurs n'ont pas pu démarrer. Pour déboguer le problème, j’ai sshed dans le nœud où cela s’est passé et j’ai essayé de créer manuellement un conteneur LXC, comme ceci:
ubuntu@slot13:~$ Sudo lxc-create -t ubuntu -n pavan
Checking cache download in /var/cache/lxc/trusty/rootfs-AMD64 ...
Installing packages in template: ssh,vim,language-pack-en
Downloading ubuntu trusty minimal ...
I: Retrieving Release
Il ne fait aucun progrès du tout. C'est coincé ici depuis très longtemps. Après un temps très long, il dit:
ERROR: Unable to fetch GPG key from keyserver
et continue de pendre. Enfin, après 20-30 minutes, il abandonne comme
E: Failed getting release file http://archive.ubuntu.com/ubuntu/dists/trusty/Release
Où se trouvent les fichiers journaux correspondant à la commande lxc-create
? Comment puis-je déboguer ce problème?
EDIT: J'ai compris comment afficher les journaux de débogage et j'ai donc exécuté la commande ci-dessous plusieurs fois.
Sudo lxc-create -t ubuntu -n pavan --logfile=test.txt --logpriority=DEBUG
test.txt
contient seulement ceci
lxc-create 1414897265.204 ERROR lxc_container - Error: pavan creation was not completed
lxc-create 1414897407.757 ERROR lxc_container - Error: pavan creation was not completed
lxc-create 1414897407.759 WARN lxc_log - lxc_log_init called with log already initialized
Mais cela reste bloqué et les journaux de débogage n'offrent pas beaucoup d'aide.
Êtes-vous derrière un proxy? Si oui, alors vous pouvez définir votre proxy en bash. Problème suivant,
export http_proxy="http://<proxy_Host>:<port>"
Veuillez ajouter le drapeau --no-validate
pour ignorer la validation du gpg:
lxc-create -t ubuntu -n pavan -- --no-validate
Voir https://github.com/lxc/lxc/blob/master/templates/lxc-download.in#L24
Merci Felipe pour la solution de contournement - pour un correctif complet, nécessitait également:
mkdir /var/lib/lxc/juju-trusty-lxc-template/rootfs/var/log/juju
Détails:
le déploiement de tout service échouait constamment, le statut juju indiquant:
agent-state-info: 'container failed to start and was destroyed: jjo-local-machine-1'
trouvé à /var/lib/juju/containers/jjo-local-machine-5/container.log:
lxc-start 1427066682.951 ERROR lxc_conf - conf.c:mount_entry:1711 - No such file or directory - failed to mount '/var/log/juju-jjo-local' on '/usr/lib/x86_64-linux-gnu/lxc/var/log/juju'
La création du répertoire le corrige, déploie plus avant ok:
mkdir /var/lib/lxc/juju-trusty-lxc-template/rootfs/var/log/juju
En fait, juju utilise le modèle 'ubuntu-cloud' pour saisir une image. La commande exécutée pour créer le modèle dans mon système exécutant trusty est la suivante:
lxc-create -n juju-trusty-lxc-template \
-t ubuntu-cloud \
-f /var/lib/juju/containers/juju-trusty-lxc-template/lxc.conf \
-- --debug \
--userdata /var/lib/juju/containers/juju-trusty-lxc-template/cloud-init \
--hostid juju-trusty-lxc-template
-r trusty
Je vous suggère de lancer quelque chose comme ça et de voir quelle erreur vous donne.
Si vous êtes derrière un pare-feu qui restreint l’accès à Internet, vous risquez d’obtenir cette erreur:
$ lxc-create -t download -n my-container
Setting up the GPG keyring
ERROR: Unable to fetch GPG key from keyserver.
lxc-create: lxccontainer.c: create_run_template: 1297 container
creation template for my-container failed
lxc-create: tools/lxc_create.c: main: 318 Error creating
container my-container
Connectez-vous au serveur de clés via le port 80:
$ lxc-create -t download -n my-container \
-- --keyserver hkp://p80.pool.sks-keyservers.net:80
Le serveur de clés, hkp://p80.pool.sks-keyservers.net:80
, provient du code source lxc
:
apt source lxc
grep -ri hkp: .
J'ai eu le même problème. Nous avons un serveur proxy avec une mauvaise implémentation http/1.0 qui pose des problèmes avec l'extraction gpg keyserver. Pour contourner le problème, vous pouvez ajouter la clé manuellement en procédant comme suit:
Allez à http://keyserver.ubuntu.com et recherchez la clé suivante: 0xBAEFF88C22F6E216 (trouvée dans/usr/share/lxc/templates/lxc-download recherchez DOWNLOAD_KEYID). Téléchargez-le et enregistrez-le dans un fichier nommé keyfile
Maintenant, le fichier enregistré peut être ajouté au trousseau de clés système, par exemple. en utilisant
Sudo apt-key add keyfile
Il y a plus de façons de l'ajouter, mais utiliser ubuntu est une méthode efficace. Peut-être que vous pouvez aussi utiliser directement gpg. Après avoir ajouté, il n’est plus nécessaire que Lxc contacte le serveur de clés et le problème a été résolu pour moi.