Study for kubernetes, clustering
쿠버네티스란?
컨테이너화된 워크로드와 서비스를 관리하기 위한 이식성이 있는 확장가능한 오픈소스 플랫폼이다.
명칭은 키잡이나 파일럿을 뜻하는 그리스어에서 유래했다.
2014년 구글이 쿠버네티스 프로젝트를 오픈소스화했다.
쿠버네티스는 하드웨어 수준보다는 컨테이너 수준에서 운영되기 때문에,
PaaS가 일반적으로 제공하는 배포, 스케일링, 로드 밸런싱과 같은 기능을 제공하고, 사용자가 로깅, 모니터링 및 알림 솔루션을 통합할 수 있다.
쿠버네티스는 서로 연결되어서 단일 유닛처럼 동작하는 고가용성의 컴퓨터 클러스터를 상호조정한다.
애플리케이션을 개별 호스트에 결합되지 않도록 컨테이너화해야한다.
컨테이너화된 애플리케이션은 호스트에 매우 깊이 통합된 패키지로써, 특정 머신에 직접 설치되는 예전의 배포모델보다 유연하고 가용성이 높다.
쿠버네티스는 애플리케이션 컨테이너를 클러스터에 분산시키고 스케줄링하는 일을 보다 효율적으로 자동화한다.
클러스터 관리를 담당한다.
애플리케이션을 스케줄링하거나, 애플리케이션의 향상성을 유지하거나 애플리케이션을 스케일링하고,
새로운 변경사항을 순서대로 반영하는 일과 같은 클러스터 내의 모든 활동을 조율한다.
노드는 쿠버네티스 클러스터 내의 워커 머신으로써 동작하는 VM, 물리적인 컴퓨터이다.
각 노드는 노드를 관리하고 쿠버네티스 마스터와 통신하는 Kubelet이라는 에이전트를 갖는다.
운영 트래픽을 처리하는 쿠버네티스 클러스터는 최소 세 대의 노드를 가져야한다.
노드는 마스터가 제공하는 쿠버네티스 API를 통해서 마스터와 통신한다.
minikube는 쿠버네티스를 로컬환경에서 쉽게 실행하는 도구이다.
가상머신이나 노트북에서 단일 노드 쿠버네티스 클러스터를 실행한다.
-
kubectl : 쿠버네티스 커맨드 라인도구이다. 클러스터와 상호작용할 수 있다.
-
kubectl, minikube 설치하기
brew install kubectl
brew install minikube
도커는 컨테이너 기반의 오픈소스 가상화 플랫폼이다.
컨테이너는 격리된 공간에서 프로세스가 동작하는 기술로 가상화 기술의 하나이다.
--link ab:cddb -> cd 컨테이너의 database가 ab 컨테이너에 연결된다.
클러스터링은 군집화를 의미한다.
클러스터링의 목적은 비슷한 개체끼리 한 그룹으로, 다른 개체는 다른 그룹으로 묶기 위함이다.
클러스터링과 분류(classification)를 구별해야하는데,
클러스터링은 정답이 없는 비지도 학습이고, 각 개체의 그룹 정보없이 비슷한 개체끼리 묶는다.
분류는 정답이 있는 지도학습이고, 독립변수와 종속변수가 존재한다.
알파인 리눅스는 보안성을 목적으로 개발한 리눅스 배포판이다.
용량을 줄이기 위해 시스템의 기본 C 런타임을 glibc 대신 musl libc를 사용하며 쉘 명령어는 GNU util 대신 busybox를 탑재하였다.
용량이 80M인 초경량화된 배포판이므로 Embbeded나 네트워크 서버 등 특정 용도에 적합하고, 도커에 채택되어 5M 크기의 리눅스 이미지를 사용한다.
데비안과는 달리 필요한 디렉토리가 자동으로 생성되지 않으므로 직접 만들어줘야한다.
File Transfer Protocol로 파일을 전송하는 통신규약이다.
기본 포트는 21번이고, 보안이 좋지 않아 실무에서는 사용하지 않는다.
File Transfer Protocol Secure, 20번, 21번 포트를 안전하게 암호화하여 사용한다.
ssh의 파일 전송 버전이다.
시계열 매트릭 데이터를 시각화하는데 가장 최적화된 대시보드를 제공해주는 오픈소스 툴킷이다.
다양한 DB를 연결하여 DB으 ㅣ데이터를 가져와 시각화할 수 있으며, 그래프를 그리는 방법도 간단한 마우스 클릭으로 완료할 수 있다.
네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해주는 프로토콜을 말한다.
기본적으로 22번 포트를 사용한다.
암호화 기법을 사용하기 때문에, 네트워크에서 안전하게 통신을 할 수 있는 기능을 제공한다.
ssh 사용자 인증 프로토콜, ssh 연결 프로토콜, ssh 전송층 프로토콜 3개의 프로토콜로 이루어져있다.
yaml 형식은 데이터를 작성하는 규칙이다.
기존에 사용하던 xml, json 형식보다 가독성이 높아 많이 사용한다.
kubectl은 쿠버네티스 API로 요청이 이루어질 때, yaml형식을 json형식으로 변환시켜준다.
-
# : 주석
-
--- : 문서의 시작, 선택사항
-
... : 문서의 끝, 선택사항
-
"key: value" : 콜론 뒤에는 항상 공백이 있어야한다.
-
자료형 : int, string, boolean을 지원한다.
-
object 표현
key:
key: value
key: value
key: {
key: value,
key: value
}
- list 표현
key:
- item
- item
key: [
item, item
]
-
text 표현 : | 는 줄바꿈을 포함하고, > 는 줄바꿈을 무시한다.
-
reference : https://lejewk.github.io/yaml-syntax/