Kubernetes
-
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 기반 통신이 사용되는 몇 가지 요..
-
Mac OS에서 Linux 환경에 구동 가능한 컨테이너 이미지 만들기Kubernetes 2024. 8. 15. 10:47
맥북은 기본적으로 macOS를 사용하며, 이와 같은 환경에서 생성된 Docker 이미지를 리눅스 환경에서도 정상적으로 동작하게 만드는 방법을 살펴보겠습니다.1. Docker Desktop 사용맥북에서 Docker Desktop을 사용하면, Docker는 자동으로 리눅스 컨테이너를 실행할 수 있는 리눅스 기반의 가상 머신(일반적으로 Docker Desktop VM 또는 HyperKit을 통해)을 사용합니다. 이 가상 환경은 리눅스와 동일한 커널을 사용하기 때문에, 맥북에서 생성한 Docker 이미지는 리눅스 머신에서 그대로 사용할 수 있습니다.2. 리눅스 기반의 Docker 이미지를 사용맥북에서 이미지를 빌드할 때, 반드시 리눅스 기반의 베이스 이미지를 사용해야 합니다. 예를 들어, node:18-alpi..