본문 바로가기

Amazon EKS Amazon EKS 는 AWS 에서 Kubernetes 를 손쉽게 실행하도록 하는 관리형 서비스이다. EKS 는 여러 가용 영역에서 Kubernetes 제어 플레인 인스턴스를 실행하고 관리하여 고가용성을 보장한다. 또한 오픈 소스 Kubernetes 소프트웨어의 최신 버전을 실행하므로 Kubernetes 의 모든 기존 플러그인과 도구를 사용할 수 있다. EKS 는 ECR, ELB, IAM, VPC 등의 AWS 서비스와도 통합되어 확장성과 보안을 제공한다. 아래는 EKS 를 사용하여 어플리케이션을 배포하는 일련의 플로우이다. 클러스터의 VPC / IAM / Security Groups 생성로컬에 AWS CLI / kubectl / IAM Authenticator 설치EKS 클러스터 생성kubeconfig ..
Kubernetes Architecture Master 위 그림은 쿠버네티스 클러스터의 아키텍처이다. 좌측의 마스터 컴포넌트는 클러스터의 제어영역(control plane) 을 제공하여, 클러스터에 관한 전반적인 결정을 수행하고 클러스터 이벤트를 감지하고 반응한다. 마스터 컴포넌트는 클러스터 내에 어떤 노드에서든 동작할 수 있지만, 일반적으로 클러스터와 동일한 노드 상에서 구동시킨다. 아래는 마스터 내에서 동작하는 바이너리 컴포넌트들이며 쿠버네티스 초기화시 자동 설치된다. kube-apiserver쿠버네티스 API 로, 외부/내부에서 관리자의 원격 명령을 받을 수 있는 컴포넌트이다. etcd모든 클러스터 데이터를 저장하는 고가용성 키-값 저장소로, etcd 데이터에 대한 백업 계획은 필수이다. kube-scheduler생성된 파드를 노드에 할당해..
Application Update 쿠버네티스에서는 배포 방법으로 블루/그린 배포, 카나리 배포, 롤링 업데이트 등을 사용할 수 있다. 롤링 업데이트 방식은 운영중인 어플리케이션의 파드 수를 하나씩 줄이고, 새로운 어플리케이션의 파드 수를 하나씩 늘려가며 변경하는 방법이다. 쿠버네티스는 어플리케이션 이미지를 업데이트 하면 롤링 업데이트 방식으로 배포를 진행할 것이다. 쿠버네티스에서 배포 업데이트는 버전으로 관리되고, 이전의 안정적인 버전으로도 복구가 가능하다. 다음 테스트는 kubernetes-bootcamp:v1 이미지를 사용 중인 서비스 환경에서 v2 이미지로 교체하였을 때 어플리케이션의 배포 진행을 파악하고, 다시 v1 이미지로 복원하는 시나리오 이다. 4개의 파드에 kubernetes-bootcamp:v1 이미지를 구동하여, 이미 ..
Liveness/Readiness Probe 파드에서 어플리케이션이 비정상 작동을 할 경우에 대비하여 Liveness/Readiness Probe 를 설정할 수 있다. Liveness Probe 는 컨테이너가 정상적으로 구동 중 인지를 체크할 수 있다. 결과가 정상이 아니면 컨테이너를 재시작한다. Readiness Probe 는 파드가 트래픽을 처리할 준비가 되어 있는지를 체크한다. 결과가 정상이 아니면 해당 파드는 로드밸런스에서 제외된다. 두가지 Probe 에 대하여 설정한 대로 노드의 kubelet 이 주기적으로 상태 체크를 하게 되며, 결과가 비정상일 경우 해당 파드는 not ready 상태로 변경된다. 아래처럼 readiness/liveness probe 를 가진 파드를 생성해 보자. apiVersion: v1kind: Podmetadata..
Google Kubernetes Engine Google Cloud Platform 에서 쿠버네티스를 운영하기 위한 방법으로 Kubernetes Engine 과 Kubernetes API 를 사용하여 어플리케이션을 배포 및 관리 할 수 있다. 간단하게 쿠버네티스를 이용하여 어플리케이션을 테스트 해보자. GKE(Google Kubernetes Engine) 를 사용하여 쿠버네티스 클러스터 생성kubectl 를 사용하여 Docker 컨테이너를 배포 및 관리쿠버네티스의 Deployment 와 Service 를 사용하여 마이크로 서비스로 어플리케이션 분리 1. 구성 연결 GCP 콘솔의 APIs & services 에서 Kubernetes Engine API 와 Container Registry API 이 활성화 되어 있는지 체크하고, Cloud Shell..
오브젝트 정의 (.yaml) hello minikube 글에서 어플리케이션 배포부터 노출까지 알아봤었는데 그 때의 배포 명령이 기억 나는가? $ kubectl create deployment hello-node --image=gcr.io/hello-minikube-zero-install/hello-nodedeployment.extensions "hello-node" created 위와 같이 kubectl create deployment 명령 다음에 배포에 관련된 정보나 상태 등의 spec 을 inline 으로 나열하였었다. 명령의 이러한 파라미터들은 JSON 형식으로 변환되어 쿠버네티스 API 로 전달된 후 처리된다. 이렇게 kubectl 명령에 inline 으로 파라미터나 플러그 등을 나열하는 것을 명령형(Imperative) 커..
Minikube Addons minikube 에는 쿠버네이트 환경에서 사용할 수 있는 애드온들이 내장되어 있으며, 활성화(enabled), 비활성화(disabled), 열기(open) 등의 명령으로 제어할 수 있다. - 내장 애드온 목록과 상태 보기> minikube addons list- addon-manager: enabled- dashboard: disabled- default-storageclass: enabled- efk: disabled- freshpod: disabled- gvisor: disabled- heapster: disabled- ingress: disabled- logviewer: disabled- metrics-server: disabled- nvidia-driver-installer: disabled- n..
Hello minikube 여차저차해서 Minikube start 명령으로 VM 노드에 클러스터를 생성했다. 이 모든건 삽질이었다. katacoda 란 사이트에서는 minikube 가 설치된 서버에서 브라우저 환경을 제공하여 무료로 minikube 테스트를 할 수 있다.ㅠ 그래도 클러스터 생성하기까지 많은 것들을 얻을 수 있었다! 제일 처음 사용해 본 minikube 명령은 클러스터 생성/중지/삭제 등의 기본적인 구동관련 위주로 쓰이므로 앞으로 자주 사용하게 될 kubectl 명령에 익숙해져야 한다. 이제 쿠버네티스를 맛볼 수 있는 최고의 프로그램 Hello world 어플리케이션 테스트할 수 있다. 단순히 어플리케이션의 구동 테스트이므로 심플하게 과정만 보자. (no VM 환경이라면 클러스터에 명령을 내릴 kubectl 도구를 ..