회의론자의 Kubernetes 첫 탐색 (2024)

2 hours ago 1

물리적 워크로드 배치를 엄격히 통제하는 인프라 업무 때문에 Kubernetes를 피해 온 경험에서 출발해, 제어 루프와 Service를 이해하며 핵심 설계를 긍정적으로 재평가함 제어 루프는 관측값을 바탕으로 원하는 상태에 도달하도록 동작하며, 장애 복구와 복제본 수 유지, 점진적인 버전 교체를 일관된 방식으로 처리함 Service는 안정적인 가상 IP와 DNS, 부하 분산을 제공하고 모든 노드가 트래픽 전달에 참여하게 함으로써 가용성과 확장성을 확보하지만, 규칙 수와 추가 전달 비용이 따름 저장소는 Pod와 데이터의 수명 분리뿐 아니라 공유 쓰기 위험, 드라이버별 기능 차이, StatefulSet의 순서 보장까지 고려해야 하는 영역임 실제 클러스터를 사용하거나 운영하기 전의 평가라는 한계가 있으며, 핵심 개념에는 호의적이지만 운영 가시성과 문자열 기반 설정 도구에는 의문이 남음 회의론에서 설계 이해로 오랜 시스템 관리와 인프라 개발 업무에서 물리적 위치에 대한 엄격한 배치 통제가 필요해 Kubernetes와의 접점을 피해 왔음 그 과정에서 구체적인 근거 없이 Kubernetes를 새로운 방식이자 불필요한 복잡성으로 보게 됐고, 이를 사실에 기반한 평가로 바꾸기 위해 학습을 시작함 기존 튜토리얼은 구성 요소가 무엇을 하는지는 알려 주지만, 그 설계가 필요한 이유와 절충점을 충분히 다루지 못했음 탐색 범위는 주요 개념을 이해하는 데 한정되며, 모든 기능을 망라하거나 실제 운영 경험을 바탕으로 평가한 것은 아님 기본 기능과 구성 요소 Kubernetes는 CPU, 디스크, 메모리, 인스턴스 수 등의 요구사항을 지정하고 인스턴스 수를 동적으로 조절할 수 있게 함 워크로드를 Docker 이미지로 패키징하면 실행 호스트 선택, 중단된 인스턴스 재시작과 장애 호스트에서의 이동, DNS 기반 서비스 탐색을 맡길 수 있음 클러스터의 기본 구성은 다음과 같음 Pod: Docker 이미지들과 설정으로 구성된 작업 단위임 Node: 노드 에이전트 kubelet을 실행하며 Pod를 구동하는 컴퓨터임 Cluster: Node들과 제어 평면의 논리적 집합임 Service: Pod 집합을 논리적으로 묶음 Namespace: 클러스터를 논리적으로 나누고 이름의 유효 범위를 제공함 이런 구성도만으로는 다른 인프라 플랫폼과 구별되는 가치를 이해하기 어렵고, 핵심은 제어 루프와 Service의 동작 방식에 있음 제어 루프: 관측과 조정의 반복 워...

Read Entire Article