-
kubernetes Tutorials 1. 미니큐브 사용해보기DevOps/Kubernetes 2020. 4. 22. 22:27
쿠버 네티스를 통해 클러스터 관리나 컨테이너화 된 App을 관리할 수 있다.
최종적인 학습목표
1. 어떻게 컨테이너화 된 (도커화 된) App을 클러스터에 배포할까
도커 이미지로 만든 것들은 어떻게 클러스터에 배포할 수 있을까 ( Docker swarm이 아닌 쿠버 네티스에 배포 )
2. 어떻게 배포 인스턴스를 늘리거나 줄이는 스케일을 할 수 있을까
3. 어떻게 새 버전을 배포하고 디버깅 하는지
튜토리얼에 보면 Katacode라는 것을 통해 가상 머신을 웹 브라우저에서 진행할 수 있다고 한다. 따라서 미니큐브(조그
만한 쿠버 네티스)를 웹 브라우저에서 실행하여 따로 설치가 필요 없이 Interactive 하게 진행해보자.
쿠버 네티스로 무엇을 할 수 있을까?
요즈음 대부분의 사용자들은 웹 서비스에 무중단 서비스를 제공하는 것을 기대하며 개발자들 역시 새 버전을 하루에도 몇 번씩 배포하는 것을 기대한다. 이러한 목표를 달성하기 위해 소프트웨어를 패키징해야 하며 이러한 일은 컨테이너화를 통해 가능하다. 그렇게 했을 때 downtime 없이 App을 갱신하고 배포할 수 있다.
쿠버네티스는 애플리케이션 컨테이너를 클러스터에 분산시키고 스케줄링하는 일을 보다 효율적으로 자동화하는 역할을 하고 프로덕션 환경에서 얼마든지 사용가능하며, 오픈 소스 플랫폼이다.
우선 쿠버 네티스 클러스터란 무엇인지 미니큐브란 무엇인지 알아보자.
쿠버네티스 클러스터
- 컨테이너화 된 app을 배포할 수 있게끔 해준다. 도커 이미지를 배포할 수 있게 해주는 클러스터
- 어떤 특정 머신에 배포하라고 지시하는 게 아닌 쿠버 네티스란 클러스터에게 던지고 이 머신이 알아서 어딘가에 배포하게 된다.
- 이런 새로운 배포 모델을 사용하려면 App은 특정 컴퓨터 host에 묶이지 않은 상태로 패키징 돼야 된다. 즉 컨테이너화 된 App을 말하고 있다.
- 쿠버 네티스는 이런 App을 어디에 배포할지를 자동화하며 좀 더 효율적인 방법으로 클러스터 안에다 App을 어떻게 배포하고 스케쥴링할지( 줄이거나 늘리거나 ) 등도 자동화하였다.
쿠버 네티스 클러스터의 구성 2가지
Docker swarm에서는 worker나 Manager 둘 다 특정 이미지를 띄울 수 있지만 쿠버 네티스의 Master는 관리만 하고 Nodes들이 띄우는 역할을 하는 것처럼 보인다.
1. Master
- 클러스터를 관장하는 매니저
- App의 스케쥴링, 관리, 실행 멈추는 일등을 관리하며 스케일링 ( 컨테이너를 더 많이 띄우던지 줄이던지 ) 새 버전을 배포해 나가는 과정 등을 관리한다.
2. Node
- App을 실제로 실행하는 worker machine의 역할을 한다.
- 각각의 노드는 Kubelet을 가지고 있으며 Kubelet은 한 노드를 관리하기 위한 에이전트고 이 큐 블렛은 쿠버 네티스 manager와 의사소통을 한다.
- 노드는 Docker 등의 컨테이너 작업을 핸들링할 수 있는 툴을 가지고 있어야 한다.
Kubernetes Api
- 클러스터는 프로덕션 트래픽을 다룰 수 있는데 최소 3개의 노드가 필요하게 된다. App을 쿠버 네티스에 배포할때 master에게 App container을 실행하라고 한다. 그러면 master는 그 컨테이너들을 cluster node들에게 실행하도록 스케쥴링하게 된다. 그러면 노드는 Kubelet을 통해 master와 의사소통 하게 되는데 그때 사용하는 것이 Kubernetes Api이다.
- 마스터가 Kubernetes Api를 노출시키니 그 Api를 사용해서 쿠버네티스 클러스터에게 일을 시킬 수 있다.
미니큐브?
쿠버 네티스의 lightweight 한 버전이고 로컬 머신의 VM을 만들어주며 한 개의 노드만 들어있다.
이 미니큐브가 설치돼있는 온라인 터미널을 사용해보자!
클러스터 정보 다음과 같이 하나의 노드만 들어있는 것을 알 수 있다.
'DevOps > Kubernetes' 카테고리의 다른 글
clusterRole, clusterRoleBinding (0) 2021.10.29 Kubernetes 인그레스 요청 흐름 (0) 2021.07.19 kubernetes Tutorials 4. 서비스를 사용해서 App을 공개하기 (0) 2020.05.06 kubernetes Tutorials 3. Pods 와 Nodes (0) 2020.05.01 kubernetes Tutorials 2. kubectl을 사용해서 배포하기 (0) 2020.04.27