Kubernetes

    [kubernetes] #4 Minikube와 kubectl - 클러스터 구축

    [kubernetes] #4 Minikube와 kubectl - 클러스터 구축

    서론 minikube가 무엇인지 알아보자 kubectl이 무엇인지 알아보자 Minikube cluster를 설치해보자 Minikube 란? 일반적으로 배포에 사용되는 쿠버네티스 클러스터는 위와 같은 구조를 가진다. 즉, 다수의 마스터 노드와 워커 노드를 가진다. 그리고 마스터 노드와 워커 노드들은 각자의 역할을 부여받는다. 위 그림에서 보다시피 하나의 노드는 하나의 물리 머신 또는 가상 머신이 된다. 만약 로컬 환경에서 이러한 구조를 테스트 해보고 싶다면 어떻게 할까? 작은 기능 하나를 테스트 하기 위해서 위와 같이 많은 노드를 가진 클러스터를 구성해 보는 것은 매우 어렵다. (가상 머신을 많이 만들어서 테스트 한다고 해도, 일반적인 컴퓨터에서는 CPU와 RAM은 충분하지 않을 것이다.) 이같은 걱정을 ..

    [kubernetes] #3 쿠버네티스 아키텍처

    [kubernetes] #3 쿠버네티스 아키텍처

    서론 쿠버네티스 클러스터에는 마스터 노드와 워커 노드가 있다. 이들이 어떻게 다른지 알아보자. 쿠버네티스 클러스터 환경에서 노드들이 어떻게 스스로 복구(self-healing)하고 관리(self-managed)되는지 알아보자. 1. 워커 프로세스(Worker processes) 쿠버네티스 클러스터에는 실질적인 일을 하는 워커 노드가 있다. 워커 노드는 쿠버네티스의 기본 구성요소인 파드 여러 개를 가질 수 있다. 위 그림의 Node1은 컨테이너로 이루어진 2개의 파드를 가지고 있다. 쿠버네티스는 하나의 노드에 3개의 프로세스를 필요로 한다. 프로세스는 모든 노드에 반드시 설치되어야 하며 그들을 스케줄링, 관리 하는데 반드시 필요하다. 첫 번째 프로세스는 노드의 컨테이너 런타임을 위해 수행되는 프로그램이다...

    [Kubernetes] #1 쿠버네티스란?

    쿠버네티스의 공식적인 정의 오픈소스 컨테이너 오케스트레이션 도구 구글이 개발함 각기 다른 배포 환경으로 컨테이너화 된 애플리케이션을 관리하는데 도움을 줌 오케스트레이션 도구가 필요한 이유 모놀리식에서 마이크로서비스로의 트렌드 변화 컨테이너 사용의 증가 마이크로서비스는 기술적으로 수백, 수천 개의 컨테이너를 만들어야 하는 결과를 초래할 수 있다. 각각의 컨테이너를 관리하기 위해서 컨테이너에 맞는 스크립트 파일을 개별적으로 만든다면 정말 복잡하고 불가능할지도 모른다. 그래서 많은 컨테이너들을 편리하게 관리하기 위해서 오케트스트레이션 도구가 필요한 것이다. 그래서 오케스트레이션 도구가 제공하는건? 높은 가용성 애플리케이션이 언제나 사용 가능함을 의미한다. 높은 확장성 퍼포먼스가 중요한 애플리케이션일수록 빠르게..

    [K8S] 쿠버네티스 파드의 생명주기

    쿠버네티스의 장점은 쿠버네티스의 구성요소들이 하는 일이 명확하게 구분되어있어서 각자의 역할만 충실하게 한다면 클러스터 시스템이 안정적으로 운영된다는 점이다. 각자의 역할이 명확히 나눠진 점은 마이크로서비스 아키텍쳐(MSA) 구조와도 밀접하다. 또한 역할이 나뉘어있기 때문에 문제가 발생했을 때 디버깅하기도 쉽다. 파드의 생명주기란? 파드가 생성, 수정, 삭제되는 과정을 의미한다. 알아보자 개발자가 kubectl 커맨드라인을 통해서 API 서버에 파드 생성을 요청한다. (create) API 서버는 etcd안에 전달된 내용을 모두 기록해 클러스터의 상태 값을 항상 최신으로 유지한다. 따라서 각 요소(etcd, API서버, 컨트롤러 매니저, 스케줄러)가 상태를 업데이트할 때마다 API 서버를 통해서 etcd에..

    [K8S] 쿠버네티스 구성요소

    [K8S] 쿠버네티스 구성요소

    쿠버네티스의 구성 요소의 유기적인 연결 관계를 표현하면 다음과 같다. 하나의 쿠버네티스 생태계를 쿠버네티스 클러스터라고 한다. 파드를 배포하는 순서에 따라서 요소들의 역할을 알아보자 마스터 노드 : 클러스터의 '두뇌' 역할을 담당한다. kubectl 쿠버네티스 클러스터에 명령을 내리는 커맨드라인 도구이다. docker를 사용하기 위해서 모든 명령어가 docker ... 로 시작하는데, 쿠버네티스도 마찬가지로 클러스터에 명령을 내리기 위해서는 kubectl .. 이 명령의 시작이 된다. 일반적으로 개발자는 API 서버와 주로 통신하므로 API가 서버가 위치한 마스터 노드에 구성된다. 자주 쳐야하는 명령어지만 타이핑이 까다로워서 alias kbc='kubectl'로 설정하면 편하다. API 서버 쿠버네티스 ..

    [K8S] 컨테이너 이해하기

    [K8S] 컨테이너 이해하기

    컨테이너 인프라 환경이란 리눅스 운영 체제의 커널 하나에서 여러 개의 컨테이너가 격리된 상태로 실행되는 인프라 환경을 말한다. 컨테이너 하나 이상의 목적을 위해 독립적으로 작동하는 프로세스이다. 개인 환경(개인 PC)에서는 1명의 관리자(사용자)가 다양한 프로그램을 사용하므로 각각의 프로그램을 컨테이너로 구현할 필요가 없다. 하지만 기업 환경에서는 다수의 관리자가 수백, 수천대의 서버를 함께 관리하기 때문에 일관성을 유지하는 것이 매우 중요하다. 여러 사람이 만져서 설정의 일관성이 떨어진 서버를 SnowFlake Server(눈송이 서버)라고 한다. 이런 경우에 컨테이너 인프라 환경을 구성하면 효과적이다. 또한 가상화 환경에서는 각각의 가상 머신이 모두 독립적인 운영체제 커널을 가지고 있어야 하기 때문에..