'node'에 해당하는 글 3건



Master


위 그림은 쿠버네티스 클러스터의 아키텍처이다. 좌측의 마스터 컴포넌트는 클러스터의 제어영역(control plane) 을 제공하여, 클러스터에 관한 전반적인 결정을 수행하고 클러스터 이벤트를 감지하고 반응한다. 마스터 컴포넌트는 클러스터 내에 어떤 노드에서든 동작할 수 있지만, 일반적으로 클러스터와 동일한 노드 상에서 구동시킨다. 아래는 마스터 내에서 동작하는 바이너리 컴포넌트들이며 쿠버네티스 초기화시 자동 설치된다.


kube-apiserver

쿠버네티스 API 로, 외부/내부에서 관리자의 원격 명령을 받을 수 있는 컴포넌트이다.


etcd

모든 클러스터 데이터를 저장하는 고가용성 키-값 저장소로, etcd 데이터에 대한 백업 계획은 필수이다.


kube-scheduler

생성된 파드를 노드에 할당해 주는 컴포넌트이다. 이것을 스케줄링이라 하며, 리소스/하드웨어/소프트웨어/정책/워크로드 등을 모두 참고하여 가장 최적화된 노드에 파드를 배치하게 될 것이다.


kube-controller-manager

아래의 컨트롤러들을 구동하는 컴포넌트이다.

- Node Controller : 노드가 다운되었을 때 알림와 대응에 관한 역할을 한다.

- Replication Controller : 지정된 수의 파드들을 유지시켜 주는 역할을 한다.

- Endpoints Controller: 서비스와 파드를 연결시켜 엔드포인트 오브젝트를 만든다.

- Service Account & Token Controllers: 새로운 네임스페이스에 대한 기본 계정과 API 접근 토큰을 생성한다.



Node


우측 하단의 노드 컴포넌트(Minions) 는 마스터 컴포넌트에 의해 관리되며 VM 이나 물리 장치가 될 수 있다. 동작중인 파드를 유지시키고 쿠버네티스 런타임 환경을 제공한다. 아래는 노드 내에서 동작하는 바이너리 컴포넌트들이며 노드 오브젝트 생성시 자동 설치된다.


kubelet

클러스터의 각 노드에서 실행되는 에이전트로, 컨테이너들이 파드에서 실행 중인지, 이상이 없는지 확인한다.


kube-proxy

호스트 상의 네트워크 규칙으로 커넥션 포워딩을 수행함으로서 쿠버네티스 Service 가 가능하도록 한다.


Container Runtime

컨테이너 런타임은 컨테이너의 동작을 책임지며, 쿠버네티스에서 지원하는 컨테이너 런타임은 다음과 같다. 

Docker, containerd, cri-o, rktlet, Kubernetes CRI (Container Runtime Interface) 구현체.




WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

Minikube Addons

Tool/Kubernetes 2019. 3. 28. 21:40

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

- nvidia-gpu-device-plugin: disabled

- registry: disabled

- registry-creds: disabled

- storage-provisioner: enabled

- storage-provisioner-gluster: disabled


  • dashboard : 클러스터의 웹 UI 툴
  • efk : 로그분석 툴(Elasticsearch, Fluentd 및 Kibana)
  • freshpod : 이미지 리빌드시 pod 재시작
  • gvisor : 컨테이너 런타임을 대체하여 안전하게 pod 실행
  • heapster : 컴퓨터 리소스 분석 및 클러스터 모니터링
  • ingress : 쿠버네티스 Ingress 리소스를 기반으로 구축된 NGINX 컨트롤러
  • logviewer : 경량 로그 툴
  • metrics-server : 클러스터 자원 사용률 및 활용도를 수집



1. heapster addon


꽤 많은 애드온이 있지만 어떤게 유용할지는 모르겠고, 모니터링에 관련된 heapster 와 dashboard 를 한 번 사용해 보기로 했다. 애드온을 활성화 시켜 사용하는 방법은 아래와 같다. 


> minikube addons enable heapster

-   dashboard was successfully heapster


이렇게 애드온을 활성화 시키면 kube-system 이라는 가상 클러스터(namespace) 에 아래와 같이 pod 와 service 가 생성된다.


> kubectl get pod,svc -n kube-system

NAME                                       READY     STATUS    RESTARTS   AGE

pod/coredns-86c58d9df4-krzfn               1/1       Running   1          1d

pod/coredns-86c58d9df4-zs6wk               1/1       Running   1          1d

pod/etcd-minikube                          1/1       Running   1          1d

pod/heapster-xtm6r                         1/1       Running   0          2m

pod/influxdb-grafana-lt6zz                 2/2       Running   0          2m

pod/kube-addon-manager-minikube            1/1       Running   1          1d

pod/kube-apiserver-minikube                1/1       Running   1          1d

pod/kube-controller-manager-minikube       1/1       Running   1          1d

pod/kube-proxy-88cvs                       1/1       Running   0          2h

pod/kube-scheduler-minikube                1/1       Running   1          1d

pod/storage-provisioner                    1/1       Running   4          1d


NAME                           TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)             AGE

service/heapster               ClusterIP   10.107.156.3     <none>        80/TCP              2m

service/kube-dns               ClusterIP   10.96.0.10       <none>        53/UDP,53/TCP       1d

service/monitoring-grafana     NodePort    10.108.87.143    <none>        80:30002/TCP        2m

service/monitoring-influxdb    ClusterIP   10.110.101.236   <none>        8083/TCP,8086/TCP   2m


아래와 같이 애드온을 open 시키면 해당 애드온이 브라우저에 출력된다.


> minikube addons open heapster

-   Opening kubernetes service kube-system/monitoring-grafana in default browser...


여기서는 Service 타입으로 NodePort 를 사용했는데, 외부에서 포트를 통해 해당 service 로 접근할 수 있다. http://192.168.10.183:30002/ (node ip : node port)





2. dashboard addon


dashboard 애드온은 minikube 명령으로 즉시 사용할 수 있다.


> minikube dashboard

-   Enabling dashboard ...

-   Verifying dashboard health ...

-   Launching proxy ...

-   Verifying proxy health ...

-   Opening http://127.0.0.1:12255/api/v1/namespaces/kube-system/services/http:kubernetes-dashboard:/proxy/ in your default browser...


dashboard 애드온을 enable 하고 proxy 를 사용하여 주소를 생성해 주는 일을 한번에 해결해 주었다. 이 Dashboard 는 쿠버네티스 클러스터의 웹 기반 UI 로써, 클러스터 및 실행중인 어플리케이션 관리 등을 할 수 있다.






WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

쿠버네티스는 어디부터 시작해야 할까? 쿠버네티스 이론과 플러스로 특정 클라우드 서비스의 이론, 오픈 소스인데 무료로는 쉽게 접할 수 없을 것 같은 무시무시함, 그 시작점도 여러가지, 솔루션도 여러가지라 시작하는 것부터가 고민이다. 일단 쿠버네티스를 접할 수 있는 방법은 다음과 같이 무궁무진하다.


1. 로컬 장치 솔루션 : PC 나 노트북 등에 쿠버네티스 경량 버전을 설치하고 스피드하게 쿠버네티스 접해보기.(무료!)

2. 호스티드 솔루션 : 쿠버네티스를 설치 없이 즉시 사용할 수 있는 클라우드 솔루션.(gke, eks)

3. 턴키 클라우드 솔루션 : gce 나 ec2 같은 클라우드 컴퓨터에서 클러스터 관리 등 편리한 쿠버네티스 운영을 위한 솔루션.

4. 그 외 클라우드 공급자와 베어메탈 환경, 많은 운영체제에서의 특수조합 솔루션과 사용자 정의 솔루션.


일일이 나열하지는 않았지만 보자마자 꺼버리고 싶을 정도로 다양한 솔루션들. 난 단지 쿠버네티스를 설치하고 테스트 해보고 싶을 뿐인데, 뭐라뭐라~~~ 간단하지는 않겠지만 하고자 한다면 원하는 플랫폼에서 원하는 수준으로 쿠버네티스 솔루션 사용이 가능하다. 특정 클라우드나/서버/OS 에 따라 설치방법이과 설정이 조금씩 다르나, 클러스터 생성 - 앱 배포 - 스케일링 - 업데이트 등의 쿠버네티스의 흐름은 모두 동일하다. 부담없는 무료버전을 빠르게 설치해서 쿠버네티스 명령과 동작 좀 익히고, 중간에 시간 좀 남으면 서버에 직접 설치도 해보고, 그러다가 호스티드 솔루션으로 자연스럽게 넘어가서 운영을 할 수 있을 정도가 되어보려 한다.


시작부터 난관에 빠지긴 했지만... 설치전에 쿠버네티스가 어떻게 생겼는지를 먼저 보는게 좋겠다.



요롷게 생겼다. 어떤 솔루션이든 쿠버네티스가 설치되어 있다면, 가장 먼저 클러스터라는 공간을 생성해 주어야 하며, 그 안에는 마스터 노드(Master) 와 워커 노드(Node) 를 생성할 수 있다. 마스터는 클러스터 내에 발생하는 모든 요청들을 담당하는 중추적인 역할을 하며 하나의 클러스터에 한 개만 있으면 된다. 노드는 클러스터에 따라 물리적인 컴퓨터나 가상머신(VM) 등의 장치가 된다. 앱이 구동될 공간이며, 하나의 클러스터에 여러 개를 생성할 수 있다. 모든 준비를 마친 후 앱을 배포하도록 Master 에 지시하면 적당한 Node 에서 앱을 구동하게 될 것이다. 겉보기는 저게 다다. 이렇게 보니까 되게 쉬워 보인다. 자신감+1.


다음은 로컬 장치 솔루션 사용해 보기!




WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,