본문 바로가기

알아두면 좋은 IT 지식/General

WSL Docker Desktop Kubernetes Network Architecture - 윈도우 도커 데스크탑 쿠버네티스 네트워크 구성

도커 데스크탑 쿠버네티스 환경 wsl-host-k8s 네트워크 구성도

 

설명

윈도우환경에서 도커로 대표되는 컨테이너 개념과 쿠버네티스 기술을 사용하기 위한 여러가지 방법이 존재한다.

그 중 WSL2와 Docker Desktop을 통해서 Kubernetes를 사용하는 방법이 있는데,

이 경 기본적으로 쿠버네티스 싱글 노드가 구축되고 리눅스 커널을 사용하게 된다.

 

host인 윈도우와 wsl2 환경인 리눅스, 그리고 쿠버네티스 환경까지 총 3가지 환경을 다루게 되고,

서로 다른 환경에 구축된 프로그램들끼리 통신을 해야 할 필요성이 있다.

 

이 때 윈도우의 Host Network Adapter localhost가 바로 그 중심에서 다리 역할을 수행한다.

 

사용 예제

1. 윈도우환경에 0.0.0.0:1521 로 동작 중인 데이터베이스를 리눅스나 쿠버네티스에서 접속할 경우

   - 리눅스 → 윈도우: localhost

      - ex. jdbc:oracle:thin@0.0.0.0:1521:xe

   - 쿠버네티스 → 윈도우 : Host(Windows PC) IP

      - ex. jdbc:oracle:thin@192.168.0.2:1521:xe

 

2. 리눅스환경에 0.0.0.0:30000 로 Listen 중인 TCP 엔드포인트를 윈도우나 쿠버네티스에서 접속할 경우

   - 윈도우 → 리눅스 : localhost

      - ex. telnet 127.0.0.1 30000

   - 쿠버네티스 → 리눅스 : Host( Windows PC ) IP

       - ex. telnet 192.168.0.2 1521

       - 윈도우 netsh 포트포워딩 필요

           - ex. netsh interface portproxy add v4tov4 listenport=8629 listenaddress=192.168.172.30 \

                   connectport=8629 connectaddress=127.0.0.1

 

3. 쿠버네티스환경에 0.0.0.0:8080 로 서비스 중인 api서버를 윈도우나 리눅스에서 접속할 경우

   - 쿠버네티스 Service의 포트포워딩 필요

      - ex. port: 8080

              nodePort: 30080

              targetPort: 8080

   - 쿠버네티스 Service의 type이 LoadBalancer인 경우 외부 IP로 localhost가 기본적으로 제공 됨

      - ex. type: LoadBalancer

   - 윈도우  →  쿠버네티스 : localhost

      - ex. http://localhost:8080/v1/api

   - 리눅스  → 쿠버네티스 : localhost

      - ex. http://localhost:8080/v1/api