티스토리 뷰

<출처>

https://kubernetes.io/docs/tutorials/kubernetes-basics/create-cluster/cluster-intro/




Objectives


  • K8S 클러스터가 무엇인지 배운다.
  • Minikube가 무엇인지 배운다.
  • 온라인 터미널을 이용하여 K8S 클러스터를 구동한다.



Kubernetes Clusters


K8S 는 단일 유닛으로 동작하도록 연결되어진 고 가용성 컴퓨터 클러스터를 조정한다. 

K8S 에서의 추상개념들은 구체적으로 개별 장비들끼리 엮이지 않게 하면서 컨테이너화 된 애플리케이션들을 클러스터에 배포할 수 있도록 해준다.

이 모델의 배포방식를 이용하기 위해서는 개별 호스트들로부터 애플리케이션들이 서로 결속되지 않는 방식으로 패키징 되도록 해야한다.

이 애플리케이션들은 컨테이너 형태로 구현 되어야 하며, 컨테이너화된 애플리케이션들은 호스트 내부에서 단단하고 깊숙히 통합되어진 패키지들처럼, 특정 장비들 위에 직접 설치되어 있는 형태의  과거 배포 모델들에 비해 더 유연하고 사용하기 용이하다. K8S는 보다 효율적인 방식으로 클러스터 기반 위에서 애플리케이션 컨테이너들의 스케줄과 분배를 자동화한다. K8S 는 오픈소스 플랫폼으로 상용환경에서 바로 사용 가능(production-ready)하다.


K8S 클러스터는 두 가지 형태의 리소스들로 구성된다.


  • 마스터는 클러스터를 조정한다.
  • 노드는 애플리케이션들을 동작시키는 워커다.



Cluster Diagram




마스터는 클러스터를 관리한다. 클러스터의 모든 활동(애플리케이션들 스케줄링, 원하는 상태로의 유지, 스케일링과 새로운 업데이트 출시)을 조정한다.

노드는 K8S 클러스터 내 워커 머신으로 역할하는 VM 또는 물리 컴퓨터다. 각 노드는 Kubelet을 갖는데 Kubelet은 K8S 마스터와 대화하며 노드를 관리하는 에이전트이다.  또한 노드는 컨네이너 운영을 다루기 위한, Docker 또는rkt 같은 도구들을 갖추어야 한다.  하나의 K8S 클러스터에 최소 3개 정도의 노드가 있어야 프로덕션(상용환경) 트래픽 처리가 가능하다.


마스터는 클러스터를 관리하고 노드는 애플리케이션을 동작시키는 호스트로 이용된다. 


K8S에 애플리케이션들을 배포할 때, 마스터에게 그 애플리케이션 컨테이너를 구동시키도록 전해준다. 마스터는 클러스터의 노드에서 동작 중인 컨테이너를 스케줄한다. 노드는 K8S API 를 통해 마스터와 대화한다. 이 API 가 마스터를 노출시켜주며 엔드유저들 또한 직접 클러스터와 함께 상호작용 하기 위해 이  K8S API 를 이용할 수 있다.


K8S 클러스터는 물리 또는 가상 머신에 다 디플로이가 가능하며, K8S 디플로이먼트를 시작해 보기위해 여러분들은 Minikube 를 이용할 수 있다. Minikube 는 여러분의 로컬 머신 상에 VM을 생성해 주는 경량화된 K8S 구현체로 단일 노드를 갖는 심플한 클러스터를 배포한다. Minikube 는 리눅스, macOS, 그리고 윈도우즈 시스템에서 이용가능하다. Minikube CLI 는 구동, 중지, 상태(확인), 그리고 삭제를 포함하여 클러스터와 협업하기 위한 기본 부트스트래핑 연산을 제공한다. 




대화형 튜토리얼 - 클러스터 생성하기


이 대화형 시나라오의 목표는 Minikube를 이용하여 로컬에 디플로이먼트 K8S 클러스터를 배포해 보는 것이다.


Step1: Cluster up and running


Minikube 를 구동하고 Minikube 버전을 확인해 본다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
root@zerobig-vm:/home/study/k8s# minikube start
Starting local Kubernetes v1.10.0 cluster...
Starting VM...
Getting VM IP address...
Moving files into cluster...
Setting up certs...
Connecting to cluster...
Setting up kubeconfig...
Starting cluster components...
Kubectl is now configured to use the cluster.
Loading cached images from config file.
root@zerobig-vm:/home/study/k8s#
root@zerobig-vm:/home/study/k8s#
root@zerobig-vm:/home/study/k8s# minikube version
minikube version: v0.28.2


Step2: Cluster version


K8S 와 CLI, kubelet 을 이용하여 상호작용 해나가게 된다. kubelet  설치 여부를 확인하기 위해 kubectl version 명령을 수행해보자. 


1
2
3
4
root@zerobig-vm:/home/study/k8s# kubectl version
Client Version: version.Info{Major:"1", Minor:"11", GitVersion:"v1.11.1", GitCommit:"b1b29978270dc22fecc592ac55d903350454310a", GitTreeState:"clean", BuildDate:"2018-07-17T18:53:20Z", GoVersion:"go1.10.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.0", GitCommit:"fc32d2f3698e36b93322a3465f63a14e9f0eaead", GitTreeState:"clean", BuildDate:"2018-03-26T16:44:10Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}Colored by Color Scripter
cs


출력 결과로 서버 뿐만 아니라 클라이언트의 버전이 함께 출력됨을 알 수 있다. 클라이언트 버전은  kubelet의 버전이고 서버 버전은 마스터에 설치된 K8S 버전을 의미한다.


Step3: Cluster details


클러스터 정보를 상세하게 살펴보자.


1
2
3
4
5
root@zerobig-vm:/home/study/k8s# kubectl cluster-info
Kubernetes master is running at https://192.168.99.100:8443
KubeDNS is running at https://192.168.99.100:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
 
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
cs


마스터와 대쉬보드가 동작 중이라고 나타난다. (실제 필자의 출력결과에는 마스터와 KubeDNS 가 동작 중으로 나온다.) 지금은 애플리케이션을 배포하고 조사하기 위한 커맨드 라인을 집중적으로 다루게 될 것이다. 

클러스터 내 노드들의 정보를 살펴보자. 우리 애플리케이션들을 호스트 하는데 이용가능한 모든 노드들을 보여준다.  


1
2
3
root@zerobig-vm:/home/study/k8s# kubectl get nodes
NAME       STATUS    ROLES     AGE       VERSION
minikube   Ready     master    1d        v1.10.0
cs


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함