kubernetes

· 인프라
IT에는 어떤 직군들이 있을까? 네트워크 엔지니어: cisco의 제품으로 네트워크를 세팅하고 성능, 문제를 분석하는 엔지니어. 서버가 죽으면 서비스가 죽지만 네트워크가 죽으면 전사가 마비되기 때문에 매우 중요하다.스토리지 엔지니어: 보통 스토리지 전문 기업에서 설치부터 지원까지 담당한다.서버 엔지니어: 현재는 대부분의 서버를 가상화해서 VM(Virtual Machine)으로 나누기 때문에 서버 엔지니어가 OS 및 가상화 세팅까지 담당한다.미들웨어 엔지니어: app이 os위에서 잘 돌아가도록 하는 보조 프로그램(e.g. tomcat)을 다루는 엔지니어. 트래픽을 전달하거나 로그를 저장한다. 특정 기업의 WAS 솔루션을 사용할 수 있고 이런 경우 운영팀에서 병행한다.데이터: 데이터 분야는 다양한 직군이 존재..
· 인프라
프로메테우스(Prometheus), 그라파나(Grafana)는 쿠버네티스 클러스터 상에서 모니터링을 위한 오픈소스이다.프로메테우스의 역할은 metric data를 수집하여 저장하고, 그라파나는 프로메테우스로 수집한 데이터를 보기 좋게 dashboard 상에서 그래프같은 형태로 시각화 해준다.쿠베니터스의 컨테이너 인프라 환경에서는 마이크로서비스 형태로 많은 app 들이 개발되어 배포되기 때문에, 각 app들의 상태를 확인하기 위해 모니터링 시스템이 아주 중요하고, 프로메테우스와 그라파나는 좋은 선택지가 된다. 프로메테우스의 특징은 다음과 같다.수집하려는 대상 서버에 exporter를 두어 중앙 서버에서 메트릭을 수집한다.데이터 수집은 일정 주기만큼 pulling 방식으로 이루어지는데, 이는 프로메테우스 중..
이전 포스팅에서 onnx 형식의 ner 모델을 triton에 업로드하여 동작을 확인하였다.하지만 해당 onnx 모델의 input은 input_ids, attention_mask 텐서, 즉 raw text를 tokenizer로 연산한 결과이다.따라서 tokenizing 하는 전처리 과정을 추가하기 위해 python backend model을 추가해야 한다.마찬가지로 onnx 모델의 output logit 만으로는 각 token이 어떠한 ner tag를 가지는지 알 수 없기 때문에,output logit을 ner tag 결과로 변환하는 후처리 과정을 추가해야 한다. 그러면 아예 모델 내부에 전처리/후처리 로직을 넣어서 onnx 모델로 변환하면 안되나 싶겠지만유연성, 재사용성, 확장성, 유지보수 등 다양한 측..
model repository 구조 알아보기Triton은 model repository 내부의 모델을 일괄적으로 로드하게 된다.트리톤 실행시 아래 명령어처럼 명시적으로 model-repository의 경로를 지정할 수도 있고,기본 경로는 "/opt/tritonserver/models/"이며 이전 포스팅의 volumeMounts에서 확인할 수 있다.$ tritonserver --model-repository= model repository 내부는 정해진 layout을 따라 파일을 구성해야하며 다음과 같다. / / [config.pbtxt] [ ...] [configs]/ [ ...] / / ... / ..
NVIDIA Triton 서버는 다양한 프레임워크의 AI 모델에 대해 AI Inference를 지원하는 오픈 소스이다.대부분의 Train/Inference 프레임워크를 모두 지원하며 Dynamic batching, Parallel Processing, Model Ensemble 등 다양한 기능을 지원하여 고성능 추론을 가능하게 만들어준다.또한 DevOps, MLOps를 위한 설계가 되어있어 Kubernets에 통합하여 모니터링과 확장이 용이하다는 장점이 있다. 거두절미하고 바로 쿠버네티스 환경에서 triton 서버를 띄우기 위한 환경설정을 시작하자.GPU-Operator 설치먼저 쿠버네티스가 NVIDIA GPU 리소스에 접근할 수 있도록 gpu-operator를 설치해야 한다.gpu-operator는 자..
· DevOps
Argo Rollouts 설치하기ArgoCD와 ArgoCD Image Updater 설치와 마찬가지로 helm 레포와 차트를 다운받는다.이후 차트 내부에 values-dev.yaml 파일을 생성해 아래 내용을 추가한다.controller: replicas: 1dashboard: enabled: true service: type: NodePort portName: dashboard port: 3100 targetPort: 3100 nodePort: 30003 이후 아래 helm 명령어로 설치를 수행한다. 마찬가지로 kubeconfig는 제외 가능.helm upgrade argo-rollouts ./argo/helm/argo-rollouts-f ./argo/helm/argo-..
· DevOps
Repository 관리 방법repository 분리의 장점은 접근 유저별로 권한 관리가 가능하고, 불필요한 코드 다운을 방지한다는 점이다.App 소스 전용: App의 기능을 위한 코드의 저장소.1명 이상의 개발자가 공유하며 CI/CD 서버에서 해당 코드를 다운받아 배포한다.App 배포 전용: App을 배포하기 위한 release 파일들의 저장소. 관리 주체는 DevOps 엔지니어이지만 개발자도 자신의 코드를 배포할 수 있다.Addon 설치 전용: Argo나 Prometheus 같이 서비스를 운영하는데 필요한 소스들의 저장소. 운영자가 관리.ArgoCD 설치Argo Project는 Helm repo를 추가하여 간편하게 각 제품별로 설치할 수 있다.자신의 배포 전용서버에서 편한 위치에 argo 디렉토리를 ..
· DevOps
Argo Project 제품 설명CD: 쿠버네티스 전용 배포 툴. Release 파일 저장소로 Git repository가 필요하다.Image Updater: ArgoCD의 추가 기능. Docker Hub의 컨테이너 이미지 변경을 감지하여 배포를 수행한다.Rollouts: 고급 배포 지원 (Blue/Green, Canary).Events: Kafka와 같은 이벤트 버스 아키텍처에 대한 솔루션.Workflow: Airflow, Kubeflow 같은 워크플로우 관리도구.Argo 제품으로 다음과 같은 아키텍처가 만들어질 수 있다.ArgoEvents가 시스템들 간의 이벤트를 주고받는 메인 통로 역할.이 중 Workflow로 보내지는 이벤트가 발생. Workflow는 이벤트를 받고 내부 값에 의해 특정 작업을 실..
EBEL
'kubernetes' 태그의 글 목록