반응형

전체 글 509

[k8s] ReplicaSet

파드에 문제가 생기면 어떻게 해야될까? crashes 이거나 fails 이라면? 문제가 되는 파드를 제거하고 새로운 파드로 교체를 해야할 것입니다. ReplicaSet은 여러 파드를 관리합니다. 가장 중요한 것은 특정 개수의 파드를 항상 유지하도록 보장해줍니다. ReplicaSet의 과거 버전은 Replication Controller라고 불립니다. ReplicaSet의 템플릿에 대해서 알아보겠습니다. apiVersion: apps/v1 kind: ReplicaSet metadata: name: myReplicaSet labels: app: myApp-replicaSet spec: template: metadata: name: myPod labels: app: myApp-pod spec: containe..

IT/Cloud 2023.07.30

[k8s] 파드(pod)

Pod는 쿠버네티스에서 만들 수 있는 가장 작은 오브젝트입니다. 기본이 되는 배포 단위 입니다. 일반적으로 파드 1개에 컨테이너 1개를 포함합니다. 추가 컨테이너를 생성할 경우는 모니터링과 같이 애플리케이션이 배포된 컨테이너를 돕기 위한 목적으로 많이 생성합니다. 파드 내부에서는 ip를 서로 공유합니다. 따라서 컨테이너 간에 통신할 때에는 locahost:port를 사용하여 호출할 수 있습니다. 파드를 생성하는 템플릿을 보면서 어떻게 파드가 구성되고 생성되는지 보겠습니다. apiVersion: v1 kind: Pod metadata: name: myPod labels: app: myApp-pod spec: containers: - name: nginx-container image: nginx apiVer..

IT/Cloud 2023.07.30

[K8S] 워커 노드 구성

마스터 노드의 구성 요소들을 구체적으로 알아보겠습니다. Kubelet 큐블렛은 워커노드의 선장과 비슷합니다. 명령을 받으면 노드에 지시를 내려서 명령을 수행합니다. 예를 들어, 파드 생성 명령을 받으면 container runtime engine에게 필요한 애플리케이션 이미지를 당겨오게 하고 배포하게 합니다. 파드 상태와 컨테이너 상태를 모니터링합니다. 그리고 해당 정보를 Kube API Server로 주기적으로 보냅니다. Kubelet 설치 방법 [예정] Kube Proxy 쿠베 프록시는 각 노드에서 동작하는 프로세스 입니다. 쿠베 프록시는 서비스를 모니터링합니다. 각 노드에 iptable rule를 생성하고 트래픽을 서비스 ip로 보내고, 파드 ip로 보냅니다. Kube Proxy 설치 방법 [예정]

IT/Cloud 2023.07.30

[K8S] 마스터 노드 구성

마스터 노드의 구성 요소들을 구체적으로 알아보겠습니다. ETCD ETCD는 분산 key-value 저장소 입니다. 대게 간단하고 빠릅니다. ETCD는 클러스터의 노드, 파드, 컨피그, 시크릿 등에 따라 데이터를 저장합니다. Key-value는 어떤 모습을 하고 있을까요? 일반적인 관계형 데이터베이스와 비교가 필요할 것 같습니다. 아래 예시에 일반적인 관계형 데이터베이스를 준비했습니다. Sara의 연봉 정보가 없다면 빈칸 또는 null로 나타낼 수 있습니다. 이름 나이 장소 연봉 John 45 서울 6000 Dave 35 부산 5000 Sara 25 대구 또 다른 상황입니다. '차량 개수'이라는 컬럼이 추가될 경우, 모든 영역에 영향을 미칠 수 있습니다. 물론 null 등을 고려해야 합니다. 이제 key-..

IT/Cloud 2023.07.30

[K8S] 클러스터 구성 개요

k8s 클러스터는 노드 집합으로 구성되어 있습니다. 워커 노드는 애플리케이션을 컨테이너 형태로 담습니다. 마스터 노드는 k8s를 관리하는 역할을 합니다. 그 역할에는 노드들에 데이터를 저장하고, 하나의 컨테이너가 어느 노드에 생성되어야 하는지에 대한 계획을 하고, 노드와 컨테이너를 모니터링 합니다. 마스터 노드 구성 ETCD - 데이터를 key-value 형태로 저장하는 데이터베이스 Kube Scheduler - 새로 생성되는 컨테이너와 여러 상황을 고려하여 어느 노드에 새로운 컨테이너를 생성할지 계획 - 고려되는 상황 : 새로 생성될 컨테이너의 요구 자원량, 워커 노드의 자원 상황, 정책 및 제한 등 (taint, toleration) Kube API Server - k8s에서 일어나는 모든 수행 동작..

IT/Cloud 2023.07.30

리액티브 데이터 타입(Mono, Flux)을 사용하는 이유

스프링 웹플럭스를 사용하면 Mono와 Flux 타입을 만나게 됩니다. 이 두 개의 데이터 타입은 왜 필요하게 되었을까에 대해서 알아보려고 합니다. 리액티브 타입의 도입 리액티브 타입은 request와 data의 빠른 처리 목적으로 도입된 개념이 아닌, 잦은 오버헤드를 줄이기 위해서 도입되었습니다. 전통적인 블로킹 작업에서는 기다리는 동안에 자원을 잡고 있었습니다. 그러나 논블로킹에서는 자원을 차지하지 않습니다. 그래서 이를 활용한 리액티브 프로그래밍에서는 request를 동시적으로 처리할 수 있는 장점과 원격 서버에서 오는 데이터 작업을 대기시간 없이 처리할 수 있는 장점이 있습니다. Reactive API는 개별 데이터를 하나씩 처리하는 것 뿐만 아니라 스트림 데이터를 다룰 수 있습니다. 비동기 처리를..

IT/Others 2023.05.07

I/O operation

I/O operation은 외부 환경과 컴퓨터 사이의 통신을 의미합니다. 대게 I/O operation은 컴퓨터 메모리와 외부 장비 즉, 마우스나 키보드, 디스플레이어 등과 같은 장치들 사이에 데이터 통신을 포함합니다. Input operation : 컴퓨터 외부에서 데이터를 가져오고 컴퓨터 메모리에 저장 Output operation : 컴퓨터 메모리의 데이터를 외부로 전달 Synchronous I/O operation : I/O operation이 종료되기 전까지 기다렸다가 종료된 후에 다음 절차 수행 Asynchronous I/O operation : I/O operation이 수행되는 동안에 다른 작업도 수행

IT/Others 2023.05.06

Reactor 패턴과 Proactor 패턴

리액터 패턴과 프로액터 패턴에 대해서 알아보겠습니다. 둘은 '이벤트 핸들링 패턴' 입니다. 이 패턴은 멀티 스레드 이후에 도입되었습니다. 대용량 네트워크 환경에서 멀티 스레드는 어느 정도 효과를 보았는지 몇 가지 문제가 있었습니다. 스레드가 많이 필요하니 오버헤드가 생기거나 자원의 공유 문제가 발생했습니다. 그래서 이벤트가 발생하면 처리하고 이후에 콜백으로 받는 패턴을 도입합니다. 이벤트 핸들링 패턴의 요소는 아래와 같습니다. Event sources : 이벤트를 감지하고 가져옴 Demultiplexer : 이벤트가 발생할 때까지 기다리다가 발생하면 이벤트 핸들러에게 이벤트를 전달 Event handlers : 이벤트를 처리하고 콜백으로 응답을 보냄 이벤트 처리 패턴의 특징은 비동기 처리가 가능하고 순서..

IT/Others 2023.05.06

Spring Cloud Context

Spring Cloud Context 내용을 정리하였습니다. The Boostrap Application Context Context는 외부 configuration 설정을 가져오는 역할과 로컬 configuration 설정을 가져와 복호화하는 역할을 합니다. Main context과 bootstrap context가 있습니다. 일반적인 applicationl.yaml과 다르게 bootstrap.yaml이라는 파일을 만들어서 사용하며 main context과 분리하여 외부 configuration 설정을 관리할 수 있습니다. spring.application.name : 애플리케이션의 context ID spring.profiles.active : profile 설정 spring.cloud.bootstr..

IT/Spring Cloud 2023.04.03
반응형