전체 글

전체 글

    GZIP의 압축 방식

    GZIP리눅스에서 주로 사용되는 압축 방식으로 HTTP 요청을 주고 받는과정에서도 gzip 알고리즘을 사용하여 그 size를 줄이기도 한다.이러한 GZIP의 알고리즘에는 LZ77 알고리즘과 Huffman Coding 이 사용된다.LZ77 알고리즘문자열에서 반복되는 패턴을 찾아서 Back Reference 형태로 저장하여 중복을 제거하는 알고리즘이다. LZ77은 원본 데이터를 offset, length, next char이라는 세 가지 요소로 구성된 형식의 토큰으로 변환한다. 변환 과정에서는 Sliding Window 기법을 사용하는데, 해당 기법을 사용하면서 동시에 과거의 문자열을 저장하는 Search Buffer와 현재 읽을 데이터를 저장하는 Lookahead Buffer를 사용한다. ABABBCABA..

    (TIL) Kubelet

    kubeletKubernetes worker node에서 실행되며 노드와 Control Plane 간의 통신을 담당하는 핵심 컴포넌트이다.흔히 배의 선장에 비유하곤 한다.kubelet은 마스터 노드의 명령을 받아 컨테이너를 실행하고, 노드의 상태를 지속적으로 보고하는 역할을 한다.kubelet의 역할Node를 Kubernetes Cluster에 등록한다.새로운 Worker node가 클러스터에 추가되면, 해당 노드에서 kubelet이 실행된다.kubelet은 kubernetes api-server에 자신을 등록하며, 등록이 완료되면 해당 노드는 클러스터의 일부가 된다.컨테이너 실행 및 관리Pod를 실행해야한다는 명령을 받으면 Container Runtime(Docker, containerd) 을 호출하여..

    (TIL) Kube-Scheduler

    Kube-Schedulerkube-scheduler는 kubernetes에서 Pod를 적절한 노드에 배치하는 역할을 하는 핵심 컴포넌트이다.다만 scheduler를 pod를 직접 배포하지는 않으며, 단순히 이 pod는 이 node에서 실행해라! 라는 결정을 내리는 역할만을 수행한다.실제로 Pod를 실행하는 것은 Kubelet이다kube-scheduler가 Pod를 배치하는 과정pod 배치 과정은 두 단계로 이루어진다.FilteringPod가 실행될 수 없는 노드를 제거한다. 예를 들어, Pod이 요청한 CPU/메모리보다 적은 리소스를 가진 노드는 배제된다. 결과적으로 Pod를 실행할 수 있는 후보 노드 목록을 생성한다.Scoring후보 노드 중에서 가장 적절한 노드를 선택하는 과정이다. 기본적으로 0~1..

    (TIL) Kube Controller Manager in Kubernetes

    Kube Controller ManagerKube Controller Manager는 여러 컨트롤러를 관리하는 중앙 프로세스이다.클러스터 내부의 다양한 리소스를 모니터링하고 정상적인 상태를 유지하도록 자동으로 조정하는 역할을 한다.Kubernetes에서 컨트롤러의 역할Kubernetes에서 컨트롤러는 클러스터의 상태를 지속적으로 모니터링하며 desired state와 actual state가 일치하도록 조정하는 역할을 한다.Node Controller의 동작 방식은 다음과 같다.1. 노드의 상태를 5초마다 체크한다.2. 40초동안 응답이 없으면 Unreachable 상태로 표시한다3. 추가로 5분이 지나도 응답이 없으면 해당 노드에서 실행중인 Pod를 제거한다.4. ReplicaSet이 있는 경우, 다른..

    (TIL) Kube-API Server

    kube-apiserver란kube-apiserver는 Kubernetes의 중앙 관리 허브이다.모든 요청과 변경 사항은 kube-apiserver를 통해 이루어지게된다.kubectl get pods위와 같이 kubectl 명령어를 실행하면 kubectl은 kube-apiserver에 요청을 보낸다.kube-apiserver는 요청을 인증(authentication) 및 검증(valication)하며, 요청된 데이터를 ETCD에서 조회하며 응답을 반환한다.Kube-api server가 pod를 생성하는 과정사용자가 Pod을 생성하는 요청을 보낸 경우, 아래와 같은 Flow를 통해 사용자의 요청을 처리하게 된다.1) 사용자가 kubectl apply -f pod.yaml 실행2) kubectl이 kube-..

    (TIL) Kubernetes의 ETCD

    ETCDETCD는 Kubernetes의 Master Node에서 사용하는 Key-Value Store이다ETCD의 설치 및 실행MySQL, MongoDB 같은 고도화된 DB와 달리 바이너리 파일을 다운로드하고 실행하면 바로 사용 가능하다.운영 체제에 맞는 ETCD 바이너리 파일을 다운받고 (https://github.com/etcd-io/etcd/releases) ./etcd 명령어를 실행하면 포트 2379에서 서비스가 실행된다.etcdctletcd에는 etcdctl이라는 기본적인 클라이언트 도구가 포함되어있다.key-value 데이터 저장시에는 아래와 같은 명령어를 수행하면된다../etcdctl put key1 value1이 외에 사용 가능한 명령어 목록을 보려면 아래와 같이 입력한다./etcdctlE..

    (TIL) ctr, cri, nerd-control

    CRI의 도입컨테이너 기술이 처음 등장했을 때의 대표적인 기술로 Docker를 뽑을 수 있다.Kubernetes는 Docker를 Ochestration(배포, 스케일링, 관리)하는 역할을 맡게 되었는데, 따라서 Docker 스펙과 매우 긴밀한 Dependency를 가지는 방향으로 설계되었다.그러나 이후 Kubernetes가 점차 인기를 끌게되면서 rkt와 같은 다른 컨테이너 런타임들도 kubernetes에서 사용할 수 있도록 지원할 필요성이 생겼고, 이를 해결하기 위해 CRI, 즉 Container Runtime Interface라는 개념을 도입하게 되었다.CRI란CRI란 Kubernetes가 컨테이너 런타임과 상호작용하는 표준 인터페이스이다.해당 표준을 통해 Docker 이외의 런타임도 Kubernet..

    (TIL) Cluster Archiectuer

    Kubernetes의 노드Master Node와 Worker Nodes로 이루어져 있음Master Node쿠버네티스 클러스터를 관리하는 역할을 한다.어떤 container가 어디에 배치되어야 하는지 계획하고, 노드와 컨테이너 상태를 모니터링한다. etcdMaster Node에서 사용하는 key-value storekube-scheduler컨테이너가 배치되어야하는 알맞은 노드를 식별한다.Controller-ManagerNode-Controller + Replicaion-Controllerkube-apiservercluster 내부의 operation을 orchestrating하는 역할primary management component of KubernetesWorker NodekubeletKube API..