2017-09-22 2 views
2

クラッシュが発生しました。この問題は、ドッカーのスアーム状態が保留中であり、ノードステータスがUNKNOWNであることを示しています。これは私のdocker info結果であるドッカーswarmを保留状態から復旧できない

[email protected]:~$ docker info 
Containers: 270 
Running: 0 
Paused: 0 
Stopped: 270 
Images: 160 
Server Version: 1.12.2 
Storage Driver: aufs 
Root Dir: /var/lib/docker/aufs 
Backing Filesystem: extfs 
Dirs: 1211 
Dirperm1 Supported: true 
Logging Driver: json-file 
Cgroup Driver: cgroupfs 
Plugins: 
Volume: local 
Network: host bridge null overlay 
Swarm: pending 
NodeID: d9hq8wzz6skh9pzrxzhbckm97 
Is Manager: true 
ClusterID: 5zgab5w50qgvvep35eqcbote2 
Managers: 1 
Nodes: 2 
Orchestration: 
    Task History Retention Limit: 5 
Raft: 
    Snapshot Interval: 10000 
    Heartbeat Tick: 1 
    Election Tick: 3 
Dispatcher: 
    Heartbeat Period: 5 seconds 
CA Configuration: 
    Expiry Duration: 3 months 
Node Address: HIDDEN 
Runtimes: runc 
Default Runtime: runc 
Security Options: apparmor seccomp 
Kernel Version: 4.4.0-91-generic 
Operating System: Ubuntu 16.04.1 LTS 
OSType: linux 
Architecture: x86_64 
CPUs: 2 
Total Memory: 6.804 GiB 
Name: swarm-manager-1 
ID: AXPO:VFSV:TDT3:6X7Y:QNAO:OZJN:U23R:V5S2:FU33:WUNI:CRPK:2E2C 
Docker Root Dir: /var/lib/docker 
Debug Mode (client): false 
Debug Mode (server): false 
Registry: https://index.docker.io/v1/ 
WARNING: No swap limit support 
Insecure Registries: 
127.0.0.0/8 

これは私のドッキングウィンドウのノードLSですが、結果:

ID       HOSTNAME   STATUS AVAILABILITY MANAGER STATUS 
9tlo3rg7tuc23xzc3am28lak1 swarm-worker-1 Unknown Active   
d9hq8wzz6skh9pzrxzhbckm97 * swarm-manager-1 Unknown Active  Leader 

私はドッキングウィンドウエンジンとVMを再起動しようとしましたが、どのような方法では役立ちません。システムは実際には私がdocker psと言うとき、それはすべてのコンテナを表示しますが、マネージャ上には何もないです。docker psには何もありません。

答えて

0

Swarmの私の経験では、同様のトラブルに対する唯一の解決策は、群れを破壊することでした。そして、あなたがこれを行うときには、おそらくdocker system prune(削除できる貴重なものはありません)とservice docker restartも行うべきです。そして、新しい群を設定してください。

それは吸う。私が知っている

0

一度にすべての群れを一度に再構築するのではなく、一度に1つずつ各ノードを削除して再追加することができます。これは、群の状態が破壊されず、サービスを修正しながらサービスを続行できます。しかし、このプロセスは、管理者のクォーラムがない場合にはかなり複雑になります。

最初に、ノードIDをメモします(ここでは、$ WORKER_IDと$ MANAGER_IDを参照します)。管理ノードで

docker node update --availability drain $WORKER_ID 

^これはオプションですが、群れでライブサービスで作業する場合、それは良い習慣です。

docker swarm join-token manager 

^このコマンドは、削除された後に各ノードで実行するjoinコマンドを提供します。私はそれを$ JOIN_COMMANDと呼んでいます。マネージャーが再参加したら、私たちは作業員を降格させます。

労働者の場合:

docker swarm leave 
$JOIN_COMMAND 

このノードは現在、マネージャーとして再入社ですが、私は混乱を避けるために、「労働者、それを呼び出し続けます。マネージャで

docker node rm $WORKER_ID 
docker node update --availability drain $MANAGER_ID 
docker swarm leave -f 
$JOIN_COMMAND 
docker node rm $MANAGER_ID 
docker node ls 

は、労働者の新しいIDを探す(ホスト名ではなく、役割に注意を払う) - > $ NEW_WORKER_ID

docker node demote $NEW_WORKER_ID 

あなたの群れをリフレッシュする必要がある - があった場合より多くのノードでは、各ノード上で実行されているサービスは、各ノードを使い果たしたときに群れを渡って移行していました。

まだ動作しない(と関係なく)場合、実際にはは、ドッカーv17.06以降にアップグレードすることを検討する必要があります。スウォームのネットワーキングはそれ以前には非常に不安定で、競争状態に起因する多くの問題を引き起こしました。

関連する問題