반응형 Development35 모든 워커노드에서 특정 컨테이너 이미지 삭제 방법 쿠버네티스에 이미지를 배포할때 imagePullPolicy를 보통 IfNotPresent로 하게 된다. 이때 만약 부득이한 상황으로 이미지 태그를 업데이트하지 않고 다시 빌드해서 레지스트리에 올렸을 때, 정상적으로 이미지가 재배포되지 않는다. 개발용으로 빌드할때도 이런 경우를 마주할수 있는데, 모든 워커노드에서 다운로드된 특정 컨테이너 이미지를 찾아서 삭제해주는 방법을 공유한다.이 방식은 Containerd를 런타임으로 사용하는 쿠버네티스 1.24 버전부터 사용가능하다.먼저, crictl (Containerd ctl) 을 가지고 이미지를 만들어야 한다.FROM alpine:latest ARG CRICTL_VERSION="v1.31.1" # https://github.com/kubernetes-sigs/c.. 2024. 11. 6. GPT와 개발 총 개발 경력 15년이 넘어가면서 이렇게 충격적인 시대에 살고 있다는 게 신기하기도 하다. ChatGPT 유료 버전을 쓰면서 개발 업무를 하고 있는데, 이렇게 개발 생산성이 순식간에 올라간 적이 있었나 싶다. 한 달에 3만 원씩을 사용하지만 전혀 아깝지 않다.가끔가다 써서 잘 까먹는 프로그래밍을 잘 짜준다.필자는 쉘스크립트 를 아주 가아끔 쓴다. 그런데 쉘 스크립트는 쓸 때만 잠깐 공부해서 쓰고, 다시 까먹는다. 그런데 공부하는 시간이 그동안 좀 걸렸다. 하지만 GPT에 물어보고 작성하니 버그도 덜하면서 빠르게 작성할 수가 있다.또한, 개인적인 취미생활로 파이썬 기반의 봇을 만들 때 구글 api 라든지 그런 사용법도 gpt 가 알아서(물론 최적화까지는 바로 안 해주지만) 바로바로 알려주므로 매우 빠르게 .. 2024. 11. 2. Jupyterhub with spark on k8s 설치 삽질기 & 팁 주피터 노트북과 스파크는 워낙 잘 알려진 오픈소스이므로 이에 대한 설명은 굳이 언급하지 않으려 한다. 여기서는 k8s 상에 주피터를 어떻게 잘 설치할 수 있으며, 주피터 상에서 스파크 executor 를 어떻게 실행할수 있는지, 단순히 혼자서 쓰는게 아닌 여러명이 어떻게 공간을 분리(멀티테넌트)하여 제한된 리소스로 사용하도록 As a service 형태로 제공할수 있는지 설명한다. (보안측면에서는 자세히 다루지 않는다. k8s에서 networkPolicy 등 세밀한 설정이 필요하겠지만 그건 필요에 따라 레벨이 달라지기 때문이기도 하고, 자칫하다가는 주피터 노트북의 기본 동작 조차 안되는게 있을 수도 있다)또한 스파크의 배포형상에 대해서도 논하지 않는다. 주피터 노트북에서는 cluster 모드 보다는 c.. 2024. 10. 26. Prometheus TSDB 분석 https://ganeshvernekar.com/blog/prometheus-tsdb-the-head-block/ Prometheus TSDB (Part 1): The Head Block | Ganesh VernekarWalk-through on how the in-memory part of Prometheus TSDB worksganeshvernekar.com위 블로그를 바탕으로 좀 더 이해가 될수 있도록 추가 분석한 내용을 정리한다. 프로메테우스는 자체 TSDB(TimeSeries DataBase)를 가지고 있다. DB의 기본적인 특성을 가지고 있으면서도 시계열에 특화된 구조로 되어있다. TSDB의 기본적인 구조는 다음과 같다. Sample(t,v): (timestamp, value) 이 하나의 값을.. 2024. 1. 28. nvidia dcgm-exporter(gpu-exporter) nvidia 에서 제공하는 공식 gpu exporter인 dcgm-exporter에 대해 알아본다. DCGM 이란?DCGM은 DataCenter GPU Manager의 약자로, nvidia gpu 를 위한 종합 관리 및 모니터링 도구다. 이 도구는 데이터 센터 내의 nvidia gpu의 상태를 모니터링하고, 관리하는 데 사용된다. 여기서는 여러 기능 중 하나인 모니터링에 대해서 알아본다. DCGM 은 자체적으로 메트릭을 내보내지 않기 때문에 nvidia 이와 통신해서 메트릭을 만들어서 출력해주는 exporter를 별도로 제공하고 있다. DCGM exporter 동작방식그림에서와 같이 dcgm exporter는 Kubelet/node-exporter/DCGM과 통신하여 메트릭을 수집한다.ServiceMon.. 2024. 1. 18. 운영 자동화와 최적화 DevOps 에서는 개발자가 운영자가 된다. 물론 24시간 대응하는 티어그룹이 따로 있을 수는 있지만 결국에 원인을 분석해서 이슈를 수정하는 책임은 보통 개발자가 된다. 이슈가 많아지면 개발자는 고통받는다. 심지어 개발팀이 정상적인 개발업무를 수행하기 어려워진다. 보통은 온콜(oncall) 프로세스를 도입하여 당번제 처럼 돌아가면서 한두명의 개발자가 들어오는 CS나 이슈를 모두 처리하도록 하여 다른 개발자들이 개발에 집중할수 있도록 한다. 하지만, 빈번히 발생하는 이슈를 계속해서 온콜로만 대응하다가는 개발팀의 효율이 개선되지 않는다. 그러므로 운영에 있어서 자동화와 최적화는 지속적으로 이루어져야 한다. 자동화의 범위 어느정도 게으른 개발자가 되라는 얘기가 있듯이, 개발자는 항상 개선을 고민해야 한다. 그.. 2024. 1. 15. 이전 1 2 3 4 5 6 다음 반응형