KUBERNETES LOG에 대하여 알아보자

쿠버네티스 환경에서 로그는 컨테이너 런타임에 의해 생성되고 kubelet에 의해 관리됩니다. 이 글에서는 쿠버네티스의 로그 생성부터 관리, 그리고 수집까지의 전체 과정을 살펴보겠습니다.

GRAFANA LOKI에서 로그를 수집하는 방법에 대해 알아보자

Loki v3 기준으로 작성한 로그 수집하는 구조를 정리했습니다. 여기서는 수집기를 제외하고 Loki에서 로그를 수집하는데 쓰이는 컴포넌트들과 아키텍처에 대해서 공부한 바를 정리하고 있습니다.

LOKI의 ZONE AWARENESS 기능

Zone Awareness란? Zone Awareness는 Loki가 여러 가용 영역(Availability Zones)에 걸쳐 데이터를 분산하고 복제하는 기능입니다. 이 기능은 단일 가용 영역 장애가 발생해도 서비스를 중단 없이 유지할 수 있도록 설계되었습니다.

BLOOM FILTER에 대해 알아보자

Bloom Filter란? Bloom Filter는 요소가 집합에 포함되어 있는지를 효율적으로 검사하기 위한 확률적 자료 구조예요. 이 자료 구조는 메모리 사용을 최소화하면서도 빠른 검색 속도를 제공해요.

GO 100가지 실수 패턴과 솔루션

서평 이 책은 Effective Java에 상당하는 Go 책이라고 평가를 받은 책이다. Go 프로젝트에서 가장 많이 저지르는 100가지 실수에 대해 예제와 해결 방법에 대해 정리하고 있다. 원서는 2022년에 제작되어 2023년 12월에 한국어로 번역되어 볼 수 있게 되었는데, 번역 자체가 깔끔하게 되어 읽음에 막힘이 없다고 느꼈다.

OAUTH2 PROXY에 대하여

Oauth2 Proxy란? OAuth2 Proxy는 OAuth2 서버에 대해 인증을 제공해주는 리버스 프록시 구현체이다. OpenID Connect와 같은 OAuth2에 대해서 인증을 제공하는 애플리케이션의 경우에는 바로 프로바이더를 등록하여 사용할 수 있다. 하지만, 애플리케이션에서 인증을 따로 제공하지 않는다면 따로 작업이 필요하다.

KUBERNETES NETWORKING에 대하여

Kubernetes Network 앞 포스트에서는 쿠버네티스 워크로드에 대해서만 이야기했었는데, 워크로드만 존재하면 통신이 가능하지는 않다. 그렇다면 통신을 가능케하고 유지해주는 리소스에 대해서 알아보자.

KUBERNETES WORKLOADS RESOURCES에 대하여

Workload Resources 쿠버네티스는 워크로드를 선언적으로 관리하기 위해서 여러 내장 API를 제공한다. 결론적으로는, 애플리케이션은 파드 내부 컨테이너로 실행된다. 따라서 쿠버네티스는 개별 파드들을 관리해야한다. 예를 들어, 파드가 실패해서 대체하거나 복사해야할 때 쿠버네티스 API를 사용하여 파드보다 더 높은 추상 워크로드 객체를 생성한 뒤 쿠버네티스 컨트롤 플레인이 정의한 워크로드 객체 사양에 따라 파드 객체를 관리한다.

MOCKERY에 대하여

Mockery란? Go 언어에서 인터페이스를 모킹하기 위한 도구로, 테스트 중에 인터페이스의 구현을 쉽게 대체할 수 있어서 테스트를 더 단순하고 효율적으로 만들 수 있다. 개발자가 수동으로 모킹 코드를 작성할 필요 없이 만들어져있는 인터페이스 기반으로 명령어로 모킹 클래스를 생성할 수 있어서 생산성이 높아진다. 모킹을 통해 외부 시스템이나 데이터베이스, 네트워크 호출과 같은 의존성을 제하고 테스트를 실행할 수 있다.

KUBERNETES WORKLOADS에 대하여

Workloads Deployment & ReplicaSet: 필요할 때마다 파드를 교체할 수 있는 무상태(stateless) 애플리케이션에 적합 StatefulSet: 데이터를 지속적으로 유지하는 등의 상태를 추적하는 하나 이상의 관련 파드를 실행하는 데 사용 DaemonSet: 각 노드에서 실행되어야 하는 파드를 보장하여 일반적으로 노드 수준의 작업에 사용 Job & CronJob: 완료되면 중단되는 작업을 정의. 잡은 한 번 실행되고, 크론잡은 정해진 일정에 따라 주기적으로 실행된다. Pods 파드는 쿠버네티스에서 생성하고 관리할 수 있는 가장 작은 배포 가능한 컴퓨팅 단위이다. 파드는 공유 스토리지 및 네트워크 자원을 가진 하나 이상의 컨테이너 그룹으로, 컨테이너를 실행하는 방법에 대한 명세를 포함한다. 파드의 내용은 항상 공동 위치에 있으며 공동으로 스케줄링되고 공유 컨텍스트에서 실행된다. 파드는 애플리케이션 특정 “논리 호스트"를 모델링하며, 상대적으로 긴밀하게 연결된 하나 이상의 애플리케이션 컨테이너를 포함한다.