Kubernetes 실습 : 1. 클러스터 생성

Gyullbb·2021년 3월 23일
0

K8S

목록 보기
1/5

Kubernetes 기초 실습

Kubernetes 공식 사이트의 Minikube와 Katacoda를 이용한 쿠버네티스 기초 학습과정을 바탕으로 작성한 글입니다.

실습링크

실습 순서
  1. 쿠버테니스 클러스터 생성하기
  2. 애플리케이션 배포하기
  3. 앱 조사하기
  4. 앱 외부로 노출하기
  5. 애플리케이션 스케일링하기
  6. 앱 업데이트하기

1. 쿠버네티스 클러스터 생성하기

1-1. 쿠버네티스 클러스터

[^출처 : Kubernetes 공식문서]: Kubernetes Cluster

쿠버네티스는 컴퓨터 클러스터에 애플리케이션 컨테이너의 배치 및 실행을 총괄하는 운영 수준의 오픈소스 플랫폼이다.

Control Plane

클러스터 관리를 담당한다. 애플리케이션 스케줄링, 스케일링, 항상성 유지, 새로운 변경사항 순서대로 반영(rolling out)과 같은 클러스터 내 활동을 조율한다.

Node

쿠버네티스 클러스터 내 worker machine으로 동작하는 VM 혹은 물리적 컴퓨터이다. 각 노드는 노드를 관리하게 된다. 각 노드는 Kubelet과 컨테이너 운영을 하는 툴을 가진다.

Kublet

Node와 Control Plane을 연결하는 에이전트이다. Node가 Control Plane과 통신할 때에는 쿠버네티스 API를 사용하여 통신한다.

애플리케이션을 쿠버네티스에 배포를 할 때에는 Control Plane애플리케이션 컨테이너의 구동을 지시한다. 그러면 Control Plane은 컨테이너를 클러스터의 어떤 Node에 구동시킬지 스케줄한다.

1-2. Minikube

Mini + Kube 의 합성어로 로컬에서 쿠버네티스 환경을 이용하여 클러스터를 생성하기 위한 가벼운 쿠버네티스 구현체이다. 로컬에 프로그램을 설치하여 사용할 수 있다.

Kubernetes 공식 페이지에 가면 Minikube 환경이 설치되어 있는 상태에서 실습을 진행할 수 있다.

1-3. 클러스터 생성

Minikube가 잘 설치되어 있는지를 확인하기 위해서 version을 확인한다.

$ minikube version

클러스터를 시작시키기 위해서 start 명령어를 입력한다.

$ minikube start

start명령어를 입력하면 Kubernetes를 시작하는 것을 확인할 수 있다. 쿠버네티스가 런칭되었으므로 쿠버네티스 클러스터를 제어할 수 있는 kubectl 명령어를 사용할 수 있다.

아래와 같은 명령어를 통해 쿠버네티스가 잘 런칭되었는지 확인한다.

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.3", GitCommit:"06ad960bfd03b39c8310aaf92d1e7c12ce618213", GitTreeState:"clean", BuildDate:"2020-02-11T18:14:22Z", GoVersion:"go1.13.6", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.3", GitCommit:"06ad960bfd03b39c8310aaf92d1e7c12ce618213", GitTreeState:"clean", BuildDate:"2020-02-11T18:07:13Z", GoVersion:"go1.13.6", Compiler:"gc", Platform:"linux/amd64"}

여기서 Client Version은 kubectl의 버전이고 Server Version은 마스터에 설치된 Kubernetes 버전이다.

생성된 클러스터의 세부사항을 보기 위해 다음과 같은 명령어를 입력한다.

$ kubectl cluster-info
Kubernetes master is running at https://172.17.0.26:8443
KubeDNS is running at https://172.17.0.26:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

Kubernetes 마스터와 KubeDNS가 어디에서 돌고 있는지를 확인할 수 있다.

KubeDNS 란?

클러스터의 서비스와 DNS파드를 관리하며, 개별 컨테이너들이 DNS 네임을 해석할 때 DNS 서비스의 IP를 사용하도록 Kuberlets를 구성한다.

이를 통해 쿠버네티스에서는 클러스터 내부에서만 사용가능한 DNS를 설정하여 사용할 수 있다.

또한 특정 PoD에 문제가 생기거나 배포가되어 재생성될 때 IP가 변경되더라도 KubeDNS에서 자동으로 변경된 포드의 IP를 등록하는 역할도 수행한다.

클러스터 내 노드들을 확인하기 위해서는 get nodes 명령을 입력한다.

$ kubectl get nodes
NAME       STATUS   ROLES    AGE   VERSION
minikube   Ready    master   12m   v1.17.3

minikube라는 이름의 master노드가 생성된 것을 확인할 수 있다.

profile
🎈도전 속의 여유를 즐기자🎈

0개의 댓글