분류 전체보기
-
컨테이너 대 가상머신TECH 2023. 11. 23. 16:30
VMs vs container 가상화는 어떻게 동작하는가 가상화는 컴퓨터 하드웨어 위에 한 컴퓨터의 하드웨어 요소를 여러 가상 컴퓨터로 나누도록 해주는 추상 레이어를 생성하기 위해 소프트웨어를 사용하는 절차이다. 이 소프트웨어를 하이퍼바이저라고 한다. 하이퍼바이저는 작은 레이어로 여러 운영체제 여러개가 함께 실행되도록 해주고, 동일한 컴퓨팅 자원을 공유할 수 있게 해준다. 하이퍼바이저가 물리 컴퓨터 혹은 데이터 센터 내의 서버에서 사용되면 (aka bare metal server), 물리 컴퓨터가 운영체제와 애플리케이션을 하드웨어에서 나눌 수 있도록 해준다. 그러면 여러개의 독립된 virtual machine으로 나뉘게된다. 가상 머신이란 무엇인가? 가상 머신은 가상화 된 컴퓨팅 환경을 만드는 기술이다...
-
VM이란?TECH 2023. 11. 23. 09:46
What is a virtual machine(VM)? Overview VM은 물리적 하드웨어 시스템 위에 생성된 자신의 CPU, 메모리, 네트워크 인터페이스, 스토리지를 갖는 가상 환경이다. 하이퍼바이저라고 불리는 소프트웨어는 머신의 리소스를 하드웨어로부터 분리하고 적절히 프로비저닝해서 VM에서 사용될 수 있도록 한다. 하이퍼바이저가 있는 Kernal-based Virtual Machine (KVM)과 같은 물리 장비는 호스트 머신, 호스트 컴퓨터, 호스트 운영체제, 혹은 단순히 호스트라고 불린다. 이 리소스를 사용하는 많은 VM은 게스트 머신, 게스트 컴퓨터, 게스트 운영체제, 혹은 단순히 게스트라고 불린다. 하이퍼바이저는 CPU, 메모리, 스토리지와 같은 컴퓨터 리소스를 이미 존재하는 게스트 혹은 ..
-
HTTP Keep-Alive란 무엇인가TECH 2023. 11. 13. 10:15
HTTP Keep-Alive란 무엇인가? AKA HTTP persistent connection 단일 TCP 커넥션을 여러 HTTP request/response에 열려있도록 유지하는 것 기본적으로 HTTP 커넥션은 각 요청이 끝날때마다 종료됨. 일반적인 헤더로, 커넥션의 타임아웃과 최대 요청을 설정하기 위해 사용됨 문법 Keep-Alive: parameters parameters 콤마로 구분된 파라미터 리스트, `=`로 구분된 식별자와 값으로 구성됨. timeout: 호스트가 연결을 종료하기 전 호스타가 idle connection을 얼마나 유지할 것인지 설정. 커넥션은 호스트로부터 아무런 데이터를 보내지도/받지도 않으면 idle하다. 호스트는 idle connection을 timeout 보다 길게 유..
-
Kubernetes의 Deployment 객체와 RollingUpdate 전략TECH/Kubernetes 2023. 11. 9. 20:32
Kubernetes Deployment 애플리케이션에 선언적인 업데이트를 제공해주는 리소스 객체 deployment는 애플리케이션의 라이프사이클을 나타낼 수 있게 해준다. 어떤 이미지를 사용할지, 파드의 수, 어떤 식으로 업데이트 되어야 하는지 등 K8s의 객체는 워크로드를 어떻게 관리하고 싶은지에 대해 kubernetes 시스템에게 말하는 방식이다. 객체가 생성된 후, 클러스터는 해당 객체가 존재하도록 하고, 쿠버네티스 클러스터의 desired state를 유지하도록 해준다. 컨테이너화된 애플리케이션을 수동으로 업데이트 하는 것은 시간이 많이 들고 귀찮은 일이다. 다음 버전으로 서비스를 업그레이드 하는 것은, 새로운 버전의 파드를 실행시키고, 오래된 파드를 종료시키고, 그리고 새로운 버전이 제대로 실행..
-
Kubernetes - PodsTECH/Kubernetes 2023. 11. 9. 17:42
파드를 관리하기 위한 워크로드 리소스 일반적으로 파드를 직접 생성할 필요 없다. 대신, Deployment 나 Job 과 같은 워크로드 리소스를 이용해서 생성한다. 파드가 상태를 추적할 필요가 있다면 StatefulSet 을 사용하는 것을 고려해보자. k8s 클러스터 내의 파드는 두 가지 주요 방식으로 사용된다. 단일 컨테이너를 실행하는 파드: "one-container-per-Pod" 모델은 가장 흔한 케이스이다. 이 경우, 파드를 단일 컨테이너를 감싸고 있는 wrapper로 생각하면 된다. k8s는 단일 컨테이너를 직접 관리하는게 아니라 컨테이너를 관리한다. 함께 실행해야 하는 여러 컨테이너를 실행하는 파드: 파드는 강하게 결합되고, 리소스를 공유해야하는 여러개의 함께 위치하는 컨테이너로 구성된 애플..
-
Local ephemeral storageTECH/Kubernetes 2023. 10. 30. 15:01
Local ephemeral storage 노드는 뒨단을 locally attached writeable device 혹은 램인 ephemeral storage를 가질 수 있다. "Ephemeral"이라는 것은 지속성에 대한 보장이 없다는 것을 의미한다. 파드는 ephemeral local storage를 임시적인 공간, 캐싱 혹은 로그를 위해 사용한다. kubelet은 파드에 local epmeral storage를 emptyDir 볼륨을 컨테이너에 마운트 함으로서 제공할 수 있다. kubelet은 또한 이러한 종류의 스토리지를 node level container logs, 컨테이너 이미지, 실행되는 컨테이너의 쓰기 가능한 영역으로 사용할 수 있다. Setting requests and limits ..
-
CAP Theorem: CAP 이론TECH/CS 2023. 8. 11. 14:16
컴퓨터 과학 이론에서 CAP Theorem은 모든 분산 데이터 저장소는 아래 세 가지 요구사항 중 두 가지 만을 만족시킬 수 있다는 것을 의미한다. Consistency (일관성) : 분산 시스템에 접속하는 모든 클라이언트는 어떤 노드에 접속했느냐에 관계없이 언제나 같은 데이터를 보게 되어야 한다. Availability (가용성): 분산 시스템에 접속하는 클라이언트는 일부 노드에 장애가 발생하더라도 항상 응답을 받을 수 있어야 한다. Partition tolerance (파티션 감내): 파티션(두 노드 사이의 통신 장애) 감내는 네트워크에 파티션이 생기더라도 시스템은 계속 동작하여야 한다는 것을 뜻한다. 네트워크 파티션이 발생하면, 다음 중 하나를 결정해야 한다. 현재 동작을 취소하여 가용성을 낮추지만..
-
Kubernetes QoS란? (kube-prometheus-stack 설치로 살펴보는)TECH/Kubernetes 2023. 1. 19. 10:43
최근 kube-prometheus-stack을 설치한 후 prometheus 자체의 메모리 할당량을 살펴보려고 했는데, 이상하게 prometheus 컨테이너만 메트릭이 나타나지 않는 현상을 발견했다. 먼저 Kubernetes의 QoS가 뭔지 알아본 후 prometheus 메트릭이 나타나지 않은 이유를 살펴보자. QoS Classes Kubernetes는 QoS를 사용하여 Pod의 evicting과 scheduling을 결정한다. Kubernetes가 Pod를 생성하면 다음 세가지 중 하나의 QoS 클래스를 Pod에 할당하게 된다. Guaranteed Burstable BestEffort Guaranteed 파드 내의 모든 컨테이너는 memory limit과 memory request를 가져야 한다. 파드..