| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
- Network
- SRE
- elasticsearch
- 인프라
- 데이터엔지니어
- OS
- 스프링빈
- 분산시스템
- k8s
- Kafka
- fork()
- Data Engineering
- 쿠버네티스
- devsecops
- tech
- 개발
- 개발자
- 시스템호출
- 운영체제
- Kubernetes
- Pub/Sub
- etcd
- 대규모시스템
- Monitoring
- 코테
- 커널
- AWS
- 엘라스틱서치
- it
- Observability
- Today
- Total
목록2025/08 (14)
모래성 말고 철옹성
개요회사에서 Elasticsearch, Tomcat 등의 클러스터를 구축하고, 혼자 Kubernetes를 공부해보다가 "물리적으로 분산된 서버들이 어떻게 하나의 서버처럼 동작할 수 있을까?" 라는 궁금증이 생겼다. 누군가도 나와 같은 생각을 했을 것 같아서 분산 시스템을 공부해보고, 실제로 분산 시스템을 구축해보는 사이드 프로젝트를 해 공유해보기로 했다.목차1편. 분산 합의란 무엇인가? - Raft의 기본 개념 (TBD)2편. 클러스터의 심장, 리더 선출 구현기 (TBD)3편. 데이터 복제와 최종 일관성 보장하기 (TBD)
Taints & Tolerations 이란?Taint와 Tolerations 는 Kubernetes의 Pod 스케줄링 제약 조건을 정의하는 기능이다.Taint: 노드에 "특정 Pod는 오지 마라"라는 표시Tolerations: Pod가 특정 Taint를 무시하고 해당 노드에 스케줄링 될 수 있도록 허용노드에 들어올 수 있는 Pod를 필터링 하는 기능이라고 생각하면 된다. *Taint & Toleration을 직역하면 오염 & 관용 이라는 뜻이다. 즉, 노드를 오염시켜 Pod를 받지 않고, Pod에 오염을 참을 수 있는 관용을 부여한다 라고 보면 된다.Kube-Scheduler의 주요 기능노드 전용화 (Node Isolation)특정 워크로드만 실행하도록 노드를 전용으로 할당리소스 보호 (Resource ..
Kube-Scheduler란?Kube-Controller-Manager는 Kubernetes 클러스터의 상태를 원하는 목표 상태(Desired State)로 유지하도록 관리하는 핵심 컴포넌트이다. 쉽게 말해, “쿠버네티스의 자동화 관리자(Controller 집합체)”라고 할 수 있다. Kube-Scheduler의 주요 역할과 기능ReplicaSet Controller지정된 수의 Pod가 항상 실행되도록 보장Node Controller노드의 상태(정상/비정상) 모니터링 및 조치Endpoint ControllerService와 Pod를 연결 (네트워크 엔드포인트 관리)Service Account & Token ControllerPod가 API Server와 안전하게 통신 가능하도록 인증자격 발급이런 다양한 ..
Kube-Scheduler란?Kube-Scheduler는 Kubernetes에서 Pod가 어떤 노드(Node)에 배치될지 결정하는 스케줄러 컴포넌트이다.kubectl 명령을 실행하거나, 외부 어플리케이션이 API 요청을 보낼 때, 그 요청들은 가장 먼저 Kube-API Server를 통과하게 된다. Pod는 스스로 실행 위치를 알 수 없기 때문에, 클러스터 내 리소스 상태를 확인하고 가장 적절한 노드에 할당하는 역할을 한다. Kube-Scheduler의 주요 기능스케줄링 후보 탐색실행 가능한 노드 필터링자원 조건 확인CPU, Memory 등 하드웨어 리소스 자원 고려정책 기반 선택NodeSelector, Node Affinity, Taints & Tolerantions 지원우선순위 부여적합한 노드 점수화..
Kube-API Server란?Kube-API Server는 Kubernetes 클러스터의 Gateway로서, 모든 명령과 요청이 반드시 지나가는 핵심 컴포넌트이다.kubectl 명령을 실행하거나, 외부 어플리케이션이 API 요청을 보낼 때, 그 요청들은 가장 먼저 Kube-API Server를 통과하게 된다.Kube-API Server의 주요 핵심기능REST API 제공Kubernetes와 통신할 수 있는 표준 HTTP API 제공인증/인가 처리사용자나 서비스 계정의 권한 검증etcd 연동클러스터 상태 정보 저장, 조회요청 검증과 변환잘못된 요청 거부, 필요한 데이터 구조 변환다른 컴포넌트들과 중재Controller, Scheduler등과 상태 동기화Kubernetes에서의 위치사용자 ↔ Kube-AP..
etcd란? 분산 환경에서 데이터를 안정적으로 저장하는 강한 일관성(Strong Consistency) 기반의 키-값 저장소이다.주요 특징으로는리더 선출 자동 처리 - 네트워크 분할 상황에서도 안정적으로 리더 선출고가용성 - 리더 노드 장 시 데이터와 서비스 지속 가능분산 시스템 필수 구성요소 - k8s같은 클러스터 환경에서 핵심 메타데이터 저장소로 사용etcd 주요 기능간단한 인터페이스curl 같은 HTTP 도구로 값 읽기/쓰기 가능key-value 저장표준 파일 시스템처럼 계층적 디렉토리 구조 지원변경 감지특정 키, 디렉터리 변경 시 감지하고 반응보안 기능선택적 SSL 클라이언트 인증서 지원고성능인스턴스당 초당 수천 건의 쓰기 처리 가능TTL 지원특정 키에 만료 시간 부여 가능분산 합의Raft 프로토..
"측정할 수 없으면, 개선할 수도 없다”서비르를 운영하다 보면 사용자, 운영자, 개발자 마다 "서비스가 잘 되고 있구나"의 기준은 제각각이다. 운영자는 "로그가 안보여요", 고객은 "너무 느려요" 이렇게 서로 다른 잣대를 쓰면, 문제를 발견하는 시점도 다르고 우선순위도 충돌하게 된다. 그렇기 때문에 감 대신에 측정 가능한 정량적인 기준이 필요했고, 그게 바로 SLI, SLO, SLA 체계이다. 서비스 수준 척도 (Service Level Indicator, SLI)서비스 수준을 판단할 수 있는 몇 가지를 정량적으로 측정한 값ex. 응답속도, 시스템 처리량, 에러율 등SRE의 관점에서 가장 중요한 지표는 가용성업계에서 통상 고가용성(High Availability)를 99% 또는 99.9% 와 같이 표현한..
Firecracker가 탄생한 히스토리AWS는 처음에 Lambda 서비스를 만들면서 고객별로 전용 서버를 할당해 안전하게 운영했습니다. 하지만 이 방식은 무겁고 관리가 어려운 문제점이 있었습니다. 서버리스와 컨테이너 사용이 급격히 늘어나면서, 더 빠르고 가볍고 효율적인 가상 머신 기술이 필요해졌습니다.그래서 AWS는 Firecracker를 개발했습니다. Firecracker는 아주 작고 빠른 가상 머신으로, 한 서버에 수천 개를 동시에 띄워도 안전하고 효율적으로 운영할 수 있도록 설계되었습니다. 덕분에 Lambda와 Fargate 같은 서비스가 더 빠르고 효율적으로 동작할 수 있게 되었습니다.개요Firecracker는 MicroVM을 빠르고 안전하게 만드는 기술Firecracker의 중요한 구성요소는 가..