본문 바로가기
반응형

K8S101

Kubernetes에서 Prometheus 장기 저장 전략(Thanos vs Grafana Mimir ) 쿠버네티스에서 모니터링을 구성할 때 대부분 Prometheus로 시작한다.하지만 클러스터와 서비스가 늘어나면 곧 다음 질문에 부딪힌다.“Prometheus 메트릭을 몇 달~몇 년 보관하려면 어떻게 해야 하지?”이 글에서는 Prometheus 장기 저장을 위한 대표적인 두 솔루션Thanos 와 Grafana Mimir 를 중심으로각각 무엇인지구조적 차이어떤 상황에서 적합한지Prometheus 단독과 비교리소스 사용 관점의 차이를 쿠버네티스 기준으로 정리한다.1. Prometheus 단독의 한계Prometheus는 기본적으로 로컬 TSDB(Local Disk) 기반이다.장점설치/운영 단순Kubernetes 생태계 표준빠른 쿼리 성능한계장기 보관(수개월~수년)에 부적합디스크 비용 증가단일 인스턴스 병목멀티 클.. 2026. 1. 2.
k9s 사용법 - v.50.x 목차 1. 설치 (Windows)# Chocolateychoco install k9s# Wingetwinget install k9s# Scoopscoop install k9s현재 최신 버전: v0.50.162. 기본 실행 옵션k9s # 기본 실행k9s --context prod-cluster # 특정 컨텍스트로 시작k9s -n kube-system # 특정 네임스페이스로 시작k9s --readonly # 읽기 전용 모드k9s --kubeconfig /path/to/config # 특정 kubeconfig 사용k9s -l debug # 디버그 로그 활.. 2025. 12. 31.
kubernetes의 Request ― startup peak, steady-state, HPA 사이에서의 현실적인 해답Kubernetes(EKS)를 운영하다 보면 거의 반드시 부딪히는 질문이 있다.“request는 평소 사용량 기준으로 잡는 게 맞지 않나?”“그런데 그렇게 하면 startup 시에 Pod가 안 뜨는 것 같은데?”“그럼 request는 HPA용 수단 말고 무슨 의미가 있지?”이 글은 resources.requests의 진짜 역할,startup peak 때문에 발생하는 오해,그리고 startup peak를 request에 포함하지 않고도 안전하게 운영하는 구조를운영 경험 관점에서 하나로 정리한다.1. request에 대한 가장 흔한 오해많은 사람들이 처음에 이렇게 이해한다.“request는 초기 요청량이고,이걸 초과하면 Po.. 2025. 12. 23.
Kubernetes HPA 설계, 웹 API는 정말 CPU-Only가 표준일까? Kubernetes에서 애플리케이션 스케일링을 설계할 때 가장 많이 쓰는 네이티브 오토스케일러가 HPA(Horizontal Pod Autoscaler)입니다.하지만 실제 운영 환경에서는, 스케일링 지표로 무엇을 선택해야 하는가가 장애 안정성과 비용 효율을 좌우합니다.운영 엔지니어들 사이에서는 “대부분 웹 API는 CPU-Only로 scaling한다”는 주장도 있고, “메모리도 트래픽에 따라 늘어난다”고 말하는 경우도 있습니다.이 글에서는 이런 논쟁의 핵심을 짚고, 최근 업계 표준 흐름과 함께 올바른 설계 레이어 분리 원칙을 정리해봅니다.1. “HPA 설계를 CPU-Only로 하는 게 좋은 선택인가?” 라는 질문의 본질클러스터 운영자라면 한 번쯤 이런 질문을 해봤을 거예요.“Kubernetes HPA 설정.. 2025. 12. 2.
Kubernetes 이벤트 기반 오토스케일링, KEDA로 트래픽과 비용을 동시에 최적화하기 Kubernetes 운영을 하다 보면 스케일링의 기준을 CPU/메모리 사용률이 아닌, 비즈니스 이벤트로 잡아야 하는 순간이 옵니다.메시지 큐의 잔량, API 호출 급증, 배치 Job 트리거 등 실제 서비스 부하의 원인을 기준으로 파드를 조정하고 싶다면, KEDA가 훌륭한 선택지가 됩니다.1. KEDA란? — Event-Driven Autoscaling의 등장 배경Kubernetes 기본 오토스케일링인 **HPA(Horizontal Pod Autoscaler)**는 CPU/메모리 기반 스케일링엔 최적이지만,다음과 같은 한계가 있습니다.지표가 실제 서비스 부하 원인과 간접적비동기/배치 워크로드에서는 Scale-to-Zero 적용 어려움외부 이벤트 소스(메시지 큐, 스트림 등)를 스케일링 기준으로 삼기 복잡이.. 2025. 12. 2.
Kubernetes 파드 리소스 최적화 자동 추천, Goldilocks로 시작하는 근거 기반 운영 Goldilocks는 Kubernetes 워크로드의 CPU/메모리 request와 limit 값을 자동으로 추천해주는 오픈소스 도구입니다. “과하지도, 부족하지도 않은 딱 맞는 값”을 제안한다는 의미에서 이름이 붙었습니다.어떻게 동작할까?Goldilocks의 분석 엔진은 VPA(Vertical Pod Autoscaler)를 활용합니다. VPA를 워크로드에 직접 적용하지 않아도 모니터링 모드로 활성화된 VPA 객체를 통해:파드의 실제 CPU/메모리 사용량트래픽이나 작업 부하에 따른 resource peak(피크 사용량)CPU limit 으로 인한 throttling(쓰로틀링) 발생 구간OOM(Out of Memory) 발생 가능 지점을 객관적으로 계산해냅니다.분석이 끝나면 Goldilocks Dashboa.. 2025. 12. 2.
Kubernetes에서 Vault로 비밀 다루기: Seal, Sync, 주입 들어가며클라우드 네이티브 환경에서 비밀 정보를 안전하게 다루는 것은 DevOps와 플랫폼 팀의 핵심 과제다. Kubernetes에서 HashiCorp Vault를 연동해 Secret을 주입하는 방식은 크게 3가지 흐름으로 나뉜다. 각 방식의 동작 주체, Secret 저장 위치, 갱신 전략이 완전히 다르다. 또한, Vault의 Seal/Unseal 개념은 Vault 서버의 보안 상태를 제어하는 관문 역할을 한다.🔒 Vault Seal / 🔓 Unseal 이란?Vault는 모든 Secret 데이터를 마스터 키(Master Key) 로 암호화하여 storage(기본적으로는 etcd가 아닌 Vault 자체 저장소)에 저장한다. 하지만 마스터 키가 평문으로 디스크에 저장되면 탈취 위험이 있기 때문에, Vaul.. 2025. 11. 27.
Kubernetes에서 애플리케이션 설정 우선순위 이해하기 목차 ConfigMap, Secret, 그리고 내부 설정 중 무엇이 이길까?Kubernetes에서 애플리케이션을 배포하다 보면,“앱 내부 설정값이 우선일까, ConfigMap/Secret이 우선일까?”라는 의문이 자주 생깁니다.특히 운영 중인 서비스의 환경설정이 기대와 다르게 동작할 때,이 우선순위를 정확히 이해하고 있지 않으면 디버깅이 어렵습니다.이 글에서는 Kubernetes가 실제로 설정값을 어떻게 주입하고,최종적으로 어떤 값이 적용되는지를 프레임워크별로 정리해보겠습니다.1️⃣ Kubernetes는 ‘우선순위’를 결정하지 않는다먼저 중요한 사실 하나:Kubernetes는 단지 환경 변수나 파일 형태로 설정을 주입할 뿐,어떤 값이 “최종적으로 우선”인지는 애플리케이션의 설정 로더가 결정합니다.즉.. 2025. 10. 23.
Kubernetes ConfigMap & Secret 자동 반영 — Stakater Reloader Kubernetes를 운영하다 보면 ConfigMap이나 Secret을 수정했는데,이를 참조하는 Pod가 자동으로 재시작되지 않아 새로운 설정이 반영되지 않는 경우가 많습니다.이 문제를 해결하기 위해 탄생한 오픈소스 컨트롤러가 바로 Stakater Reloader입니다.👉 GitHub 저장소👉 공식 문서📘 1. Stakater Reloader란?Reloader는 Kubernetes에서 ConfigMap 또는 Secret이 변경되었을 때이를 사용하는 Deployment, StatefulSet, DaemonSet 등의 롤링 업데이트(rolling update) 를 자동으로 트리거해주는 Controller입니다.👉 How it works (공식 문서)이 프로젝트는 오픈소스로 제공되며,라이선스는 Apac.. 2025. 10. 17.
Docker Hub Rate Limiting 정책과 "authorization failed" 오류 이해하기 컨테이너 이미지를 다루다 보면, docker pull 과정에서 "authorization failed" 또는 429 Too Many Requests 오류를 경험할 수 있습니다. 이는 대체로 Docker Hub의 rate limiting 정책 때문입니다. 이번 글에서는 Docker Hub 공식 문서에 기반하여, 이 정책이 무엇이고 어떤 영향을 주며 어떻게 대응할 수 있는지 정리해 보겠습니다.1. Docker Hub Rate Limiting이란?Docker Hub는 2020년 11월부터 이미지 pull 요청 횟수에 제한(rate limit) 을 두었습니다. 이는 과도한 트래픽으로 인한 서비스 안정성 저하를 방지하고, 유료 플랜 사용자에게 더 나은 품질을 제공하기 위함입니다.공식 문서에 따르면, 6시간 단위로.. 2025. 9. 25.
_helpers.tpl란? Helm Chart 템플릿 파일 중 하나예요.보통 charts//templates/_helpers.tpl 경로에 있습니다.여기에는 템플릿 함수(helpers) 가 정의돼 있어서, Chart의 여러 템플릿(deployment.yaml, service.yaml, ingress.yaml 등)에서 반복되는 부분을 재사용할 수 있게 해줍니다.예: 리소스 이름 규칙(fullname, name, chart)이나 label 공통 정의 등을 여기서 함수로 정의하고 다른 곳에서 호출합니다.# _helpers.tpl{{- define "mychart.fullname" -}}{{- printf "%s-%s" .Release.Name .Chart.Name | trunc 63 | trimSuffix "-" -}}{{- end }.. 2025. 9. 18.
[kubernetes] kind 명령어 정리 📌 클러스터 관리# 클러스터 생성 (단일 노드)kind create cluster --name my-cluster# 설정파일로 클러스터 생성 (멀티노드, 포트매핑 등)kind create cluster --config kind-config.yaml# 생성된 클러스터 목록 확인kind get clusters# 클러스터 삭제kind delete cluster --name my-cluster📌 노드 관리# 클러스터 노드 보기kubectl get nodes# 특정 클러스터의 노드 확인kind get nodes --name my-cluster# 클러스터 노드에 직접 접속docker exec -it my-cluster-control-plane bash📌 이미지 관리# 로컬 도커 이미지 → kind 클러스터에 .. 2025. 9. 6.
반응형