Amazon VPC CNIAmazon EKS에서는 Amazon VPC CNI 플러그인을 통해서 클러스터 간 네트워크 연결을 지원합니다.이전에 다루었던, 다른 네트워크 플러그인(Flannel, Calico, Cilium)과 구별되는 Amazone VPC CNI의 주요 특징은 다음과 같습니다.VPC 네트워크와의 통합Kubernetes의 파드가 AWS VPC의 네트워크 대역과 통합되어, VPC Flow logs, VPC 라우팅 정책, 보안그룹 등의 사용이 가능해집니다.ipamd를 통한 ENI 및 IP풀 관리ipamd가 ENI 및 IP 풀을 자동 관리하여 최적화된 네트워크 설정을 제공합니다.네트워크 성능 최적화노드와 파드가 같은 IP 대역을 사용하므로, 직접 통신이 가능해 네트워크 경로가 단순해지고 최적의 성능..
Kubernetes/Network
eBPF(extended Berkeley Packet Filter)eBPF는 샌드박스(Sandbox) 기술을 사용해서 커널에서 안전하게 사용자 프로그램을 실행할 수 있도록 하는 기술입니다. eBPF 프로그램은 JIT(Just-In-Time) 컴파일러에 의해 런타임에서 프로그램을 커널에 로드하고, 빠르게 동작시킬 수 있습니다. 또한 JIT 컴파일러를 거치기 전에, Verifier를 통해 검증되기 때문에, 프로그램이 커널에 손상을 주거나 시스템을 불안정하게 만들 가능성을 줄입니다.얼마 전, 크라우드 스트라이크 사태에서도, 윈도우의 업데이트 패치에서 커널을 잘못건드려 전 세계 시스템이 마비가 된 적이 있습니다. 이처럼 커널을 제어하는 것은 매우 어려운 일이며, 안전하고 빠른 프로그램을 만들 수 있는 eBPF가..
Istio 개요서비스 메쉬(Service Mesh)의 등장서비스 메쉬의 필요성은 컨테이너 기술의 발전과 함께 부각되었습니다. 서비스가 점점 더 작아지고, 그 개수는 늘어나면서 전체 시스템을 모니터링하는 일이 점점 어려워졌습니다. 특히 서비스 운영 중 발생하는 장애나 병목의 원인을 파악하기 힘든 상황이 자주 발생하게 되었습니다. 그래서 이러한 문제들을 해결하기 위해 서비스 메쉬가 등장했습니다.Istio란?Istio는 오픈 소스 서비스 메쉬 솔루션으로, 마이크로서비스 아키텍처에서 통신과 관련된 복잡성을 줄여주는 도구입니다. Istio는 데이터 플레인과 컨트롤 플레인으로 구성되어 있으며, 데이터 플레인은 각 서비스 간의 트래픽을 제어하고, 컨트롤 플레인은 정책 관리와 설정을 담당합니다. 이를 통해 Istio는..
Kubernetes IngressIngress쿠버네티스 인그레스(Ingress)는 클러스터 외부의 트래픽을 내부 서비스로 라우팅하는 중요한 API 객체입니다.클러스터 내의 서비스에 외부에서 접근하기 위해 NodePort나 LoadBalancer를 사용할 수 있지만, Ingress를 이용하면 더 효율적이고 유연하게 트래픽을 관리할 수 있습니다.Ingress는 경로 기반 및 호스트 기반의 라우팅 규칙을 설정할 수 있습니다.TLS 인증서를 활용해 HTTPS 트래픽을 처리할 수 있어 복잡한 웹 애플리케이션 환경에서도 효과적인 트래픽 관리가 가능합니다.https://kubernetes.io/docs/concepts/services-networking/ingress/Ingress-Controller인그레스 컨트롤러..
사전 지식kube-proxy에서 사용하는 IPVS 모드는 리눅스 커널에서 제공하는 핵심 네트워크 기술을 가지고 동작합니다. 1.IPVS(IP Virtual Serve)리눅스 커널에서 제공하는 L4 로드벨런서IPVS는 Netfilter 안에서 동작(Netfilter를 백엔드로 사용)TCP/UDP 요청을 처리2.Ipset리눅스 커널에서 네트워크 객체 집합을 그룹화하고 관리하는 도구IP주소, 네트워크, 포트 등iptable로 관리하는 룰셋이 많아질 때, 성능이 저하되는 것을 방지하고 효율적으로 네트워크를 관리할 수 있는 도구.ipvs proxy mode에서는 아래와 같이 네트워크의 목적에 따라, 다양한 쿠버네티스 집합들로 구성됩니다.IPVS Proxy 모드란?IPVS Proxy 모드는 kube-proxy에서 ..
MetalLB 개요MetalLB는 BareMetal LoadBalancer의 약자로, 온프레미스 환경에서도 클라우드 로드 밸런서처럼 사용할 수 있는 서비스(로드밸런서 타입)입니다. 퍼블릭 클라우드 환경 AWS의 경우, LoadBalancer 타입의 서비스를 사용할 때, 클라우드 제공자의 로드밸런서(ALB)가 자동으로 할당되지만, 온프레미스 환경에서는 이러한 로드밸런서가 기본적으로 제공되지 않기 때문에 MetalLB를 사용하여 클러스터 외부로 서비스를 노출할 수 있습니다. MetalLB는 AWS, GCP 등 대부분의 퍼블릭 클라우드 환경을 지원하지는 않습니다. MetalLB 특징 데몬셋으로 speaker 파드를 생성하여 External IP를 전파합니다. speaker 파드는 호스트 네트워크 사용(Netw..
Calico CNI란?Calico CNI는 컨테이너 오케스트레이션 플랫폼에서 사용되는 네트워크 및 보안 솔루션인Calico의 Container Network Interface(CNI) 플러그인입니다. 주로 Kubernetes와 같은 플랫폼에서 파드(Pod) 간의 네트워크 연결을 제공하고, 네트워크 정책을 통해 보안을 관리하는 데 사용됩니다. Calico 기본 통신 이해 1. 동일 노드 간 파드 통신 노드(k8s-w1)에 파드 2개 생성# node1-pod2.yamlapiVersion: v1kind: Podmetadata: name: pod1spec: nodeName: k8s-w1 containers: - name: pod1 image: nicolaka/netshoot command:..
PAUSE 컨테이너 들어가며 쿠버네티스를 구축하면서 애를 먹었던 적이 있었는데, 그때의 원인이 바로 Pause 컨테이너였습니다.폐쇄망 환경에서 containerd가 사용하는 Pause 컨테이너 이미지가 존재하지 않아 쿠버네티스 클러스터 bootstrap 과정에서 에러가 발생하였습니다. 보이지 않는 뒷 단에 프로세스로 존재하기 때문에 원인을 쉽게 찾을 수 없었습니다. 그때 만약 CreatePodSandBox 오류가 Pause 컨테이너와 관련된 에러인 줄 알았다면, 금방 에러를 파악할 수 있었을 겁니다. 이후에 파드의 인프라를 관리해주는 컨테이너라고만 어렴풋이 알고 넘겼는데, 이번 스터디를 통해서 Pause Container에 대해 좀 더 자세하게 알아봅니다. Pause 컨테이너란?PodSandBoxPo..