전체 글 (20) 썸네일형 리스트형 K8S - CRI(Container Runtime Interface)란 CRI란?kubelet이 여러 Container Runtime을 사용할 수 있도록 만든 플러그인 인터페이스이다. CRI 스펙을 준수하는 런타임으로 인해 kubelet은 코드 변경 없이 여러 컨테이너 런타임을 사용할 수 있다.kubelet은 gRPC 클라이언트이고, containerd/CRI-O 같은 Container Runtime은 로컬의 Unix domain socket을 통해 CRI gRPC 서버를 제공한다. protocol buffer 직렬화를 사용한다.High Level Container Runtime과 Low Level Container Runtime이 있다. Low Level Container Runtime이란?컨테이너는 cgroup과 namespace, chroot로 격리되어 프로세스로 실.. K8S - preStop Hook과 terminationGracePeriodSeconds preStop Hook이란?쿠버네티스는 컨테이너 라이프 사이클에 Hook을 제공한다. 이 중 preStop Hook은 API 요청이나 활성/시작 프로브 실패와 같은 클러스터 관리 이벤트에서 발생하는 컨테이너 종료 시 호출된다. 훅 호출이 끝나야 컨테이너를 종료하는 Sigterm 시그널이 전송되기 때문에, 애플리케이션이 정상적으로 요청을 처리할 수 있도록 버퍼를 주는 것이 좋다. 별도 애플리케이션 종료 스크립트가 없는 경우 sleep을 사용해서 훅을 일시정지 시켜 시간을 버는 용도로 사용한다. terminationGracePeriodSeconds 이란?API Server가 파드를 Terminated 상태로 바꾸고 Kubelet이 파드의 상태를 Terminated라고 확인하게 되면 파드 종료 프로세스를 시작.. AKS - Managed Prometheus 메트릭 수집 방식 AKS의 Managed Prometheus는 어떻게 메트릭을 수집할까? AKS는 Node Exporter라는 에이전트는 있지 않다. 다만 Azure Managed Prometheus를 사용하면 ama라고 하는 agent가 생성되고 이 중 ama-metrics-node가 Node exporter를 대체한다. 아래는 실제 AKS 클러스터에 배포된 ama 에이전트 목록과 설명이다. 이름 (구성 요소)배포 방식주요 역할ama-metrics-operatorDeployment (syspool 에만)클러스터 공통 타겟(kube state metrics 등), CRD로 추가한 앱 타겟(PodMonitor/ServiceMonitor 등)을 누가 수집할지 할당해주는 역할.ama-metricsDeployment (syspo.. 리눅스 Cgroup 과 Kubernetes Pod Resource 리눅스 Cgroup이란?리눅스 시스템에서 실행되는 프로세스 그룹이 사용할 수 있는 리소스(CPU, Memory, I/O, Network)를 분리하고 제한할 수 있는 커널 기능. 이 기능을 사용해 리소스를 세밀하게 제어하여 중요한 프로세스에 필요한 리소스를 할당하고, 다른 프로세스가 리소스를 독점하지 않도록 함. 프로세스 그룹이란 하나 이상의 프로세스를 묶은 것으로 부모 - 자식 프로세스와 같이 서로 관계가 있는 프로세스의 묶음이다. Cgroup 기능을 사용하는 방법에는 Systemd와 Cgroupfs가 있지만, 이글의 실습 환경인 Azure Kuberntes 환경에서는 Systemd 드라이버로 테스트를 진행할 예정이다. CPU 격리 확인AKS 기준으로 Cgroup V2, Systemd를 사용하고 있어 아.. K8S - 쿠버네티스의 네트워킹 구조 이 글은 도커와 쿠버네티스의 네트워킹 구조에 대한 설명을 담은 글입니다. Docker Networking 위 그림은 Docker의 네트워킹 구조를 나타내는 그림입니다(Docker는 기본적으로 브릿지 모드입니다). 여기서 호스트의 physical network interface 인 eth0이 존재하고 docker를 설치했을 때 생성되는 docker0 가상 브릿지가 존재합니다. dockerd에서 IP Tables를 수정하여 컨테이너에서 외부로 NAT 방식으로 나갈 수 있도록 합니다.(windows, macOS에서 Docker Desktop을 설치한 경우라면 VM이 Docker 엔진을 수행하기 때문에 docker0 인터페이스가 호스트 OS에서는 안보입니다.) 컨테이너가 생성되면 pair interface라고.. 25년 회고 보호되어 있는 글입니다. DevOps - Node-Modules, PnP 그리고 Next.js의 Standalone Node Modules란 https://nodejs.org/api/modules.html#loading-from-node_modules-foldersIf the module identifier passed to require() is not a built-in module, and does not begin with '/', '../', or './', then Node.js starts at the directory of the current module, and adds /node_modules, and attempts to load the module from that location. Node.js will not append node_modules to a path already ending i.. Service Discovery란? Service Discovery란?MSA 와 같은 분산 환경에서 각 서비스들은 IP, Port 기반으로 원격 호출을 한다. 이러한 마이크로 서비스 환경에서는 서비스들이 스케일링 되거나 잦은 배포가 일어나므로 서비스들의 위치(IP, Port)가 변경되는 일이 빈번하다. 그래서 서비스 클라이언트가 서비스를 호출할 때 서비스의 위치를 알아낼 수 있어야하는데, 이때 Service Discovery 시스템을 사용한다. 크게 Client Side Discovery, Server Side Discovery로 나뉜다. 1. Client Side Discovery서비스 클라이언트가 Service Registry에 Query를 통해 Service 위치를 물어보고, 로드밸런싱 알고리즘을 사용하여 서비스를 호출하는 방식이다... 이전 1 2 3 다음