일단 해보고, 아니면 뭐

실패했어도 배웠으면 실패가 아냐.

무한한 개발세계 여행기

Kubernetes 3

Kubernetes Resource Request & Limit

Kubernetes로 애플리케이션을 배포하다 보면 yaml 파일 방식으로 여러 설정값을 적용하여 배포하는데, 오늘은 그 중에서 Resourse Request와 Limit에 대해서 정리해보고자 한다. k8s에서 Resource Request와 Limit은 컨테이너에 할당되는 CPU와 Memory 자원량을 나타내며 CPU는 Milicore단위(1,000 Milicore = 1 Core)로 Memory는 Mbyte단위로 할당된다. Request량은 k8s의 Pod 스케쥴링의 기준이다. k8s의 Pod는 하나 이상의 컨테이너로 구성됨으로 실제 Request량은 Pod의 모든 컨테이너 Request량을 합친 값이 된다. Pod 스케쥴링이란 Pod를 어떤 Node에 배치하는가를 결정하는 과정으로 k8s는 Round..

Kubernetes Package 툴 Helm 으로 Deploy Rollback 시키기

새로운 서비스들을 도입하면서 여러 설정을 위해 변경하고 배포하는 과정을 계속적으로 작업하다 잘못 배포가 되어 이전 버전으로 Rollback 해야 할 일이 생겼다. 예전부터 공부했던 것처럼 Kubernetes는 컨테이너 오케스트레이션 툴로 컨테이너의 관리가 용이하고 더불어 Deployment라는 타입은 이름에서도 유추되다 싶이 배포에 대한 추적을 관리하고 다시 되돌리는 Rollback기능을 할 수 있다. 사실 실제로 해볼만한 일이 없었다가 이번에 잘못 배포된 버전을 이전 버전으로 배포하기 위해 Rollback 해야 할 일이 있었는데, 우리는 Kubernetes package 관리용으로 오픈소스 helm을 사용하고 있었다. Helm Rollback 방식을 확인해보자 Rollback의 중요성 Rollback을..

File rename() vs copy() & remove() 구조는 어떻게 다를까?

쓸데없이 웅장한 이미지로 시작하는 포스팅 Go언어로 개발되는 Agent에 기능 개발을 하게 되는 업무를 하게 되었다. (Java도 잘 모르는데 Go언어라니...) Kubernetes 환경에 배포되는 Pod들의 Log File들을 관리하는 기능인데, 간략히 설명해보자면 Kubernetes에서는 'kubectl get log'라는 명령어를 통해서 로그를 확인할 수 있는데, 이 명령어는 Container Runtime (나는 Docker) 의 로그가 쌓이는 경로의 Directory들과 Symbolic Link로 연결되어 있는 Kubernetes 전용 경로를 바탕으로 로그를 표출해준다. 즉, 'kubectl get log' 명령어는 Container Runtime이 관리하는 Log File을 대신(?) 보여주는..

Programing/Go 2022.04.02