본문 바로가기
Tech/Linux

Kubernetes란?

by 타이호 2017. 12. 24.
반응형

1. Kubernetes?

구글에서 내부적으로 사용하던 컨테이너를 관리해주는 도구를 오픈소스로 오픈해서 사용할 수 있게 되었다. 간단하게 말하면 컨테이너들을 여러 호스트에 띄워놓고 그 컨테이너를 관리해줄 수 있는 도구를 제공해주는 툴이라고 보면 된다.

자세한 설명은 kubernetes 홈페이지를 참조하자 :)

https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/

 

2. 구성요소

kubernetes는 클러스터를 구성하게 되는데 그 클러스터를 관리하는 master node가 있고, 클러스터를 구성하는 worker가 존재 한다.

master 노드는 worker 노드에 컨테이너 구동을 위한 스케줄링을 통해 컨테이너를 관리하고, proxy 등등의 기능 역시 제공한다.

Worker는 실제 컨테이너들이 올라가는 공간인데, 운영을 목적으로 한다면 3개 이상으로 구성해야 한다고 가이드 된다.

etcd는 스케쥴링을 담당한다.

 

3. kubernetes features

a. deployment

애플리케이션 인스턴스들의 생성과 업데이트를 책임진다. Deployment를 생성하면 Master는 인스턴스를 생성하라고 명령을 내리고, Worker에서는 인스턴스들이 생성된다. 이러한 인스턴스들은 deployment를 통해 관리 된다. 실제로 하나의 인스턴스를 삭제해도 deployment가 확인해서 해당 인스턴스를 다시 생성한다.

b. pod

Deployment 후 pod를 생성하고, pod에 application (컨테이너)가 생성된다. worker는 여러개의 pod를 가질 수 있고, master에서 work로 pod를 스케쥴링 한다.

c. service

service는 pod에 생성된 컨테이너로의 LB역할을 해주는 것 같다.

# kubectl expose deployment nginx-deployment --target-port=8090 --type=NodePort

기본적으로 모든 pod들은 클러스터 내부에서만 접속이 되며, 외부에서 접근하기 위해서는 proxy를 통해 접근 할 수 있다.

# kubectl proxy (default)

# kubectl proxy --address 172.16.1.52 --port=9999 --accept-hosts='^*$' (외부에서 접근할 수 있는 proxy)

pod로 접근하기 위해서는 위 프록시를 이용한다.

http://172.16.1.52:9999/api/v1/proxy/namespaces/default/pods/nginx-60nn7/

d. kubernetes dashboard

위에서 수행한 proxy를 통해 대쉬보드로 접근 할 수 있다.

http://172.16.1.52:9999/ui

 

4. Deploy Applications

 

반응형