Docker on OpenStack 네트워크
도커 설치 전 인스턴스 네트워크 이더넷 상태
도커 설치 직후 인스턴스 네트워크 이더넷 상태 : docker 0 생성
도커 네트워크 : 기본으로 생성되는 삼총사 네트워크
docker network inspect none
root@master:/home/ubuntu# docker network inspect none
[
{
"Name": "none",
"Id": "ccd990d3b13996325502765935790e9b33f055584714cdd22419f4620bef45b9",
"Created": "2020-09-22T12:16:40.606411834Z",
"Scope": "local",
"Driver": "null",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": []
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {},
"Options": {},
"Labels": {}
}
]
docker network inspect bridge
root@master:/home/ubuntu# docker network inspect bridge
[
{
"Name": "bridge",
"Id": "9ba861425364a0d3084b972f830d09f3fed1a0c59e8fff2e1fb610803e70eb5f",
"Created": "2020-09-22T12:16:42.986616683Z",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.17.0.0/16"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {},
"Options": {
"com.docker.network.bridge.default_bridge": "true",
"com.docker.network.bridge.enable_icc": "true",
"com.docker.network.bridge.enable_ip_masquerade": "true",
"com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
"com.docker.network.bridge.name": "docker0",
"com.docker.network.driver.mtu": "1500"
},
"Labels": {}
}
]
docker network inspect host
[
{
"Name": "host",
"Id": "e8f710b4fbad710fdf9429331b71cded0a1c0503e6561db82ba40cb8e3eff074",
"Created": "2020-09-22T12:16:41.506699668Z",
"Scope": "local",
"Driver": "host",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": []
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {},
"Options": {},
"Labels": {}
}
]
도커 컨테이너 (nginx) 실행 후 호스트 노드 이더넷 : 가상 veth 생성
브리지 네트워크 상태 확인 : 가상 인터페이스veth이 docker0에 연결되어 있음
실행 중인 해당 컨테이너 접속하여 확인 : 기본 이더넷 상태 eth0(docker0과 같은 대역)
컨테이너의 게이트웨이 확인: 172.17.0.1 즉, 컨테이너 호스트 노드의 docker0 가 게이트웨이
도커 스웜 시작 후 매니저 노드의 호스트 이더넷: docker_gwbridge생성 (172.18.0.1)
도커 스웜 시작 후 워커 노드의 호스트 이더넷: docker_gwbridge생성 (172.18.0.1)
docker network inspect docker_gwbridge
root@master:/home/ubuntu# docker network inspect docker_gwbridge
[
{
"Name": "docker_gwbridge",
"Id": "55b13c3da0bdd3d9072bdc8a8ecca0b3b41c476dd24f57cba670f8e64717343b",
"Created": "2020-09-22T12:24:22.98450816Z",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.18.0.0/16",
"Gateway": "172.18.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {},
"Options": {
"com.docker.network.bridge.enable_icc": "false",
"com.docker.network.bridge.enable_ip_masquerade": "true",
"com.docker.network.bridge.name": "docker_gwbridge"
},
"Labels": {}
}
]
스웜모드 서비스 실행 후 매니저 노드 이더넷 : veth 하나 더 추가 됨
스웜 모드 서비스 추가 (scale)하면 그차이 만큼 추가되어 실행 : 그림 속 4/5 & 5/5
서비스 생성과 함게 사라진 이더넷
도커 스웜 모드로 스택 구축 전 오버레이 네트워크 생성
도커 네트워크 생성은 호스트 이더넷에 영향을 주지 않음
스택 서비스 생성 후 워커 노드에 veth 생성
스택 서비스 생성 후 매니저 노드에 veth 하나 생성
스택으로 nginx와 함께 배포한 haproxy 기능 확인
더보기
version: '3'
services:
nginx:
image: nginx
deploy:
version: '3'
services:
nginx:
image: nginx
deploy:
replicas: 4
placement:
constraints: [node.role != manager]
restart_policy:
condition: on-failure
max_attempts: 3
environment:
SERVICE_PORTS: 80
networks:
- web
proxy:
image: dockercloud/haproxy
depends_on:
- nginx
volumes:
- /var/run/docker.sock:/var/run/docker.sock
ports:
- 8003:80
networks:
- web
deploy:
mode: global
placement:
constraints: [node.role == manager]
networks:
web:
external: true
도커 스웜 스택으로 배포된 컨테이너의 이더넷
도커 스웜 스택 모드로 구축된 컨테이너 라우팅 표
도커 스웜 모드 스택 서비스 배포 후 web 오버레이 네트워크 정보
root@manager:~/swarm# docker network inspect web
[
{
"Name": "web",
"Id": "ht5eylfv97syxgq4gola08kai",
"Created": "2020-09-20T05:08:31.641625003Z",
"Scope": "swarm",
"Driver": "overlay",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "10.0.1.0/24",
"Gateway": "10.0.1.1"
}
]
},
"Internal": false,
"Attachable": true,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"d9dc493fe06c34d5745c64f2a9cce5f80d31c4eaa94629594e2b7a3b7671d2a9": {
"Name": "web_proxy.hhcpv43uof7ehl7izasfoojth.qoa0516lx7cxjnt5vbgy8xamc",
"EndpointID": "b62126d3867d9668f088d6f90ab552d70ecbf1682079b31d4379a0349c08611c",
"MacAddress": "02:42:0a:00:01:0a",
"IPv4Address": "10.0.1.10/24",
"IPv6Address": ""
},
"lb-web": {
"Name": "web-endpoint",
"EndpointID": "96d1bf5260313e30bb21cfc7e847ca9271f4236bfe3d6c7121fce443221cce59",
"MacAddress": "02:42:0a:00:01:0b",
"IPv4Address": "10.0.1.11/24",
"IPv6Address": ""
}
},
"Options": {
"com.docker.network.driver.overlay.vxlanid_list": "4097"
},
"Labels": {},
"Peers": [
{
"Name": "464d79eeec9b",
"IP": "100.0.0.183"
},
{
"Name": "fa5a657818b5",
"IP": "100.0.0.61"
},
{
"Name": "62dc11333319",
"IP": "100.0.0.131"
}
]
}
]
도커 스택 현황
비주얼라이저로 스웜 모드 서비스 배포 상태 확인
도커 스웜 스택 (wordpress와 mysql) 5쌍 배포 결과
워드프레스 및 db 배포 후 호스트 노드 이더넷
db컨테이너 생성되면서 마운트 포인트에 생성된 디렉토리 확인
스택 배포 후 매니저 노드 브리지 상태 : 도커 스웜모드에서 배포된 모든 컨테이너의 인터페이스의 게이트웨이는 모두 docker_gwbridge
스택 배포 후 매니저 노드 routing 테이블
무언가 새롭게 생긴..게이트웨이와 destination.. -> 추가 공부 필요 ,도커관련이 아닌 호스트에 연관된 라우팅표인가
도커 스웜 스택 글로벌 배포 후 상황 (한 노드에 한 쌍씩)
글로벌 배포 후 호스트 노드 이더넷 상황
도커 스웜 모드 ingress 네트워크 inspect 결과
[
{
"Name": "ingress",
"Id": "pzxbnmuoi05gumxguxkf0choq",
"Created": "2020-09-20T04:28:38.343927817Z",
"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,
"Attachable": false,
"Ingress": true,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"ingress-sbox": {
"Name": "ingress-endpoint",
"EndpointID": "327b3ff7728b36dddd3190cdd21d121b2773ff5866465ac34feb40899411f7fc",
"MacAddress": "02:42:0a:00:00:02",
"IPv4Address": "10.0.0.2/24",
"IPv6Address": ""
}
},
"Options": {
"com.docker.network.driver.overlay.vxlanid_list": "4096"
},
"Labels": {},
"Peers": [
{
"Name": "62dc11333319",
"IP": "100.0.0.131"
},
{
"Name": "fa5a657818b5",
"IP": "100.0.0.61"
},
{
"Name": "464d79eeec9b",
"IP": "100.0.0.183"
}
]
}
]
글로벌 배포 후 각 노드의 공인IP:8004로 접속
글로벌 배포 후 매니저 노드 호스트의 db 컨테이너 ip a
글로벌 배포 후 매니저 노드 호스트의 wordpress 컨테이너 ip a
그나저나 워드프레스 접속 어떡하죠,,
글로벌 배포 후 비주얼라이저 확인: haproxy로 로드밸런싱 기능 시도
스웜모드의 로드밸런싱 기능 확인을 위한 워드프레스 php 파일 수정
글로벌 서비스 배포 후 매니저 노드의 이더넷 상황 다시 확인
글로벌 서비스 배포 후 워커 노드의 이더넷 상황 다시 확인
워커 노드의 브릿지 상태
워커 노드의 ifconfig
'자기발전소 > # Docker and K8s' 카테고리의 다른 글
Docker 공부: 컨테이너와 볼륨 연결 (0) | 2020.10.03 |
---|---|
Kubernetes Cluster 설치 (CentOS 7) (0) | 2020.10.02 |
K8s 공부 : 쿠버네티스의 개요 (0) | 2020.10.01 |
Docker 공부 : 도커 기본 명령어 숙지 (0) | 2020.09.18 |
Docker 공부 : Docker on OpenStack (0) | 2020.09.18 |