본문 바로가기

Container/Kubernetes

(11)
[Kubernetes] 파드를 사용하는 또 다른 오브젝트들: Jobs, DaemonSets, StatefulSets 🔊 해당 포스팅은 시작하세요! 도커/쿠버네티스 서적을 읽고 개인적인 목적 하에 작성되는 글입니다. 포스팅에 사용되는 모든 자료는 제가 직접 재구성하였음을 알립니다. 이번 포스팅에서는 파드를 사용하는 또 다른 상위 리소스 오브젝트들로 Jobs, DaemonSet, StatefulSet에 대해서 알아보도록 하자. 지금까지 살펴본 ReplicaSet, Deployment 와 같은 리소스 오브젝트들도 배웠었는데, 이것들도 파드를 사용하는 상위 리소스 오브젝트들이라고 할 수 있다. 하지만 파드를 사용하는 리소스 오브젝트들로서 Jobs, DaemonSet, StatefulSet은 Replicaset, Deployment 와는 약간 다른 목적으로 사용하곤 한다. 하나씩 살펴보도록 하자.1. 특정 동작을 수행하고 종..
[Kubernetes] CRD, 커스텀 리소스, 그리고 컨트롤러 🔊 해당 포스팅은 시작하세요! 도커/쿠버네티스 서적을 읽고 개인적인 목적 하에 작성되는 글입니다. 포스팅에 사용되는 모든 자료는 제가 직접 재구성하였음을 알립니다. 이번 포스팅에서는 쿠버네티스에서 커스텀 리소스, CRD, 그리고 컨트롤러에 대해 알아본다. 직전 포스팅까지 우리는 모두 쿠버네티스에서 자체적으로 제공하는 리소스 오브젝트를 생성해왔다. 파드, 레플리카셋, 디플로이먼트, HPA, 스토리지 클래스, PV, PVC 등등 이런 리소스 오브젝트들은 쿠버네티스를 설치하기만 하면 기본적으로 내장되어 있어 사용할 수 있는 오브젝트들이다.  하지만 이렇게 기본적으로 쿠버네티스에서 제공하는 리소스 오브젝트 말고도 우리가 직접 새로운 리소스의 종류를 만들어서 쿠버네티스에서도 사용할 수 있다. 이렇게 직접 만든 ..
[Kubernetes] 파드의 생애주기(Lifecycle)와 배포 전략 🔊 해당 포스팅은 시작하세요! 도커/쿠버네티스 서적을 읽고 개인적인 목적 하에 작성되는 글입니다. 포스팅에 사용되는 모든 자료는 제가 직접 재구성하였음을 알립니다. 쿠버네티스에서는 파드를 관리할 때, 파드의 상태값에 따라 관리하게 된다. 그리고 이 파드의 상태는 파드의 생애주기(Lifecycle)라는 것 안에 다양한 상태 종류로 존재한다. 이번 포스팅에서는 파드의 생애주기를 알아보면서 파드의 상태에 어떤 종류들이 있고, 그 의미가 무엇인지, 더 나아가 이 생애주기를 발생시키는 배포 전략(a.k.a 블루 그린, 롤링 업데이트)에 대해서 알아보도록 하자. 지금까지는 파드, 디플로이먼트, 레플리카셋 등 모든 쿠버네티스 리소스 오브젝트를 단순히 kubectl apply -f 라는 명령어를 이용해서 배포해왔다. ..
[Kubernetes] 쿠버네티스의 파드 스케쥴링 🔊 해당 포스팅은 시작하세요! 도커/쿠버네티스 서적을 읽고 개인적인 목적 하에 작성되는 글입니다. 포스팅에 사용되는 모든 자료는 제가 직접 재구성하였음을 알립니다. 저번 포스팅에서는 쿠버네티스에서 파드나 컨테이너와 같은 리소스 자체를 얼마나 알차게 활용할 수 있는지에 대해서 배웠다. 이번 포스팅에서는 파드나 컨테이너와 같은 인스턴스를 생성할 때, 그 인스턴스를 어떤 서버 즉, 쿠버네티스 클러스터의 어떤 노드에 생성할 것인지를 결정하는 쿠버네티스의 스케쥴링에 대해서 배워보려고 한다. 간단한 예시로, 어떤 애플리케이션을 쿠버네티스 클러스터에 배포하려고 하는데, 해당 애플리케이션의 기반이 되는 (도커)이미지가 amd64 OS 플랫폼만 지원이 된다면 해당 애플리케이션은 amd64 OS 플랫폼으로 구성되어 있는..
[Kubernetes] 파드의 리소스 자원 사용량을 제한시켜보자 🔊 해당 포스팅은 시작하세요! 도커/쿠버네티스 서적을 읽고 개인적인 목적 하에 작성되는 글입니다. 포스팅에 사용되는 모든 자료는 제가 직접 재구성하였음을 알립니다. 쿠버네티스 클러스터를 멀티 노드 환경으로 구축하는 데 있어서 얻을 수 있는 또 다른 강점은 여러 대의 노드(서버)를 묶어서 리소스(CPU, 메모리) 풀로 사용할 수 있다는 점이다. 이러한 점을 활용한다면 특정 파드에서 더 많은 CPU 와 메모리를 필요로 한다면 리소스 풀을 사용해 동일한 리소스 스펙을 갖는 파드를 또 하나 추가시켜 수평 확장(Scale-Out)을 수행할 수도 있다. 하지만 이러한 Scale-Out 기능 만큼 또 다른 중요하게 신경써야 할 점이 있는데, 그것은 바로 컴퓨팅 자원 활용률(Utilization)이다. 이 '컴퓨팅..
[Kubernetes] 파드 내부의 데이터를 영속적으로 저장하자: PV, PVC 🔊 해당 포스팅은 시작하세요! 도커/쿠버네티스 서적을 읽고 개인적인 목적 하에 작성되는 글입니다. 포스팅에 사용되는 모든 자료는 제가 직접 재구성하였음을 알립니다. 1. 데이터를 보존해야만 하는 파드 : stateful 파드쿠버네티스와 관련된 직전 포스팅까지는 모두 파드가 상태가 없는 즉, stateless한 애플리케이션이었다. 상태가 없는 파드라는 것은 그 파드의 내부에는 별도의 데이터를 갖고 있지 않으며, 단순히 파드 외부에서 해당 파드로 요청을 보냈을 때, 어떤 처리만을 수행하고 응답을 반환하기만 했음을 의미한다. 하지만 경우에 따라 파드 내부에서 별도의 데이터를 가지고 있어야 할 수도 있다. 곧 파드가 상태가 있는 즉, stateful한 경우가 있을 수 있다. 이렇게 되면 stateful 한 파..
[Kubernetes] 인바운드 트래픽을 처리하는 방법 : 인그레스(Ingress) 🔊 해당 포스팅은 시작하세요! 도커/쿠버네티스 서적을 읽고 개인적인 목적 하에 작성되는 글입니다. 포스팅에 사용되는 모든 자료는 제가 직접 재구성하였음을 알립니다. 이번 포스팅에서는 쿠버네티스 클러스터의 외부에서 내부로 요청(인바운드 트래픽)이 들어왔을 때, 어떻게 처리할지를 결정하는 인그레스(Ingress) 라는 리소스 오브젝트에 대해서 배워보도록 하자.1. 서비스 vs 인그레스먼저 인그레스라는 용어의 정의에 대해서 짚고 넘어가보자. 인그레스란, 외부에서 내부로 향하는 것을 일컫는다. 그래서 인그레스 트래픽이라 함은 외부에서 내부로 향하는 트래픽을 말하고, 인그레스 네트워크라고 한다면 외부에서 내부로 향하는 트래픽(인그레스 트래픽)을 처리하기 위한 네트워크를 의미한다. 인그레스라는 리소스 오브젝트를 ..
[Kubernetes] 쿠버네티스의 리소스 관리와 설정 🔊 해당 포스팅은 시작하세요! 도커/쿠버네티스 서적을 읽고 개인적인 목적 하에 작성되는 글입니다. 포스팅에 사용되는 모든 자료는 제가 직접 재구성하였음을 알립니다. 이번 포스팅에서는 지금까지 배운 쿠버네티스의 오브젝트들인 파드, 레플리카셋, 디플로이먼트, 서비스와 같은 리소스들을 효율적으로 관리할 수 있도록 하는 것들에 대해 배워보도록 하자. 그 중에서도 이번 포스팅에서는 네임스페이스, 컨피그맵, 시크릿의 사용 방법에 대해 소개하려고 한다. 1. 리소스를 구분하는 장벽, 네임스페이스(Namespace) 이전에 배웠던 도커나 도커 스웜을 배웠을 때는 배포한 컨테이너들을 논리적으로 구분하는 방법이 없었다. 예를 들어, 100개의 도커 컨테이너를 배포한 후, docker ps -a 명령어를 사용하면 배포한 1..
[Kubernetes] 파드를 외부로 노출하기: 서비스(Service) 🔊 해당 포스팅은 시작하세요! 도커/쿠버네티스 서적을 읽고 개인적인 목적 하에 작성되는 글입니다. 포스팅에 사용되는 모든 자료는 제가 직접 재구성하였음을 알립니다. 이번 포스팅에서는 저번 포스팅에서 소개한 쿠버네티스 기초 개념에 포함되는 서비스(Service)라는 오브젝트에 대해서 알아본다. 저번 포스팅 마지막에 배운 디플로이먼트라는 오브젝트를 활용하면 동일한 역할을 하는 파드 여러개를 한 번에 생성하거나 삭제하고, 파드의 생애주기까지 관리해주는 등 손쉽게 레플리카셋(파드들의 모음)을 관리할 수 있었다. 하지만 디플로이먼트가 수행하지 못하는 것이 한 가지 있는데, 외부(외부라 함은 로컬 또는 쿠버네티스 클러스터의 외부)에서 파드로 접근이 불가능한 것이다. 이를 가능하도록 하기 위해서 서비스라는 오브젝트..
[Kubernetes] 쿠버네티스의 기초: 팟, 레플리카셋, 디플로이먼트 🔊 해당 포스팅은 시작하세요! 도커/쿠버네티스 서적을 읽고 개인적인 목적 하에 작성되는 글입니다. 포스팅에 사용되는 모든 자료는 제가 직접 재구성하였음을 알립니다. 이번 포스팅에서는 쿠버네티스의 기초인 팟(Pods), 레플리카셋(Replica set), 디플로이먼트(Deployment) 개념에 대해 배워보도록 하자. 쿠버네티스에 대해 본격적으로 다루어보기 전에 쿠버네티스의 몇 가지 특징에 대해서 살펴보고 넘어가자. A. 쿠버네티스는 모든 리소스를 '오브젝트(Object)'로 다룬다 먼저, 쿠버네티스에서의 모든 리소스는 '오브젝트'라고 불리는 형태로 관리된다. 예를 들어, 이전에 배웠던 도커 스웜에서 제어 단위였던 '서비스'라는 것은 컨테이너들의 집합을 의미한다고 했다. 이것도 일종의 오브젝트라고 부른다...
[Kubernetes] 쿠버네티스 개념과 설치 방법 🔊 해당 포스팅은 시작하세요! 도커/쿠버네티스 서적을 읽고 개인적인 목적 하에 작성되는 글입니다. 포스팅에 사용되는 모든 자료는 제가 직접 재구성하였음을 알립니다. 이번 포스팅에서 부터는 쿠버네티스 시리즈 포스팅을 게시한다. 그 첫 챕터로, 쿠버네티스에 대한 개념에 대해 알아보고, 쿠버네티스를 설치하는 여러가지 방법에 대해 알아보자. 1. 쿠버네티스는 뭘까? 지난 시간까지 도커 시리즈 포스팅으로 도커엔진에 대해 다루는 방법부터 해서 여러 호스트의 도커를 관리하는 도커 스웜, 여처 개의 컨테이너를 한 번에 관리하는 도커 컴포즈 등에 대해 배워왔다. 그런데 이러한 개념들을 한 군데로 모아 사용할 수 있는 프로젝트가 있는데, 그것이 바로 쿠버네티스이다. 쿠버네티스는 도커 스웜 모드처럼 여러 대의 호스트의 도커..