kubernetes
쿠버네티스의 네트워크는 일반적인 네트워크와 동일하게 작동할까요? 기본적인 네트워크에서는 IP주소/포트 기반으로 라우팅이되고 합의된 프로토콜을 통해 정보를 주고 받습니다. 쿠버네티스 내부에서 사용되는 네트워크는 일반적인 네트워크와 컨셉은 동일하지만, 도메인/라우팅 등을 직접 사용하지 않고 가상 네트워크를 사용합니다.
만약 2개의 노드에 동일한 컨테이너를 3개 띄운다고 생각해 봅니다. 이때 동일한 컨테이너의 애플리케이션은 동일한 포트를 사용하기 때문에, 동일한 포트를 가진 컨테이너가 노드에 적어도 하나는 존재하게 됩니다. 하지만 컨테이너에 띄워진 Application의 내부 포트는 컨테이너 안에서만 유지됩니다. 즉, 컨테이너 외부 포트는 호스트의 랜덤한 포트와 연결이 되고, 그 외부 포트로 컨테이너들을 식별합니다.
컨테이너와 노드는 계속 생성/종료되는 특성을 가집니다. 쿠버네티스에서는 물리적 네트워크 위에 가상 네트워크(=overlay network)를 만들어서, 그 네트워크로 외부 호출을 합니다. 이러한 개념을 바탕으로 쿠버네티스가 호출하는 방식을 크게 3가지로 나눌 수 있습니다. 세가지는 외부에서 쿠버 내부를 호출(다른 tag 컨테이너 사이의 호출), 쿠버 내부끼리의 호출, 쿠버 내부에서 외부 호출입니다.