In the fifth series of container networking we will see some more concepts of
how networking works in containers.
Pod to Pod Communication between multiple Nodes
In order to test this, we need to have a docker swarm started and run some services so that each container or service runs on different hosts. Lets check the available docker networks,
[root@manja17-I14021 ~]# docker network ls
Now start the docker swarm by advertising the current machine Host ip as
To add a worker to this swarm, run the following command:
docker swarm join \
Now if you see the available networks again ,we can see some more networks are created.
[root@manja17-I14021 ~]# docker network ls
We created a new network with overlay driver. Now lets run a container as a
Check the service ( i ran 2 replica of services )
If we see the service where it is running , we can see
We can see a network space is available for the foobar and ip range is also available.Now if
Both the containers are created from the Overlay network foobar which has the IP
This is how multiple containers running on different hosts talk to each other. Now
lets move to kubernetes on how it does.
how networking works in containers.
Pod to Pod Communication between multiple Nodes
Before seeing how multiple pods talk to each other from different nodes, lets see
how we can let containers running on different nodes talk to each other in Docker.
Docker networking for multiple containers running on multiple hosts
how we can let containers running on different nodes talk to each other in Docker.
Docker networking for multiple containers running on multiple hosts
Communication between containers running on different hosts is done by using a
Overlay network in Docker. A Overlay network created a distributed network
among multiple docker daemon hosts. This network sits on the top ( over lay )
of the host specific network allowing containers connected to it to communicate securely. Docker will take care of handling the routing of packets from one docker daemon (host) to other docker daemon.
among multiple docker daemon hosts. This network sits on the top ( over lay )
of the host specific network allowing containers connected to it to communicate securely. Docker will take care of handling the routing of packets from one docker daemon (host) to other docker daemon.
In order to test this, we need to have a docker swarm started and run some services so that each container or service runs on different hosts. Lets check the available docker networks,
[root@manja17-I14021 ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
f5e39d24b3b2 bridge bridge local
d12415e63762 docker_gwbridge bridge local
45bcb2a8831c host host local
f3shhlxp5nkk ingress overlay swarm
9b57fcb59a81 none null local
Now start the docker swarm by advertising the current machine Host ip as
[root@manja17-I14021 ~]# docker swarm init --advertise-addr 10.131.36.181
Swarm initialized: current node (9mmp0gjkrt3v2nzznd4xqwlx3) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-33zmzxrovk2hrqxkvyx2q1sncvr4zxpjo3yz56spr5xhi1czqf 786x60a6af138gn1mxypw85uk \
10.131.36.181:2377
From the other machine join to the swarm by running,
From the other machine join to the swarm by running,
[root@manja17-I14022 ~]# docker swarm join \
> --token SWMTKN-1-33zmzxrovk2hrqxkvyx2q1sncvr4zxpjo3yz56spr5xhi1czqf-786x60a6af138gn1mxypw85uk \
> 10.131.36.181:2377
This node joined a swarm as a worker.
Now we have 2 nodes in the swarm as below,
Now we have 2 nodes in the swarm as below,
[root@manja17-I14021 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER
9mmp0gjkrt3v2nzznd4xqwlx3 * manja17-I14021 Ready Active Leader
de5bmv3i3ygmpjbjbh2zskxk9 manja17-I14022 Ready Active
Now if you see the available networks again ,we can see some more networks are created.
Now lets create our own overlay network as
[root@manja17-I14021 ~]# docker network create -d overlay foobar
ae61hmk9cam26umcmg03tpcrr
[root@manja17-I14021 ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
ae61hmk9cam2 foobar overlay swarm
We created a new network with overlay driver. Now lets run a container as a
service using,
[root@manja17-I14021 ~]# docker service create --name testing-service --network foobar --replicas 2 alpine sleep 1d
3l7b1yfgxkjg979vr2m7mtx1b
Check the service ( i ran 2 replica of services )
[root@manja17-I14021 ~]# docker service ls
ID NAME REPLICAS IMAGE COMMAND
3l7b1yfgxkjg testing-service 2/2 alpine sleep 1d
If we see the service where it is running , we can see
Lets inspect the network foobar as below,
[root@manja17-I14021 ~]# docker network inspect foobar
[
{
"Name": "foobar",
"Id": "7f86pls6d118d3rfbx1ue8d7i",
"Scope": "swarm",
"Driver": "overlay",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "10.0.0.0/24",
"Gateway": "10.0.0.1"
}
]
},
"Internal": false,
"Containers": {
"283107f7c9ab3858488bc10aceb83d558aeb2755dae95718b398e836e101c871": {
"Name": "testing-service.1.behpsu25wsrlyxcyqlynv1azf",
"EndpointID": "aff02bb1394cd9ad850739fd91b8970587abebef9ff96b6897b28360632bd916",
"MacAddress": "02:42:0a:00:00:03",
"IPv4Address": "10.0.0.3/24",
"IPv6Address": ""
}
},
"Options": {
"com.docker.network.driver.overlay.vxlanid_list": "257"
},
"Labels": {}
}
]
We can see a network space is available for the foobar and ip range is also available.Now if
we see the containers starts for the testing-service we can get 2 containers running and
if inspect the container for their IP address we can see,
[root@manja17-I14021 ~]# docker inspect 283107f7c9ab | grep IPAddress | tail -n 1 "IPAddress": "10.0.0.3",
[root@manja17-I14022 ~]# docker inspect 0f0823bc2930 | grep IPAddress | tail -n 1
"IPAddress": "10.0.0.4",
Both the containers are created from the Overlay network foobar which has the IP
address range “10.00.0/24”. So now if we login to a container and try to ping other container we can see,
[root@manja17-I14021 ~]# docker exec -it 283107f7c9ab sh
/ # ping 10.0.0.4
PING 10.0.0.4 (10.0.0.4): 56 data bytes
64 bytes from 10.0.0.4: seq=0 ttl=64 time=0.798 ms
64 bytes from 10.0.0.4: seq=1 ttl=64 time=0.490 ms
^C
--- 10.0.0.4 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.490/0.644/0.798 ms
/ # exit
The Over lay network will be created bridging the two hosts as below,
The Over lay network will be created bridging the two hosts as below,
This is how multiple containers running on different hosts talk to each other. Now
lets move to kubernetes on how it does.
No comments :
Post a Comment