Kubernetes의 애플리케이션 네트워킹 변화 과정Kubernetes의 네트워킹 스택은 마이크로서비스 아키텍처의 발전과 함께 진화해 왔습니다.첫 시작 : 단일 Kubernetes 클러스터 환경단일 클러스터 환경에서는 CoreDNS와 Ingress 리소스를 통해 내부 서비스 간 통신 및 외부 통신을 네이티브 하게 구현합니다. 초기에는 기본 Service 리소스(NodePort, ClusterIP, LoadBalancer)로 시작하여 점차 Ingress를 활용한 경로 기반 라우팅과 SSL/TLS 보안 기능으로 발전했습니다. 이 단계에서는 주로 기본적인 내부 통신과 외부 노출 기능에 중점을 두었습니다.워크로드의 진화: 멀티 클러스터 환경에서의 네트워킹 과제멀티 클러스터 환경으로 발전하면서 클러스터 간 통신에..
1. AI 워크로드에 대한 컨테이너 사용AI 워크로드와 컨테이너: GPU 가상화의 필요성최근, AI가 대두되면서, 더욱 복잡하고, 대용량 데이터를 처리하는 모델을 다루면서, 이러한 워크로드는 고성능 GPU 인프라를 요구한다.특히 병렬 연산에 특화된 GPU는 딥러닝 학습 속도를 크게 향상한다. 과거에는 베어메탈 환경에 직접 GPU 드라이버와 프레임워크(CUDA, cuDNN 등)를 설치해 사용하는 방식이 일반적이었다. 하지만 이 방식은 다음과 같은 문제를 안고 있었다:• 환경 구성이 복잡하고 프레임워크마다 버전 호환성이 까다롭다.• GPU 리소스가 특정 사용자에 고정되면서 전체 활용률이 낮아진다.• 대규모 분산 학습 환경으로의 확장이 어렵다. 컨테이너 기술 도입 이후 개선된 점과 한계컨테이너는 Linux 커..
📌 해당 글은 가시다님의 AEWS 스터디 중, AWS EKS Upgrade Workshop에 대한 실습 정리 글입니다. 실습환경을 제공해주신 최영락 님에게 감사드립니다.먼저, 쿠버네티스 업그레이드 이해하기Amazon EKS 업그레이드를 논하기 전에, 먼저 Kubernetes 업그레이드의 기본 개념부터 살펴봅니다.쿠버네티스는 여러 컴포넌트가 서로 상호작용하는 분산 시스템으로, 단순히 버전만 올리는 작업이 아니라, 구성요소 간의 호환성과 순서를 고려해야 합니다. 지원 되는 버전Kubernetes는 가장 최근의 3개 마이너 버전만 공식 패치를 제공합니다.예를 들어 현재 시점 기준으로는 v1.30 v1.31 v1.32가 패치 대상이며, v1.29 이하의 버전에서는 보안 패치조차 지원되지 않습니다.참고로..
FargateFargate란? EKS Fargate는 AWS에서 제공하는 서버리스 Kubernetes 컴퓨팅 서비스입니다. 일반 EKS는 컨트롤 플레인만 AWS가 관리하지만, Fargate는 데이터 플레인까지 관리해 주므로 인프라 걱정 없이 애플리케이션 개발에 집중할 수 있습니다. 하지만, AWS에서 데이터플레인까지 관리하는 영역이 넓어진 만큼, 여러 가지 제약사항과 고려사항이 존재합니다.CPU와 메모리는 정해진 단위(예: 0.25, 0.5, 1.0 vCPU 및 512MB, 1GB 등)로만 할당할 수 있습니다.데몬 셋은 Fargate에서 지원하지 않습니다.특권 컨테이너(Privileged containers)가 지원되지 않습니다.HostPort 또는 HostNetwork를 지정할 수 없습니다Fargate..
1. Karpenter란?AWS Karpenter는 Kubernetes 클러스터의 노드 프로비저닝을 자동화하는 오픈소스 도구로, Kubernetes 네이티브 오토스케일러입니다. 워크로드 요구사항에 맞게 적절한 컴퓨팅 리소스를 실시간으로 프로비저닝 하여 클러스터의 효율성과 비용 최적화를 동시에 달성합니다.Cluster Autoscaler vs KarpenterCluster Autoscaler?CAS(Cluster Autoscaler)는 클러스터에서 파드가 스케줄링되지 못하는 상황을 감지하고 클러스터의 노드 수를 자동으로 조정하는 도구입니다.EKS에서는 ASG(Auto Scaling group)을 이용하여 노드의 수를 조정하였습니다. 기존에는 노드 프로비저닝 자동화 도구로 CA(Cluster Autosca..
CSI(Container Storage Interface)란?CSI(Container Storage Interface)는 쿠버네티스가 다양한 스토리지 시스템과 쉽게 연결될 수 있도록 만든 표준 인터페이스이다. 예전에는 AWS EBS 같은 스토리지 기능이 쿠버네티스 코드 안에 직접 포함되어 있어서, 스토리지 기능을 업데이트하려면 쿠버네티스 전체를 업그레이드해야 했다. 이런 불편함을 해결하기 위해 스토리지 관련 코드를 외부로 분리한 것이 바로 CSI이며, 이를 통해 스토리지 기능을 필요할 때마다 독립적으로 추가하고 업데이트할 수 있게 되었다. 다양한 벤더사의 CSI Driver가 존재하지만, AWS EBS CSI Driver로 예를 들면, csi-controller 파드(Statefulset or Deplo..
AWS VPC CNIAWS VPC CNI(Container Network Interface)는 Amazon EKS 클러스터의 파드 네트워킹을 담당하는 네트워크 플러그인이다. AWS CNI는 다른 CNI들과는 주요 특징은 다음과 같다.노드와 파드의 네트워크 대역이 같다.ENI와 L-IPAM을 함께 활용하여 다른 CNI와 차별화된 네트워크 방식을 제공한다.워커 노드의 인스턴스 타입별 파드 생성 개수 제한이 있다. 노드와 파드의 네트워크 대역이 같다노드와 파드의 네트워크 대역이 같다. 이는 VPC의 서브넷 IP를 파드에 직접 할당함으로써, 파드가 마치 VPC 내의 일반적인 EC2 인스턴스처럼 동작할 수 있게 한다. 일반적인 K8S CNI는 오버레이(VXLAN, IP-IP)등으로 통신하기 때문에 오버헤드가 발생..
EKS 배포EKS를 배포 방법에는 3가지 방법이 있습니다.AWS 웹 관리 콘솔eksctlIaC(CDK, CloudFormation, Terraform)이번 실습에서는 eksctl 명령어를 활용하여 EKS를 배포합니다.eksctleksctl은 Amazon EKS 클러스터를 생성하고 관리하기 위한 공식 CLI(Command Line Interface) 도구입니다.eksctl로 클러스터 생성 시, 내부 로직(코드)을 살펴보면 aws cloudformation 서비스를 통해서 스택을 생성하고 업데이트를 수행합니다. eksctl 설치 OS 플랫폼에 맞게 eksctl을 설치합니다.실습은 ubuntu(amd64) 환경에서 진행합니다.# for ARM systems, set ARCH to: `arm64`, `armv6..