본문으로 바로가기

Kubernetes 네트워크 구조

category Kubernetes/Kubernetes 사용법 2021. 11. 17. 13:35

 1. 쿠버네티스 CNI (Container Network Interface)

    - pod 안의 컨테이너는 localhost로 통신을 할 수 있음

    - 원리는 도커 컨테이너가 시작될 때 만들어지는 veth0 가상네트워크 인터페이스가 생성되고,

       veth0 인터페이스를 통하여 서로 같은 네트워크에 상에 존재 하기 때문

 

    * 이슈 : 여러 개의 노드가 생성 될 경우 (ex: master, node1, node2)

 

    - 위의 이슈를 가정해본다 하면 자체적으로 veth 네트워크 인터페이스로 통신은 가능하지만

      노드 끼리의 통신은 불가능한 상황이 발생

    - 노드 끼리 통신을 위한 네트워크 구성을 별도로 만들어야 하는 상황 (오버레이 네트워크)

 

    * 오버레이 네트워크 : 실제 노드 간의 네트워크 위에 별도 Flat 네트워크를 구성

   

      쿠버네티스는 자체적으로 네트워크 구성을 해주지 않기 때문에 클러스터를 구성할 때 CNI 플러그인을 함께 설치해        야 한다

     - 대표 적인 CNI 플러그인 : Flannel, Calico

 2. 쿠버네티스 DNS

    - 쿠버네티스에서는 클러스터 내부에서 사용 가능한 DNS를 설정하여 사용할 수 있습니다.

      그래서 POD간 통신을 할 때 IP가 아닌 도메인을 설정하고 사용할 수 있습니다.

    - 클러스터에서 도메인 사용하기

       . 쿠버네티스에서 사용하는 내부 도메인은 일정한 패턴을 보유

       . 구조 : 'NS'.'Service'.svc.cluster.local

           NS = 네임스페이스 (AQUA)

           Service =등록한 서비스 (AQUA-WEB)

           svc.cluster.local = 기본 도메인 (쿠버네티스 도메인)

       . EX: dns-test.yaml

 3. 쿠버네티스 SERVICE

    - Pod의 경우 IP가 랜덤하게 지정이 되고 재시작이 될 경우 변하기 때문에 고정 엔드포인트 호출이 어렵다. 또한

      여 POD에 같은 APP을 운용할 경우 POD간 로드 밸런싱을 지원해야 하는데 서비스는 이러한 역할을 하게 된다.

 

    - Service Type (크게 4종류)

      1) ClusterIP : 기본 설정으로 서비스에 클러스터 IP를 할당, 외부IP가 없기에 접근 불가

      2) NodePort : 모든 노드의 IP + PORT를 사용하여 외부 접근이 가능

      3) LoadBalancer : 외부 IP를 할당하여 외부 접근을 사용

      4) External name : 외부서비스를 쿠버네티스 내부에서 호출하고자 할 때 사용

         ex:

    - 그 외 서비스

      ExternalIP: externalIPs : 192.168.222.50 입력 하여 직접 IP를 할당

      headless service, dns 등등 존재

 

 4. 쿠버네티스 Ingress

    - 쿠버네티스 CNI Addon 종류중 하나, 외부에서 쿠버네티스에 실행중인 deployservice에 접근하기 위한 관문(Gateway) 역할

      ingress : 외부에서 내부로 유입되는 네트워크 트래픽

 

    - Ingress 기능

      1) 외부에서 접근 가능한 URL을 사용 할 수 있음 (HOSTING이 되어 있어야함)

      2) 트래픽 로드밸런싱

      3) SSL 인증서 처리

      4) PATH-BASED ROUTING (도메인 기반으로 호스팅 제공)

      5) SSL/TLS Termination

      6) virtual hosts

 

    - Ingress, Ingress controller

      쿠버네티스에서 Ingress를 사용하기 위해서 두 가지가 필요

      . Ingress 오브젝트

      . Ingress가 적용될 Controller

 

     - MetalLB (쿠버네티스 Addon) – LoadBalancer 환경의 Ingress

      Ingress 요청을 위한 Service TypeLoadbalancer Type을 사용

      On-Premise 환경은 운영중인 Ingress를 직접 구축해야 되어 MetalLB를 사용 할 수 있음 

      url : https://ikcoo.tistory.com/16 (Ingress 상세설명)

   

     - MetalLB 구조

 

 

'Kubernetes > Kubernetes 사용법' 카테고리의 다른 글

Argocd-github 연결  (0) 2022.12.12
Istio 모니터링 (feat. nginx)  (0) 2022.12.08
Ingress 에 cert-manager 연결  (0) 2022.12.05