Dockerfile Command Command DescriptionExampleFROM image/scratchFY`" style="height: 34px; width: 47.4419%;">빌드하는 베이스 이미지FROM ubuntu:latestLABEL name=”text”FY`" style="height: 34px; width: 47.4419%;">메타데이터 추가LABEL email=”abce@gmail.com”LABEL name=”Kang”COPY path dstFY`" style="height: 34px; width: 47.4419%;">로컬 경로의 파일(path)을 container 내부 경로(dst)로 복사COPY app.js /usr/src/app/app.jsADD src dstFY`" st..
이전에 배포한 Triton Inference Server의 상태를 모니터링하기 위해 Prometheus에 scrape를 등록하여 grafana로 대시보드를 생성하는 방법을 알아보도록 하자.Triton Server의 metric endpoint우선 Triton 서버의 쿠버네티스 매니페스트를 배포했을 때 기본 골자는 다음과 같다.# deployment.yaml port 설정부분template: spec: ports: - name: http containerPort: 8000 - name: grpc containerPort: 8001 - name: metrics containerPort: 8002---# service.yamlapiVersion: v..
프로메테우스(Prometheus), 그라파나(Grafana)는 쿠버네티스 클러스터 상에서 모니터링을 위한 오픈소스이다.프로메테우스의 역할은 metric data를 수집하여 저장하고, 그라파나는 프로메테우스로 수집한 데이터를 보기 좋게 dashboard 상에서 그래프같은 형태로 시각화 해준다.쿠베니터스의 컨테이너 인프라 환경에서는 마이크로서비스 형태로 많은 app 들이 개발되어 배포되기 때문에, 각 app들의 상태를 확인하기 위해 모니터링 시스템이 아주 중요하고, 프로메테우스와 그라파나는 좋은 선택지가 된다. 프로메테우스의 특징은 다음과 같다.수집하려는 대상 서버에 exporter를 두어 중앙 서버에서 메트릭을 수집한다.데이터 수집은 일정 주기만큼 pulling 방식으로 이루어지는데, 이는 프로메테우스 중..
Helm vs Kustomize 비교 정리공통점: 마이크로서비스 환경에서 App 종류가 많아지고, 다양한 배포 환경에 대해 중복 관리를 최소화 하기 위하여 사용한다.차이점차이점HelmKustomize배포 편의기능 갯수200개10개패키지당 활용 범위마이크로 서비스 AND 다양한 배포 환경마이크로 서비스 OR 다양한 배포 환경사용 목적프로젝트 관리 패키지용 + 기업 제품 패키지용프로젝트 관리 패키지용Usecase대형 프로젝트App 종류 - 5개 이상간단한 프로젝트App 종류 - 5개 미만 쿠버네티스를 도입하게 되면 여러 오픈소스를 도입하고, 이 오픈소스들은 대부분 Helm 형태로 배포가 된다.따라서 처음에는 어렵지만 Helm을 먼저 사용한다면 Kustomize는 사용할 필요 없다.다만 소규모 프로젝트나 빠른..
해당 포스팅은 쿠버네티스 어나더 클래스 (지상편) - Sprint 1, 2 강의 내용을 기반으로 작성했습니다.전체 개요쿠버네티스를 설치할 때 마스터 노드를 만들고 kubeadm, kubectl, kubelet 패키지를 설치한다.이후 kubeadm 명령어로 클러스터를 생성하는데 이 때 /etc/kubernetes/manifests 경로에 파드를 만들어주는 manifest 파일들이 있어 etcd, kube-controller-manager, kube-scheduler, kube-apiserver, kube-proxy 라는 컴포넌트들을 만들어준다.이 파드들은 쿠버네티스가 돌아가는데 필요한 역할들을 하고 통틀어서 Control Plane Component라고 한다.다른 VM으로 여러 대의 워커 노드를 만들고 마..
해당 포스팅은 쿠버네티스 어나더 클래스 (지상편) - Sprint 1, 2 강의 내용을 기반으로 작성했습니다.본 포스팅에서는 쿠버네티스의 핵심 Object들인 PVC, PV, Deployment, HPA, Service가 어우러져서 어떻게 작동하는지에 대해 다룬다. 각 오브젝트들의 자세한 개념은 따로 포스팅할 예정이고, 각 object들끼리 어떻게 연계되어 사용되는지에 대해 초점을 두자.PV, PVC 쿠버네티스 클러스터 환경에서 원활하게 데이터에 접근하기 위해서는 각 노드와 파드들이 동일한 데이터를 바라보아야 하고 안전하게 데이터를 보존하기 위해서 별도의 스토리지 공간을 활용해야 한다. 이를 위해 쿠버네티스를 지원하는 다양한 스토리지 솔루션이 존재한다. 하지만 본 포스팅에서는 PVC, PV에서 local..
해당 포스팅은 쿠버네티스 어나더 클래스 (지상편) - Sprint 1, 2 강의 내용을 기반으로 작성했습니다.Configmap 기본 설명Configmap과 Secret은 Pod 내부에 다양한 설정값을 주입하기 위한 object이다.Configmap을 사용해 컨테이너 이미지에서 configuration을 분리하여 App을 사용할 수 있다.예를 들어 개발, 운영 단계에서 달라지는 설정값들을 모두 이미지 빌드 단계에서 설정하지 않고,각 환경에 맞는 Configmap을 Pod에 주입함으로써 편리하게 App을 실행할 수 있다. Configmap을 정의하는 일반적인 yaml파일 형식은 다음과 같다.apiVersion: v1kind: ConfigMapmetadata: name: special-config name..
해당 포스팅은 쿠버네티스 어나더 클래스 (지상편) - Sprint 1, 2 강의 내용을 기반으로 작성했습니다.Probe 개념 설명쿠버네티스는 컴퓨팅 계층과 네트워크 계층이 추상화 되어있기 때문에 네트워크 트래픽과 생애 주기를 통제할 수 있는데,이러한 추상화 덕분에 App이 고장나도 Self-healing할 수 있으며, 이 기능을 Container Probe를 통해 할 수 있다.Probe에는 총 3가지 종류가 존재하며 모두 파드의 정상여부를 체크하여 각자의 기능을 수행한다.startupProbe: 초기화 작업이 필요한 Pod에 대해 추가적인 startup time을 부여한다. 성공하면 App을 Ready 상태로 변경, startupProbe를 비활성화 한 뒤 livenessProbe와 readinessPr..