클라우드 컴퓨팅 & NoSQL/도커 & 쿠버네티스 78

쿠버네티스 #15 - 모니터링 (3/3) 구글 스택드라이버를 이용한 쿠버네티스 모니터링

쿠버네티스 #15모니터링 3/3 구글 스택드라이버를 이용한 모니터링조대협 (http://bcho.tistory.com) 구글 클라우드 쿠버네티스 스택드라이버 모니터링쿠버네티스 모니터링 시스템을 구축하는 다른 방법으로는 클라우드 서비스를 사용하는 방법이 있다. 그중에서 구글 클라우드에서 제공하는 스택 드라이버 쿠버네티스 모니터링에 대해서 소개하고자한다.https://cloud.google.com/monitoring/kubernetes-engine/ 현재는 베타 상태로, 구글 클라우드 쿠버네티스 서비스 (GKE)에서만 지원이 되며, 쿠버네티스 버전 1.10.2 와 1.11.0 (또는 그 상위버전)에서만 지원이 되고, 모니터링 뿐 아니라, 쿠버네티스 서비스에 대한 로깅을 스택드라이버 로깅 서비스를 이용해서 함..

쿠버네티스 #14 - 모니터링 (2/3) Prometheus

쿠버네티스 #14모니터링 2/3 Prometheus를 이용한 모니터링 조대협 (http://bcho.tistory.com)프로메테우스 그동안 주요 모니터링 솔루션으로 사용되던 힙스터는 1.13 버전 이후로 deprecated 될 예정이고, 그 이후를 맏을 모니터링 솔루션으로 가장 많이 언급되는 모니터링 솔루션은 프로메테우스 (Prometheus)이다. 프로메테우스는 SoundCloud (http://soundcloud.com/)에서 개발된 모니터링 툴로, 2016년에 CNCF (Cloud Native Computing Foundation)에 오픈소스 프로젝트로 기부되었다. 지표 수집을 통한 모니터링을 주요 기능으로 하고 있다. 쿠버네티스 모니터링뿐만 아니라 애플리케이션이나 서버, OS 등 다양한 대상으로..

쿠버네티스 #13 - 모니터링 (1/2)

쿠버네티스 #13 모니터링 1/2 조대협 (http://bcho.tistory.com) 시스템을 운영하는데 있어서 운영 관점에 있어서 가장 중요한 기능중의 하나는 시스템에 대한 모니터링이다. 시스템 자원의 사용량이나 에러등에 대한 모니터링을 통해서, 시스템을 안정적으로 운영하고 문제 발생시 원인 파악과 대응을 할 수 있다.이번 글에서는 쿠버네티스 모니터링 시스템에 대한 개념과, 아키텍쳐 그리고 구축 방법에 대해서 소개하고자 한다. 쿠버네티스 모니터링 컨셉쿠버네티스에 대한 모니터링을 보면 많은 툴과 지표들이 있어서 혼돈하기 쉬운데, 먼저 모니터링 컨셉에 대한 이해를 할 필요가 있다.쿠버네티스 기반의 시스템을 모니터링하기 위해서는 크게 아래와 같이 4가지 계층을 모니터링해야 한다. 1. 호스트 (노드)먼저 ..

쿠버네티스 #12 - Secret

쿠버네티스 #12Secret 조대협 (http://bcho.tistory.com) SecretconfigMap이 일반적인 환경 설정 정보나 CONFIG정보를 저장하도록 디자인 되었다면, 보안이 중요한 패스워드나, API 키, 인증서 파일들은 secret에 저장할 수 있다. Secret은 안에 저장된 내용을 지키기 위해서 추가적인 보안 기능을 제공한다. 예를 들어 secret의 값들은 etcd에 저장될때 암호화된 형태로 저장되고 API server나 node의 파일에는 저장되지 않고, 항상 메모리에 저장되어 있기 때문에 상대적으로 접근이 어렵다.하나의 secret의 사이즈는 최대 1M까지 지원되는데, 메모리에 지원되는 특성 때문에, secret을 여러개 저장하게 되면 API Server나 노드에서 이를 저..

 쿠버네티스 #11 - ConfigMap

쿠버네티스 #11ConfigMap 조대협 (http://bcho.tistory.com) 애플리케이션을 배포하다 보면, 환경에 따라서 다른 설정값을 사용하는 경우가 있다. 예를 들어, 데이타베이스의 IP, API를 호출하기 위한 API KEY, 개발/운영에 따른 디버그 모드, 환경 설정 파일들이 있는데, 애플리케이션 이미지는 같지만, 이런 환경 변수가 차이가 나는 경우 매번 다른 컨테이너 이미지를 만드는 것은 관리상 불편할 수 밖에 없다. 이러한 환경 변수나 설정값들을 변수로 관리해서 Pod가 생성될때 이 값을 넣어줄 수 있는데, 이러한 기능을 제공하는 것이 바로 Configmap과 Secret이다. 아래 그림과 같이 설정 파일을 만들어놓고, Pod 를 배포할때 마다 다른 설정 정보를 반영하도록 할 수 있..

쿠버네티스 #10 - 배포

쿠버네티스 #10 배포 (Deployment) 조대협 롤링 업데이트 애플리케이션을 배포 하는 방법에 대해서 알아보자.일반적으로 애플리케이션을 배포하는 방법은 블루/그린, 카날리 배포, 롤링 업데이트도 여러가지 방법이 있다.그중에서 몇가지 패턴에 대해서 알아보도록 하자 롤링 업데이트는 가장 많이 사용되는 배포 방식 중의 하나이다. 새 버전을 배포하면서, 새 버전 인스턴스를 하나씩 늘려나가고, 기존 버전을 하나씩 줄여나가는 방식이다. 이 경우 기존 버전과 새버전이 동시에 존재할 수 있는 단점은 있지만, 시스템을 무 장애로 업데이트할 수 있다는 장점이 있다. 롤링업데이트를 쿠버네티스의 Replication Controller (RC)를 이용하는 방법을 보면 다음과 같다. 아래와 같이 RC가 v1 버전의 Pod..

쿠버네티스 #9 - HealthCheck

쿠버네티스 #9Health Check 조대협 (http://bcho.tistory.com) 쿠버네티스는 각 컨테이너의 상태를 주기적으로 체크해서, 문제가 있는 컨테이너를 자동으로 재시작하거나 또는 문제가 있는 컨테이너(Pod를) 서비스에서 제외할 수 있다. 이러한 기능을 헬쓰 체크라고 하는데, 크게 두가지 방법이 있다.컨테이너가 살아 있는지 아닌지를 체크하는 방법이 Liveness probe 그리고 컨테이너가 서비스가 가능한 상태인지를 체크하는 방법을 Readiness probe 라고 한다. Probe typesLiveness probe와 readiness probe는 컨테이너가 정상적인지 아닌지를 체크하는 방법으로 다음과 같이 3가지 방식을 제공한다.Command probeHTTP probeTCP pr..

쿠버네티스 #8 - Ingress

쿠버네티스 #8Ingress 조대협 (http://bcho.tistory.com) 쿠버네티스의 서비스는, L4 레이어로 TCP 단에서 Pod들을 밸런싱한다.서비스의 경우에는 TLS (SSL)이나, VirtualHost와 같이 여러 호스트명을 사용하거나 호스트명에 대한 라우팅이 불가능하고, URL Path에 따른 서비스간 라우팅이 불가능하다.또한 마이크로 서비스 아키텍쳐 (MSA)의 경우에는 쿠버네티스의 서비스 하나가 MSA의 서비스로 표현되는 경우가 많고 서비스는 하나의 URL로 대표 되는 경우가 많다. (/users, /products, …) 그래서 MSA 서비스간의 라우팅을 하기 위해서는 API 게이트웨이를 넣는 경우가 많은데, 이 경우에는 API 게이트웨이에 대한 관리포인트가 생기기 때문에, URL..

쿠버네티스 #7 - 서비스 (Service)

쿠버네티스 #7서비스 (service) 조대협 (http://bcho.tistory.com) Service쿠버네티스 서비스에 대해서 자세하게 살펴보도록 한다.Pod의 경우에 지정되는 Ip가 랜덤하게 지정이 되고 리스타트 때마다 변하기 때문에 고정된 엔드포인트로 호출이 어렵다, 또한 여러 Pod에 같은 애플리케이션을 운용할 경우 이 Pod 간의 로드밸런싱을 지원해줘야 하는데, 서비스가 이러한 역할을 한다.서비스는 지정된 IP로 생성이 가능하고, 여러 Pod를 묶어서 로드 밸런싱이 가능하며, 고유한 DNS 이름을 가질 수 있다. 서비스는 다음과 같이 구성이 가능하며, 라벨 셀렉터 (label selector)를 이용하여, 관리하고자 하는 Pod 들을 정의할 수 있다. apiVersion: v1kind: Se..

쿠버네티스 #6 - 실제 서비스 배포해보기

쿠버네티스 #6Replication Controller를 이용하여 서비스 배포하기조대협 (http://bcho.tistory.com) 1. 도커 파일 만들기node.js로 간단한 웹서버를 만들어서 도커로 패키징 해보자. 실습을 진행하기 위해서 로컬 환경에 도커와, node.js 가 설치되어 있어야 한다. 이 두 부분은 생략하도록 한다.여기서 사용한 실습 환경은 node.js carbon 버전 (8.11.3), 도커 맥용 18.05.0-ce, build f150324 을 사용하였다. node.js 애플리케이션 준비하기 node.js로 간단한 웹 애플리케이션을 제작해보자 server.js라는 이름으로 아래 코드를 작성한다.var os = require('os'); var http = require('http..