목표 구성도 실습 환경- 인프라 : 로컬 PC- 클러스터 : kind Cluster- SW : Jenkins, Gogs, kind(k8s)Jenkins, gogs 컨테이너 배포 (docker-compose)## 작업 디릭토리 생성mkdir cicd-labscd cicd-labs## Jenkins, Gogs 배포cat docker-compose.yamlservices: jenkins: container_name: jenkins image: jenkins/jenkins restart: unless-stopped networks: - cicd-network ports: - "8080:8080" - "50000:50000" volumes: ..
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와..
KEDA - Kubernetes based Event Driven Autoscaler리소스 메트릭을 기반으로 스케일 여부를 결정했던 HPA와 달링 KEDA는 특정 이벤트를 기반으로 스케일 여부를 결정할 수 있습니다.예를 들어 airflow는 metadb를 통해 현재 실행중이거나 대기 중인 task가 얼마나 존재하는지 알 수 있습니다.이러한 이벤트를 활용하여 worker의 scale을 결정한다면 queue에 task가 많이 추가되는 시점에 더 빠르게 확장할 수 있습니다. Agent- KEDA는 Kubernetes의 Deployment를 활성화하거나 비홠어화하여 이벤트가 없을 때는 자동으로 스테일을 자동으로 0으로 줄이고 필요할 때 다시 확장합니다.- 이 동작은 KEDA 설치 시 실행되는 keda-oper..
AutoScaling 에 대해Vertical Pod Autoscaler (VPA) : Pod의 리소스(cpu, mem 등)를 동적으로 증가 또는 감소시켜 성능을 조정Horizontal Pod Autoscaler (HPA) : 부하에 따라 pod의 개수를 자동으로 추가하거나 제거하여 확장성을 제공Cluster Autoscaler : 클러스터의 노드를 자동으로 추가하거나 제거하여 전체적인 리소스 사용을 최적화 실습 환경 배포# YAML 파일 다운로드curl -O https://s3.ap-northeast-2.amazonaws.com/cloudformation.cloudneta.net/K8S/myeks-5week.yaml# 변수 지정CLUSTER_NAME=myeksSSHKEYNAME=MYACCESSKEY=MY..
실습 환경VPC : 2eaWork node : 3ea (t3.xlarge)EC2 : 1eaEFS : 1ea - kube-ops-view, AWS LoadBalancer Controller, ExternalDNS, gp3 Storageclass 설치명령어 or 코드 내에 있는 변수는 이름 그대로의 값을 변수로 잡아 설정했으며,정확한 명령어를 확인하고 싶을 경우 이전 게시글을 참고하시면 됩니다. ## YAML 파일 다운로드$ curl -O https://s3.ap-northeast-2.amazonaws.com/cloudformation.cloudneta.net/K8S/myeks-4week.yaml## 변수 지정$ CLUSTER_NAME=myeks$ SSHKEYNAME={KEY 이름}$ MYACCESSKEYN..