Cloud Architect 꿈꾸기

전체 글 73

Kubernetes - Replication Controller, ReplicaSet

Kubernetes의 Controller와 ReplicaSet에 대해 살펴보겠다. 먼저 Controller는 다음과 같은 기능을 수행할 수 있는데, Auto Healing Controller가 장애를 즉각적으로 인지하고 다른 노드에 Pod를 만들어준다. Auto Scaling Pod가 죽지 않도록 부하분산을 시키는 역할을 수행해준다. Software Update 여러 Pod에 대한 버전을 업그레이드 해야할 경우, Controller를 통해 한번에 업그레이드가 가능하고, 도중에 문제가 생기면 롤백이 가능하도록 지원해준다. Job 일시적인 작업을 해야할 경우, Controller가 필요한 순간에만 Pod를 만들어 해당 작업을 이행하고 삭제시킨다. 필요한 순간에만 자원이 사용되고 작업 후에는 반환되기 때문에 ..

프로그래머스 - 더 맵게 (힙heap)

프로그래머스 더 맵게 (힙)문제 설명 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같이 특별한 방법으로 섞어 새로운 음식을 만듭니다. 섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2) Leo는 모든 음식의 스코빌 지수가 K 이상이 될 때까지 반복하여 섞습니다. Leo가 가진 음식의 스코빌 지수를 담은 배열 scoville과 원하는 스코빌 지수 K가 주어질 때, 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 섞어야 하는 최소 횟수를 return 하도록 solution 함수를 작성해주세..

프로그래머스 - 프린터 (스택 / 큐)

프로그래머스 프린터 (스택 / 큐)문제 설명 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린터를 개발했습니다. 이 새롭게 개발한 프린터는 아래와 같은 방식으로 인쇄 작업을 수행합니다. 1. 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다. 2. 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 넣습니다. 3. 그렇지 않으면 J를 인쇄합니다. 예를 들어, 4개의 문서(A, B, C, D)가 순서대로 인쇄 대기목록에 있고 중요도가 2 1 3 2 라면 C D A B 순으로 인쇄하게 됩니다. 내가 인쇄를 요..

프로그래머스 - 다리를 지나는 트럭 (스택 / 큐)

프로그래머스 다리를 지나는 트럭 (스택 / 큐)문제 설명 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이는 bridge_length이고 다리는 무게 weight까지 견딥니다. ※ 트럭이 다리에 완전히 오르지 않은 경우, 이 트럭의 무게는 고려하지 않습니다. 예를 들어, 길이가 2이고 10kg 무게를 견디는 다리가 있습니다. 무게가 [7, 4, 5, 6]kg인 트럭이 순서대로 최단 시간 안에 다리를 건너려면 다음과 같이 건너야 합니다. 경과 시간다리를 지난 트럭다리를 건너는 트럭대기 트럭 0 [] [] [7,4,5,6] 1~2 [] [7] [4,5,6] 3 [7] ..

Kubernetes Object - Namespace, ResourceQuota, LimitRange

Namespace, ResourceQuota, LimitRange 쿠버네티스 클러스터에는 일반적으로 Memory, CPU가 존재하고, 클러스터 내에는 여러 Namespace를 만들 수 있다. Namespace안에는 여러 파드를 만들 수 있으며, 각 Pod는 클러스터 자원을 공유해서 사용한다. 만약 한 Pod가 클러스터 자원을 모두 사용하면, 다른 Pod는 사용할 수 있는 자원이 없어서 문제가 발생하게 되는데, 이러한 문제를 해결하기 위해 resourceQuota를 Namespace마다 최대 하나씩 설정하여, Pod의 사용가능한 자원사용량을 조절할 수 있다. 또, 한 Pod가 자원사용량을 너무 크게 설정해버리면 다른 Pod들이 해당 Namespace에 더이상 들어오지 못하기 때문에 limitRange를 설..

Kubernetes Object - ConfigMap, Secret

이번 포스팅에서는 Pod에 환경 변수를 설정해주기 위한 ConfigMap, Secret 두 가지의 오브젝트에 대해 알아보겠다. 개발 환경과 상용 환경에 따라서는 보안접근, 접근 유저, 키 등 세팅값이 변경되기 마련인데, 컨테이너 내부 서비스에 설정된 값을 각각의 이미지로 별도 관리하기에는 필요치 않은 용량 소모가 발생하게 된다. 이를 방지하기 위해 환경에 따라 변하는 값들을 외부에 결정할 수 있게 도와주기 위한 기능으로써 ConfigMap과 Secret을 사용하곤 한다. ConfigMap과 Secret을 만들 때 데이터를 저장하는 방법으로는 상수를 저장하는 방법 파일을 환경 변수에 저장하는 방법 이 있다. 1. 상수를 저장하는 방법 ConfigMap은 Key:Value로 구성되어있다. 이러한 구성으로 상..

Kubernetes Object - Volume

Kubernetes의 Volume 중 세 가지 Volume에 대해 알아보겠다. emptyDir hostPath PVC / PV 1. emptyDir emptyDir은 컨테이너들끼리 데이터를 공유하기 위해 사용하는 Volume이다. Volume이 생성될 때는 기본적으로 Volume 내부가 비어있다. emptyDir은 Pod 안에 생성되기 때문에 Pod에 문제가 발생해서 재생성되면 Volume이 사라져버리게 된다. 따라서 일시적인 사용목적의 데이터만 저장하는 것을 권장한다. 두 가지의 컨테이너를 같은 Volume에 마운트 시키면 같은 Volume을 공유하기 때문에 데이터를 공유할 수 있다. 2. hostPath hostPath는 emptyDir과 다르게 Node 내부에 Volume을 생성한다. Volume의..

Kubernetes Object - Service

Service Kubernetes에 존재하는 세 가지 타입의 서비스를 알아보겠다. ClusterIP NodePort Load Balancer 1. ClusterIP 서비스는 기본적으로 자신의 ClusterIP를 가지고 있다. Pod에 서비스를 연결시켜두면 Service IP를 통해 Pod에 접근이 가능하다. Pod에도 IP가 할당되어 있는데 Service IP를 이용해 접근하는 이유는, 앞선 Pod에서도 설명했듯이, Pod는 쿠버네티스에서 시스템, 성능 장애로 인해 언제든지 죽을 수 있으며, 재생성될 떄 IP가 변하는 휘발성 IP를 가지고 있다. 반면, Cluster IP로 할당된 IP는 변하지 않기 때문에 Service IP로 접근하게 되면 항상 연결된 Pod에 접근할 수 있다. 서비스를 만들 때 타입..

Kubernetes Object - Pod, Label, Node Schedule

1. Pod Pod 안에는 하나의 독립적인 서비스를 구동할 수 있는 컨테이너들이 존재한다. 컨테이너는 각 서비스가 연결될 수 있는 포트를 가지고 있는데, 한 컨테이너에서 여러개의 포트를 가질 수는 있지만, 한 Pod 안에서 컨테이너끼리는 포트가 중복될 수 없다. Pod가 생성될 때는 고유의 IP 주소가 할당 되는데, 만약 컨트롤러를 통해 Pod가 죽은 후 다시 생성되면 IP 주소가 변경된다. (휘발성) Pod는 쿠버네티스 클러스터 내에서만 주소에 접근이 가능하며 외부에서는 접근이 불가능하다. 2. Label Label은 Pod 뿐만 아니라 모든 오브젝트에서 사용될 수 있는데, 사용 목적에 따라 오브젝트를 분류하고, 분류된 오브젝트들만 따로 골라 연결하기 위해 존재하는 태깅이다. Label은 Key:Val..

프로그래머스 - 기능개발 (스택 / 큐)

프로그래머스 기능개발 (스택 / 큐)문제 설명 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요. 제한 사항 작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다. 작업 진도는 100 미만의 자연수입..