web-dev-qa-db-ja.com

lxc-createがハングし、最終的に失敗する

Linuxコンテナにいくつかのジュジュチャームを配置しようとしていたが、コンテナの起動に失敗しました。問題をデバッグするには、これが発生したノードにsshedし、LXCコンテナーを手動で作成してみました

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

まったく進歩していません。その長い間ここで立ち往生。本当に長い時間を経て

ERROR: Unable to fetch GPG key from keyserver

ハングし続けます。最終的に20〜30分後、それはあきらめます

E: Failed getting release file http://archive.ubuntu.com/ubuntu/dists/trusty/Release

lxc-createコマンドに対応するログファイルはどこにありますか?この問題をデバッグするにはどうすればよいですか?

EDIT:デバッグログを表示する方法を見つけたため、以下のコマンドを数回実行しました

Sudo lxc-create -t ubuntu -n pavan --logfile=test.txt --logpriority=DEBUG

test.txtにはこれのみが含まれます

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

しかし、それでもハングし、デバッグログはあまり役に立ちません。

4
Pavan Manjunath

プロキシの背後にいますか?はいの場合、プロキシをbashに設定できます。次の問題、

export http_proxy="http://<proxy_Host>:<port>"
3
Pradeeper

Gpg検証をスキップするには、--no-validateフラグを追加してください:

lxc-create -t ubuntu -n pavan -- --no-validate

参照 https://github.com/lxc/lxc/blob/master/templates/lxc-download.in#L24

6
Mukul

回避策を提供してくれたFelipeに感謝します-完全な修正を行うには、次の操作も必要です

mkdir /var/lib/lxc/juju-trusty-lxc-template/rootfs/var/log/juju

詳細:

  1. 上記のFelipeのupdateListアイテムに従ってlxc-createを実行しました
  2. サービスのデプロイは常に失敗し、jujuステータスは次のように表示されます。

    agent-state-info: 'container failed to start and was destroyed: jjo-local-machine-1'
    
  3. /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'
    
  4. ディレクトリを作成すると修正され、さらに展開できます:

     mkdir /var/lib/lxc/juju-trusty-lxc-template/rootfs/var/log/juju
    
2
jjo

実際、jujuは「ubuntu-cloud」テンプレートを使用してイメージを取得します。trustyを実行しているシステムでテンプレートを作成するために実行されるコマンドは次のとおりです。

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

そのようなものを実行して、どのエラーが発生するかを確認することをお勧めします。

2
Felipe Reyes

問題

インターネットアクセスを制限するファイアウォールの内側にいる場合、次のエラーが発生する可能性があります。

$ 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

修正する

ポート80を介してキーサーバーに接続します。

$ lxc-create -t download -n my-container \
  -- --keyserver hkp://p80.pool.sks-keyservers.net:80

詳細

キーサーバーhkp://p80.pool.sks-keyservers.net:80は、lxcソースコードからのものです。

apt source lxc
grep -ri hkp: .

参照資料

2

同じ問題がありました。間違ったhttp/1.0実装のプロキシサーバーがあり、gpgキーサーバーの取得に問題があります。回避策として、次のことを行ってキーを手動で追加できます。

http://keyserver.ubuntu.com に移動し、次のキーを検索します:0xBAEFF88C22F6E216(/ usr/share/lxc/templates/lxc-downloadでDOWNLOAD_KEYIDを検索)。ダウンロードして、keyfileという名前のファイルに保存します

これで、保存したファイルをシステムキーリングに追加できます。を使用して

Sudo apt-key add keyfile

追加する方法は他にもありますが、ubuntuを使用するとこれは有効な方法です。 gpgを直接使用することもできます。追加した後、lxcがキーサーバーに接続する必要がなくなり、問題は修正されました。

1
Sven

answer in here に基づいて、IPV6を無効にするとうまくいくことがわかりました。そしてそれは私のために働いた。

これ スタックオーバーフローの答えは、その方法を示しています。

0
Jefferson