전체 글
-
client-go library의 Reflector, Informer, Indexer 역할Kubernetes 2025. 3. 2. 11:15
client-go 라이브러리는 Kubernetes API와 상호 작용하기 위한 Go 라이브러리이며, 클라이언트 애플리케이션이 Kubernetes 리소스를 효율적으로 관리할 수 있도록 도와줍니다.이 중에서 Reflector, Informer, Indexer는 Kubernetes API 데이터를 효율적으로 캐싱하고 동기화하는 핵심 컴포넌트입니다. 1️⃣ Reflector🔹 개념Reflector는 Kubernetes API 서버에서 특정 리소스를 감시하고, 변경 사항을 감지하여 로컬 캐시(Store)에 데이터를 동기화하는 역할을 합니다.API 서버의 watch 기능을 사용하여 새로운 리소스, 수정된 리소스, 삭제된 리소스를 감지합니다.🔹 동작 방식API 서버에 LIST 요청을 보내 기존 리소스를 가져옵니다..
-
Kubernete CRD를 사용하여 새로운 K8S API가 추가되는 과정Kubernetes 2025. 3. 2. 11:01
Kubernetes에서 Custom Resource Definition (CRD)를 사용하면 새로운 API 리소스를 생성할 수 있습니다. 이 과정을 통해 새로운 리소스 유형을 정의하고, Kubernetes API 서버는 이를 자동으로 관리하며 해당 리소스를 API로 제공하게 됩니다. CRD를 사용하여 새로운 API 리소스를 생성하는 과정:1️⃣ CRD 정의 및 적용CRD는 Kubernetes의 apiextensions.k8s.io API 그룹에서 제공하는 리소스로, 새로운 커스텀 리소스 타입을 정의합니다. 이를 적용하면 Kubernetes API 서버가 해당 리소스를 자동으로 감지하고 API를 생성합니다.CRD 예시apiVersion: apiextensions.k8s.io/v1kind: CustomRes..
-
Kubernetes Operator 구현에 Watcher 사용Kubernetes 2025. 3. 2. 10:39
Watcher를 사용한 Kubernetes 리소스 감시 예제Watcher는 Kubernetes API 서버와 직접 연결하여 실시간 이벤트를 감지하는 방식입니다.하지만 API 서버 부하가 커질 수 있고, 연결이 끊기면 다시 연결해야 하는 단점이 있습니다. Watcher 기반 Deployment 감시 예제아래 코드는 Watcher를 사용하여 Kubernetes의 Deployment 리소스를 실시간으로 감시합니다.package mainimport ( "context" "fmt" "log" v1 "k8s.io/api/apps/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" "k8s.io/client-go/rest" ..
-
Kubernetes Operator 작성 시 Watcher 또는 Informer 사용?Kubernetes 2025. 3. 2. 10:36
Kubernetes Operator는 보통 Informer 기반의 Controller 패턴을 사용하여 동작 왜 Watcher 대신 Informer만 사용할까?Watcher는 API 서버에 직접 요청을 보내면서 실시간 이벤트를 감지하는 방식이지만, 연결이 끊기거나 장애가 발생하면 재연결이 필요합니다.반면, Informer는 캐시를 활용하여 API 서버 부하를 줄이면서도 리소스 변경을 감지할 수 있어 Operator 개발에 적합합니다. Informer 기반 Controller의 장점API 서버 부하 감소: 캐싱을 활용하여 API 요청 수를 줄임.네트워크 장애에 강함: 클라이언트-API 서버 연결이 끊겨도 캐시에서 데이터 유지.이벤트 기반 처리 가능: AddFunc, UpdateFunc, DeleteFunc을..
-
Kubernetes의 Informer와 Watcher 차이점Kubernetes 2025. 3. 2. 10:31
Watcher와 Informer 모두 Kubernetes에서 클러스터 리소스를 모니터링하고 변경 사항을 감지하는 두 가지 주요 메커니즘 Watcher란?Watcher는 Kubernetes API 서버에서 특정 리소스의 변경 사항을 실시간으로 감지하는 기본 기능이야.kubectl get pods -w 명령어처럼 동작한다고 보면 돼.API 서버와 Persistent Connection(예: HTTP Long Polling 또는 WebSocket) 을 유지하면서 변경 사항이 발생하면 바로 이벤트를 받아.🔹 Watcher의 동작 방식클라이언트가 Kubernetes API 서버에 WATCH 요청을 보냄.API 서버는 해당 리소스의 변경 사항(추가, 수정, 삭제)을 스트리밍 방식으로 전송.클라이언트는 변경 사항을..
-
Kubernetes에서 Controller와 Operator의 차이Kubernetes 2025. 3. 2. 10:26
Kubernetes에서 Controller와 Operator는 개념적으로 유사하지만, 목적과 사용 방식에서 차이가 있음 Controller란?Controller는 Kubernetes의 핵심 구성 요소 중 하나로, 특정 리소스(Pod, Deployment, Service 등)의 상태를 지속적으로 모니터링하고, 정의된 원하는 상태(desired state)와 실제 상태(actual state)가 일치하도록 자동 조정하는 역할을 해.특징:- Kubernetes 기본 리소스(Pod, Deployment 등)를 관리- **Reconciliation Loop(조정 루프)**를 사용하여 상태를 지속적으로 유지- ReplicaSet Controller, Node Controller, Endpoint Controller..
-
Kubernetes Operator Pattern: 클러스터 운영 자동화Kubernetes 2025. 3. 2. 10:17
1. Operator Pattern이란?Kubernetes는 강력한 컨테이너 오케스트레이션 기능을 제공하지만, 복잡한 애플리케이션을 배포하고 운영하는 과정은 여전히 수동 작업이 많을 수 있습니다. Operator Pattern은 이러한 문제를 해결하기 위해 Kubernetes의 확장성을 활용하여 애플리케이션의 배포, 구성, 운영을 자동화하는 방법론입니다.Operator는 Kubernetes의 Custom Resource (CR) 와 Controller를 활용하여 특정 애플리케이션을 관리하는 소프트웨어입니다. 이를 통해 데이터베이스, 메시지 큐, 캐시 시스템 같은 상태 저장형 애플리케이션의 배포 및 운영을 자동화할 수 있습니다. 2. Operator의 핵심 개념Custom Resource (CR)Kube..
-
K8S API 서버의 gRPC 지원?Kubernetes 2025. 3. 2. 10:10
Kubernetes API 서버 자체는 gRPC를 직접 지원하지 않지만, 일부 내부 및 확장 기능에서 gRPC 기반 통신을 활용하는 부분이 있음.1️⃣ Kubernetes API 서버는 RESTful API 기반Kubernetes API 서버는 기본적으로 HTTP/HTTPS REST API 를 제공함.모든 공식 API 엔드포인트는 JSON 형식으로 데이터를 주고받음.예제: curl -X GET https://:6443/api/v1/pods kubectl 역시 RESTful API를 사용해서 Kubernetes와 상호작용함.2️⃣ Kubernetes 내부에서 gRPC가 사용되는 곳비록 API 서버가 gRPC를 직접 노출하지는 않지만, Kubernetes 내부적으로 gRPC 기반 통신이 사용되는 몇 가지 요..