Kuberneetes의 애플리케이션 네트워킹 변화 과정한 개의 kubernetes 클러스터를 사용할 때 단일 클러스터 내부에 배포되는 kubernetes 서비스들은 클러스터 내부의 DNS 인 CoreDNS 및 Ingress 리소스를 통해서 내부 서비스 간 통신 및 외부로의 통신을 모두 네이티브하게 구현할 수 있음 사용되는 방법들기본 Service 리솟스로 시작NodePort, ClusterIP, LoadBalancer 타입의 서비스 구현Ingress 활용경로 기반 라우팅으로 서비스 구조화 및 관리 개선SSL/TLS 종단점 제공을 통한 보안 강화단순한 내부 통신과 외부 노출 기능에 중점워크로드의 진화 : 여러 개의 kubernetes 클러스터를 사용할 때 어플리케이션이 진화하고, 조직이 발전하면서 서비스들..
GenAI with Inferentia & FSx workshop 환경을 제공해주셔서 정리하였습니다. 해당 워크샵에서는 vLLM 오픈 소스 파운데이션 모델과 다음 AWS 서비스 스택을 사용하여 Gen AI 기반의 대화형 채팅 어플리케이션을 구축합니다. 환경 : EKS, FSx, S3, Open WEB UIGen AI 및 ML1. 생성형 AI생성형 AI (Generative AI)는 텍스트, 이미지, 오디오, 코드 등 다양한 콘텐츠를 프롬프트 기반으로 생성하는 AI 기술입니다.주로 대형 언어 모델 (LLM)을 활용하여 자연어를 이해하고 생성하는 데 사용됩니다.2. LLMLLM은 방대한 텍스트 데이터를 학습하여 언어의 패턴과 구조를 이해하고 생성할 수 있는 모델입니다.다양한 NLP 작업 (질의 응답, 번역,..
실습 환경 구성 (Jenkins)# 작업 디렉토리 생성 후 이동mkdir cicd-labscd cicd-labs# cicd-labs 작업 디렉토리 IDE(VSCODE 등)로 열어두기code .# cat docker-compose.yamlservices: jenkins: container_name: jenkins image: jenkins/jenkins restart: unless-stopped networks: - cicd-network ports: - "8080:8080" - "50000:50000" volumes: - /var/run/docker.sock:/var/run/docker.sock - jenkins_home:/..
개요클러스터 업그레이드를 위해 Blue/Green 배포 전략을 실습합니다.Terraform으로 인프라를 구성하고, ArgoCD로 워크로드를 GitOps 방식으로 배포, ALB와 Route53을 통해 무중단 트래픽 전환 실습Kubernetes 클러스터의 버전 업그레이드는 운영 중에도 꾸준히 요구되지만, 잘못된 업그레이드는 전체 장애로 이어질 수 있습니다. 이때 Blue/Green 전략을 통해 무중단 배포, 빠른 롤백, 점진적인 마이그레이션이 가능해집니다. 방식설명장점단점In-place기존 클러스터를 직접 업그레이드리소스 효율적, 관리 단순다운타임 가능성, 롤백 어려움Blue/Green새 클러스터 생성 후 트래픽 전환무중단, 롤백 용이비용 증가, IaC 필요Canary일부 노드/앱에만 점진 배포안정성, 테스..
K8S Scheduler 개요- 스케줄러 : 새로운 Pod를 어떤 노드에 배치할지 결정하는 역할- 사용자가 Pod를 생성하면, 스케줄러가 적절한 노드를 찾아서 할당 스케줄링의 목적특정 조건을 가진 노드에서만 실행 : NodeSelector, NodeAffinity여러 조건을 만족하는 노드 중 선택 : preferredDuringSchedulingGPU 등 장치 보유 노드 배포 : Taints, Node lable, Tolerations파드 간 배치 제어 (같은 노드 / 영역) : PodAffinity, AntiAffinity스케줄링 대기 제어 (명시적 대기) : schedulingGates노드 직접 지정 : spec.nodeName스케줄링 절차1. 필터링 (Filtering)조건에 맞지 않는 노드를 제거..
간단한 암/복호화암복호화는 평문을 제 3자가 해독할 수 없는 문장인 암호문으로 변환하여 전송하고,수신측에서 평문으로 암호문으로부터 평문을 복원하는 과정 아래와 같은 과정에서 사용하는 알고리즘을 암호 알고리즘이라고 하며, 암호화하고 복호화하는데 핵심이 되는 것이 KEY라고 한다.암호화 과정에서 필요한 키를 쌍방이 확보할 수 있는 방법에서 공유 비밀 키 방식 (shared secret key)과 공개키 (public key)가 있다.공유 비밀키 암호화 방식 (shared secret key) : DES, 3DES, RC4/5공개키 암호화 방식 (Public Key) : RSA키 분배 방식 : 'DH방식, RSA공개키, 키 분배 센터(KDC)'를 이용한 공유 비밀키 분배 방법 실습 환경 배포EKS : 1EAB..
Karpenter고성능의 지능형 kubernetes 컴퓨팅 프로비저닝 및 관리 솔루션, 수초 이내에 대응 가능, 더 낮은 컴퓨팅 비용으로 노드 선택 - 작동방식모니터링 -> Pending POD 확인 -> 스펙 평가 -> 생성 => Provisioning모니터링 -> 비어있는 노드 확인 -> 제거 => Deprovisioning Provisioning CRD : 시작 템플릿 필요 없음- 필수 : 보안그룹, 서브넷- 리소스 찾는 방식 : 태그 기반, 리소스 ID 명시- 인스턴스 타입은 가드레일 ㅂ아식으로 선언 : 스판(우선) vs 온디멘드, 다양한 인스턴스 Type 가능 1) POD에 적합한 인스턴스 중 가장 저렴한 인스턴스로 증설2) PV를 위해 단일 서브넷에 노드 그룹을 만들 필요가 없음 -> 자동으로..
CPA - Cluster ProPortional Autoscaler노드 수 증가에 비례하여 성능 처리가 필요한 어플리케이션(컨테이너/파드)를 수평으로 자동 확장 ## helm repo 추가helm repo add cluster-proportional-autoscaler https://kubernetes-sigs.github.io/cluster-proportional-autoscaler## CPA 규칙을 설정하고 helm 차트 릴리즈helm upgrade --install cluster-proportional-autoscaler cluster-proportional-autoscaler/cluster-proportional-autoscaler## nginx 배포cat cpa-nginx.yamlapiVers..
CAS - Cluster AutoscalerCAS(Cluster Autoscaler)는 쿠버네티스 클러스터의 노드 수를 자동으로 조정하는 기능으로모든 pod들이 운영되도록 부족한 노드를 추가하고, 사용량 감소로 불필요해진 노드는 제거하여 클러스터 리소스 사용량을 최적화 리소스 부족으로 실행되지 못하는 pod가 있을 경우신규 pod가 스케줄링되지 못하고 pending 상태일 경우, CAS는 노드를 추가하여 신규 pod가 스케줄링 되도록함.낮은 리소스 사용으로 놀고 있는 노드가 있을 경우노드에 스케줄링된 pod가 거의 없고, 다른 노드에서 파드 수용이 가능하다면 노드를 축소함기본적으로 ASG API를 기반으로 동작하며, Scale-out/in 방식으로 동작kubernetes 내에 deploy로 배포됨 ## ..
VPA - Vertical Pod AutoscalerVPA는 Pod Resources.request를 최대한 최적값으로 수정- VPA는 HPA와 같이 사용할 수 없습니다.- VPA는 pod 자원을 최적값으로 수정하기 위해 pod를 재실행 (기존 pod를 종료하고 새로운 pod 실행)- 계산 방식 : '기준값(파드가 동작하는데 필요한 최조한의 값)'을 결정 > '마진(약간의 적절한 버퍼)' 추가 VPA 프로세스VPA 구성사용자는 VPA를 설정하여 target Deploy 또는 Pod의 리소스를 자동으로 조정하는 구성을 생성VPA recommenderMetrics Server에서 pod의 리소스 사용량 데이터로 분석분석 결과를 통해 최적의 CPU 와 메모리 requests 계산계산된 추천값을 updater와..