DevOps/Docker
다수의 컨테이너 운용 시 외부에서 컨테이너에 접근하는 방법- Docker swarm 과 쿠버네티스의 차이
가을맛
2021. 9. 6. 17:05
동일한 서버 앱이 같은 호스트에 여러 개 동작할 필요성이 있다.
- 만약 싱글코어인 경우 메리트 없지만
- 멀티 코어인 경우 throughtput과 serviceablitiy 측면에서 더 좋기때문.
문제 : 같은 서비스의 경우 포트번호가 같을 텐데 어떻게 하지?
- 외부에서 한 서버의 특정 서비스에 접근하려면 해당 서비스의 포트번호를 알아야 한다.
- host는 하나의 앱에 하나의 unique 한 포트번호를 부여한다. (하나의 포트번호는 하나의 앱에만 할당될 수 있다)
- 때문에 같은 서비스를 여러 개 실행시킬 경우 각 서비스의 포트번호가 달라지는 문제가 발생할 수 있다.
해결 방법
(1) Docker swarm
reverse proxy SW 사용
reverse proxy SW 는하나의 포트번호로 다수의 컨테이너들에 접근 가능할 수 있게 중간 다리 역할을 한다.
프록시
- 외부에 하나의 대표 번호만 보여주는 것
리버스 프록시
- 외부에서 하나의 포트번호로 접근 시 reverse proxy SW가 적절한 포트번호에 배분하는 것
(2) 쿠버네티스
가상 호스트 안에서 "pod" 사용
- pod는 실제 서비스를 제공하는 컨테이너들을 위한 관리 및 네트워크 퍼실리티를 제공하는 포장지임.
- Docker와 달리 리버스 프록시 sw를 사용하지 않음
- pod는 호스트 (포드 to 포드 통신은 호스트 to 호스트와 같다.)
- 포트번호 충돌이 없다 : 각각의 포드(각각의 호스트)는 unique 한 ip주소를 갖기 때문
- pod는 컨테이너 레벨에서 DNS 주소 받을 수 있음