Kubernetes 네트워킹이란?

 

K8s라고도 하는 Kubernetes는 머신 클러스터 전반에 걸쳐 애플리케이션 컨테이너의 배포, 스케줄링, 모니터링, 유지 보수, 운영을 관리하고 자동화하는 데 사용되는 오픈 소스 플랫폼입니다.

Google에서 개발한 Kubernetes의 네트워킹을 활용하여 관리자는 프라이빗, 퍼블릭 및 하이브리드 클라우드 인프라 간에 워크로드를 이동할 수 있습니다. 개발자는 Kubernetes를 사용하여 인프라의 요구 사항에 맞게 소프트웨어 애플리케이션을 패키징하고 새로운 버전을 빠르게 배포할 수 있습니다.


Kubernetes 네트워킹을 통해 Kubernetes의 구성 요소가 서로 통신하며, 다른 애플리케이션과도 통신합니다. 호스트 포트를 컨테이너 포트에 매핑할 필요가 없는 평면 네트워크 구조를 기반으로 한다는 점에서 Kubernetes 플랫폼은 다른 네트워킹 플랫폼과 차별화됩니다. Kubernetes 플랫폼은 포트를 동적으로 할당하지 않고도 애플리케이션 간에 머신을 공유하여 분산 시스템을 실행하는 새로운 방식을 제공합니다.

소프트웨어 정의 애플리케이션 서비스를 활용하는 최신 로드 밸런싱

자세한 정보 

Kubernetes 포드 네트워크란?

Kubernetes 포드 네트워크는 상호 연관된 여러 구성 요소를 연결합니다.

  • 포드: Kubernetes 포드는 콩깍지나 고래 무리와 같이 자연에서 발견되는 실제 포드에서 영감을 받았습니다. 포드는 동일한 노드의 네트워킹과 스토리지 리소스를 공유하는 컨테이너 그룹입니다. 이들은 API 서버로 생성되고 컨트롤러에 의해 배치됩니다. 각 포드에는 IP 주소가 할당되며, 포드의 모든 컨테이너는 동일한 스토리지, IP 주소, 포트 공간(네트워크 네임스페이스)을 공유합니다. 
  • 컨테이너: Kubernetes 컨테이너는 여러 애플리케이션 간에 운영 체제(OS)를 공유하는 가상 머신과 같습니다. 자체 파일 시스템, CPU, 메모리와 처리 공간을 가지고 있습니다. 컨테이너는 항상 포드 내에서 생성되며, 하나의 포드 내에 여러 컨테이너를 생성할 수 있습니다. 동일한 포드 내의 컨테이너들은 함께 이동하고, 스케줄링되며, 종료됩니다. 포드는 클라우드 간에 이동이 가능합니다. 컨테이너는 컨테이너 네트워킹을 통해 다른 컨테이너, 호스트, 외부 네트워크와 연결할 수 있습니다.
  • 노드: 포드는 항상 작업자 노드 내에서 실행됩니다. 노드는 컨테이너화된 애플리케이션을 실행하는 머신입니다. Kubernetes는 클러스터 내의 이러한 노드를 그룹화합니다.
  • 마스터 노드: 노드의 각 클러스터는 작업자 노드를 관리하는 마스터 노드를 하나 이상 보유합니다. 마스터는 클러스터 내의 각 노드와 통신하거나 모든 포드와 개별적으로 통신할 수 있습니다.

Kubernetes의 네트워킹은 어떻게 작동합니까?

포드, 컨테이너, 노드, 애플리케이션 등 Kubernetes 플랫폼의 다양한 구성 요소는 통신에 다양한 네트워킹 방식을 사용합니다. 컨테이너 간 통신, 포드 간 통신, 포드 와 서비스 간 통신, 외부와 서비스 간 통신이 있습니다.

포드 간 통신은 Kubernetes의 기반이 됩니다. 포드는 네트워크 플러그인에 의해 설정된 네트워크 정책에 따라 서로 통신하며, 이때 서로 간에 명시적으로 링크를 생성하거나 컨테이너 포트를 호스트 포트에 매핑하지 않습니다. 포드가 동일한 네트워크 네임스페이스를 공유하며 각자 고유한 IP 주소를 가지고 있기 때문에, NAT(네트워크 주소 변환)를 사용하지 않고도 로컬 호스트를 사용하여 모든 노드 내의 다른 모든 포드를 찾아 통신할 수 있습니다. 

내부 네트워크가 외부 네트워크와 분리되어 있기 때문에, 내부(횡방향) 트래픽과 외부(종방향) 트래픽의 상호 작용 문제를 해결하는 것이 Kubernetes의 당면 과제 중 하나입니다. 하지만 노드 간에 이동하는 트래픽은 노드와 외부의 물리적 또는 가상 머신 간에도 이동할 수 있습니다. 외부 트래픽을 Kubernetes 클러스터로 가져오는 방법은 몇 가지가 있습니다.

  • LoadBalancer: LoadBalancer는 외부에서 서비스를 인터넷에 연결하는 표준 방식입니다. 이 시나리오에서는 네트워크 로드 밸런서가 모든 외부 트래픽을 서비스로 전달합니다. 각 서비스는 고유 IP 주소를 얻습니다.
  • ClusterIP: ClusterIP는 내부 통신을 위한 기본 Kubernetes 서비스입니다. 하지만 외부 트래픽은 프록시를 통해 기본 Kubernetes ClusterIP 서비스에 액세스할 수 있습니다. 이것은 서비스를 디버깅하거나 내부 대시보드를 표시하는 데 유용하게 쓰일 수 있습니다. 
  • NodePort: NodePort는 노드 혹은 가상 머신의 포트를 엽니다. 그러면 트래픽이 포트에서 서비스로 전달됩니다. 이것은 데모 애플리케이션과 같이 항상 가용성을 보장할 필요는 없는 서비스에 주로 사용됩니다.
  • Ingress: Ingress는 로드 밸런서를 통해 트래픽을 서비스로 라우팅하는 라우터 혹은 컨트롤러 역할을 합니다. 동일한 IP 주소를 사용하여 여러 서비스를 노출하려는 경우에 유용합니다.

Kubernetes 네트워킹의 또 다른 핵심 요소는 컨테이너 네트워킹 인터페이스, 즉 CNI입니다. CNI는 노드 전반의 포드를 연결하며 네트워크 네임스페이스와 네트워크 플러그인 또는 네트워크 공급업체와 Kubernetes 네트워크 간의 인터페이스 역할을 수행합니다. 서로 다른 기능을 제공하는 여러 CNI 공급업체와 플러그인 중에서 선택할 수 있습니다. CNI 플러그인에는 포드가 프로비저닝되고 폐기될 때 네트워크 및 리소스를 동적으로 구성하는 기능이 있습니다. 이 플러그인은 컨테이너가 생성되거나 제거됨에 따라 IP 주소를 프로비저닝하고 관리합니다. Kubernetes의 기본 네트워킹 공급업체는 Kubernetes이지만, Flannel, Calico, Canal, Weave Net과 같은 CNI 플러그인이 추가적인 기능을 제공합니다.

 

Kubernetes 네트워킹을 구현하려면?

네트워크 관리자는 매우 다양한 방식으로 Kubernetes 네트워킹 모델을 구현할 수 있습니다. Gartner는 2019년 데이터 센터 네트워킹에 대한 매직 쿼드런트 보고서에서 아래와 같은 Kubernetes 네트워킹 사례들을 "혁신을 선도"하는 것으로 인정했습니다.

  • Big Switch Networks의 Big Cloud Fabric: 프라이빗 클라우드 환경에서 Kubernetes를 실행하는 클라우드 네이티브 네트워킹 아키텍처입니다.
  • Cumulus NetQ: 컨테이너 배포에 대한 가시성을 제공하는 원격 측정 기반 Fabric 검증 시스템입니다.
  • Dell EMC: Kubernetes와 컨테이너에 대한 통합 지원으로 기존 애플리케이션과 클라우드 네이티브 환경을 모두 지원하는 클라우드 플랫폼입니다.
  • VMware NSX-T: 네이티브 컨테이너 네트워킹을 비롯한 멀티 클라우드 또는 멀티 하이퍼바이저 환경의 네트워크를 가상화하는 네트워크 가상화 및 보안 플랫폼입니다.

Kubernetes를 활용한 네트워킹

Video Play Icon

VMware Kubernetes 네트워킹 관련 제품, 솔루션, 참고 자료

VMware NSX: 최고의 기업용 네트워킹 및 보안 가상화 플랫폼

VMware NSX Data Center는 완전한 L2-L7 네트워킹 및 보안 가상화 플랫폼을 제공하므로 단일 창에서 전체 네트워크를 단일 항목으로 관리할 수 있습니다.

VMware Enterprise PKS

VMware Enterprise PKS를 시작해 보십시오. Kubernetes를 배포, 실행, 관리하여 운영의 생산성과 효율성을 향상할 수 있습니다.

VMware NSX를 통한 컨테이너 네트워킹

컨테이너화된 애플리케이션 및 마이크로 서비스에 통합된 전체 스택 네트워킹 및 보안을 제공합니다.

VMware Tanzu

신속하게 애플리케이션을 구축하고, 일관되게 오픈 소스 Kubernetes를 운영하고, 전체 설치 공간을 안정적으로 관리하십시오.