쿠버네티스 네트워크
클러스터 네트워킹
쿠버네티스 클러스터 네트워크
- 아래의 이미지는 고수준의 컴포넌트 아키텍처이며 더 자세한 내용은 쿠버네티스 공식 문서를 참고한다.
- 전체 클러스터를 위한 하나의 가상 네트워크다.
- 각 파드에는 고유한 IP가 존재한다.
- 서비스는 파드와 다른 범위의 IP 대역을 가진다.
- 클러스터 CIDR: 클러스터 내 파드에 할당하는데 사용되는 IP 범위다.
- 서비스 클러스터 IP 범위: 서비스에 대한 IP 범위이며 클러스터 CIDR와 중첩되면 안된다.
- 파드 CIDR: 특정 워커 노드 내 파드에 대한 IP 범위이며 이 범위는 클러스터 CIDR 내에 있어야 하지만 다른 워커 노드의 파드 CIDR과 겹치면 안된다.
Master and Node (Minion)
쿠버네티스 네트워킹
- IP는 컨테이너가 아니라 파드에 할당된다.
- 컨테이너간 통신: 커플드(Highly-coupled)된 컨테이너간 통신을 위해 파드와 로컬 호스트 통신으로 해결한다.
- 파드간 통신: 클러스터 통신의 주목적으로 K8S 네트워크 플러그인, 서비스를 사용한다.
- 파드와 서비스 통신: 서비스에서 담당한다.
- 외부와 서비스 통신: 서비스에서 담당한다.
- 파드 내부의 container-to-container 통신: 컨테이너 엔진(예: 도커)이 담당한다.
- 외부와 파트 통신: Service, Ingress, Egress를 사용한다.
클러스터 네트워킹 구성
- 사용자의 파드 접속: 인터넷 사용자들의 클라이언트는 파드에 직접 접속할 수 있고 서비스를 설정해야 한다.
- 서비스 정책: 서비스는 kube-proxy에 의해 관리되고 여러 개의 iptables 규칙으로 설정할 수 있다.
서비스의 외부 연결 방법
- NodePort
- clusterIP
- LoadBalancer
Kubernetes Worker Network
- Kubernetes는 파드 단위로 배포가 되며 하나의 파드는 Overlay Network을 가진다.
- 파드는 하나 이상의 컨테이너를 가지게 되지만 파드에는 하나의 IP만 부여할 수 있다.
Node간 Network Communication
- 서로 다른 노드에 있는 파드간 통신은 Proxy Container(Kube-proxy)를 통해서 구성할 수 있다.
외부와 Network Communication
- 클라이언트가 외부에서 해당 서비스에 접근하기 위해서는 크게 NodePort와 LoadBalancer를 사용할 수 있다.
- NodePort는 해당 Worker 노드의 포트를 외부에 오픈해서 사용자가 직접 Worker 노드의 포트로 직접 접속하는 방식을 사용한다.
- LoadBalancer의 경우 서비스를 배포하고 나면 External IP로 Loadbalcner로 접속하도록 설정할 수 있다.
Ingress
- 서비스와 파드는 클러스터 네트워크에 의해 라우팅이 가능한 IP들을 가진다.
- Ingress란 클러스터 서비스들에게 연결하기 위한 inbound connection을 허용하는 규칙들의 모음이다.
- 단순히 트래픽을 로드 밸런싱 해주는 것 이외에도 SSL, Virtual Host 등의 기능을 제공한다.
- Ingress를 사용하여 NodePort로 서비스를 배포한다.
Overlay network
- 가상 네트워크 인터페이스와 bridge와 라우팅 rule의 조합을 overlay network라고 한다.
- 쿠버네티스 네트워크에서는 overlay network를 이용하여 파드들이 서로 정보를 주고 받기 때문에 파드 네트워크라고 한다.
CNI
컨테이너 네트워크 인터페이스
- CNCF 프로젝트 중 하나다.
- 리눅스 컨테이너를 위한 네트워킹으로 런타임과 플러그인 간의 상호 작용을 정의한다.
- 컨테이너 간의 네트워킹을 제어할 수 있는 플러그인을 만들기 위한 표준 API다.
- 더 자세한 내용은 CNCF 공식문서를 참고한다.
Adopters (Plugins)
Container runtimes
- CoreOS Tectonic: Enterprise Ready, Prtable, Upstream Kubernetes
- rkt: container engine
- Kurma: container runtime
- Kubernetes: a system to simplify container operations
- OpenShift: Red Hat's container platform
- Cloud Foundry: a platform for cloud applications
- Apache Mesos: a distributed systems kernel
3rd party plugins
- Project Calico: a layer 3 virtual network
- Weave: a multi-host Docker network
- Contiv Networking: policy networking for various use cases
- SR-IOV
- Cilium: BPF & XDP for containers
- Infoblox: enterprise IP address management for containers
- Multus: a Multi plugin
- Romana: Layer 3 CLI plugin supporting network policy for Kubernetes
- CNI-Genie: generic CNI network plugin
- flannel a network fabric for containers, designed for Kubernetes
- CoreOS Kubernetes Namespace CNI: select CNI plugin per-namespace
- VMware NSX plugin
- Nuage VSP plugin
오버레이
오버레이 개념
- 더 자세한 내용은 쿠버네티스 공식 문서를 참고한다.
'Infrastructure > Kubernetes' 카테고리의 다른 글
[CKA] Kubernetes Overview (0) | 2024.11.14 |
---|---|
[Basic] 쿠버네티스 오케스트레이션 실습 (0) | 2024.06.09 |
[Basic] 쿠버네티스 보안 (0) | 2024.06.09 |
[Basic] 쿠버네티스 모니터링 (0) | 2024.06.09 |
[Basic] 쿠버네티스 배포 (0) | 2024.06.09 |