2016-08-25 4 views
0

私は、3つの群管理者と3つのノードでセットアップを作成しました。Docker Swarmマネージャはノードを代行していますか?

実際に私は3マスターと3人の労働者の場合、3マネージャーと6ノードがあります。管理者は労働者だけでなく容器も運営できると考えていますか?私はセットアップで何かを見逃しているのですか、これは今のように動作するように意図されていますか?

私はドッキングウィンドウinfoコマンドを実行したときに、私はこの出力を取得しています:

[email protected]:~$ docker info 
Containers: 4 
Running: 3 
Paused: 0 
Stopped: 1 
Images: 3 
Server Version: 1.12.0 
Storage Driver: aufs 
Root Dir: /var/lib/docker/aufs 
Backing Filesystem: extfs 
Dirs: 23 
Dirperm1 Supported: false 
Logging Driver: json-file 
Cgroup Driver: cgroupfs 
Plugins: 
Volume: local 
Network: overlay bridge host null 
Swarm: active 
NodeID: 9uv3xhwzibx52xghpsa0sp3f7 
Is Manager: true 
ClusterID: 04r095rvj6b4i7ygbnr2quo9e 
**Managers: 3 
Nodes: 6** 
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: 172.100.0.23 
Runtimes: runc 
Default Runtime: runc 
Security Options: apparmor 
Kernel Version: 3.13.0-92-generic 
Operating System: Ubuntu 14.04.4 LTS 
OSType: linux 
Architecture: x86_64 
CPUs: 1 
Total Memory: 992.5 MiB 
Name: manager3 
ID: MUXB:GUNV:HIDO:APRJ:S2JU:763E:QSOL:2554:EZJL:L4OI:6TS5:RD7O 
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 

私は群れのクラスタ上で実行するために、いくつかのサービスを作成する場合:

docker service create --replicas=3 --name redis redis:latest

それらのいくつかは、上で実行されますマネージャ、一部は労働者です。それは私を混乱させる。

私は、彼らがクラスタ内のすべてのマシン上で実行されます

docker service create --replicas=6 --name redis redis:latest

より多くのサービスを作成する場合。ポートコリジョンのためにさらに増加することに失敗します。

答えて

3

スウォームマネージャーとして実行されているノード(ホスト)は、実行中のサービスに関する限り、ワーカーとして実行されているノード(ホスト)と同じです。それぞれ3つのノードの集団を持つ(そして作業者がいない)ことは、まったく問題ありません。

ポートコリジョンに関しては、サービスを作成するときに(ホスト上の)パブリックポートを指定する必要があります。例えば:

docker create service --name redis --publish 8080:80 --replicas 5 redis:latest 

ドッカー次いで(着信要求と同じノード上にある必要はない)クラスタにRedisのコンテナのいずれかのノードのいずれかのポート8080への着信要求を負荷分散します

@マークオコナーの答えに
+0

ので、サービスを実行するために管理者を制限するいかなるpossiblityはありませんか?もう1つの質問:サービスリクエストのためのコードで注釈をつけられたコンサルをいくつか実行し、領事代理人が-net = hostモードになっている場合、オーバレイネットワークからのマイクロサービスが/からネットへのトラフィックの検索とルーティングを行う可能性はありますか? =ホストネットワークですか? :$ –

+1

@DušanŠušićコンテナを実行しないようにマネージャを設定することは可能です。参照:https://docs.docker.com/engine/swarm/admin_guide/#/run-manager-only-nodes –

+0

@ Mark O'Connorが書いているように、マネージャーが労働者として行動しないように指定することができます。サービスを作成/更新するときに制約を使用して、ノードを実行するノードを指定することもできます。 https://docs.docker.com/engine/reference/commandline/service_create/#/specify-service-constraintsを参照してください。 あなたの他の質問は、他の人がそれを見つけることができない場合は、新しいstackoverflow投稿を作成します。問題はあまり明確ではない。詳細、コード例を含めるようにしてください。 – Alkaline

3

おかげである:デフォルトの管理ノードによって

もワーカーノードとして動作します。

Managerは、排出し、「のみ」マネージャーとどまるので、あなたがマネージャにこのコマンドを実行しますすることができ、作業者でなくなっ:

docker node update --availability drain *manager_name* 
関連する問題