Kubernetes 입문자를 위한 기초 내용 정리
문서목적
이 문서는 Kuberetes에 대한 기초 내용을 개인적으로 내용을 정리하기 위하여 작성되었다.
자세한 내용이나 특정 항목에 대한 서비스의 구체적인 정보는 공식사이트 자료를 참고하도록 한다.
Docker 기초 개념
가상화의 정의
- 동일한 또는 상이한 여러 개의 운영체제를 완전히 독립된 방식으로 동시에 실행하는 것 (ex. 하나의 머신 위에 Linux와 Window 운영 체제를 동시에 실행)
가상화의 장점
-
하드웨어의 소프트웨어화 ⇒ 유연성, 자동화, 민첩성
-
높은 하드웨어 활용도
-
여러 개의 운영체제, 소프트웨어 운영 가능
-
High Scalability
-
High Availability - Live Migration
-
하드웨어 관리 부담 감소
-
Migration 용이
Hypervisor
- 하드웨어와 가상화된 OS 사이에서 둘 사이의 인터페이스 역할을 하면서 하드웨어 자원을 가상화 OS에 공유해주고 관리하는 역할을 하는 소프트웨어
Docker에 대한 장점과 특징
도커와 VM의 아키텍쳐
Docker란?
-
컨테이너가 돌아갈 수 있는 환경을 제공
-
사실 상의 컨테이너 표준
Docker의 장점 및 VM과 Docker의 차이점
-
Light and Scalable
-
Portable
A container runs natively on Linux and shares the kernel of the host machine with other containers. It runs a discrete process, taking no more memory than any other executable, making it lightweight.
By contrast, a virtual machine (VM) runs a full-blown “guest” operating system with virtual access to host resources through a hypervisor. In general, VMs provide an environment with more resources than most applications need.
Docker 컨데이터 개발 방법
그림 . 도커 워크플로우
-
Dockerfile이란 빌드 파일을 통해서 이미지 생성
-
Image를 Docker run 명령어로 Container 실행
-
Docker hub가 있어 공식 이미지 또는 커스텀 이미지를 올리고 내려 받을 수 있다.
-
Container는 Stateless이므로 영구 저장이 필요한 파일은 별도 스토리지에 저장해야 한다.
Kubernetes 기초 개념
Kubernetes가 필요한 이유
-
수 많은 Docker들을 관리하기 위해
-
최근 2017~2018년도 트렌드 분석 시 컨테이너 관리 표준 처럼 되어 가고 있는 것을 알 수 있다.
Kubernetes(이하 K8S) Pod
-
K8S의 기본적인 관리 단위 -> 관리의 편의성
-
하나 이상의 컨테이너를 가질 수 있음
-
공유 유틸리티 역할을 하는 컨테이너를 Pod에 같이 패키징 가능
-
같은 Pod안의 컨테이너들은 IP 주소와 로컬 디스크를 공유 할 수 있다.
그림 . Pods 구조 예시
K8S 아키텍처
K8S architecture, component
-
K8S는 Master component와 Node component로 구성되어 있다.
-
Master component는 K8S Cluster의 컨트롤 영역을 제공한다. (ex. 배포, 스케줄링 등)
-
각 Component의 자세한 설명은 공식 사이트 참조를 하면 된다.
-
Components
-
kube-apiserver: K8S API 서버, All communication about cluster state flows through the API Server.
-
etcd: AKA The API Server’s datastore, 영구적 저장
-
kubelet: Communicates with API Server to know what pods it should run, Broadcasts status of pods, nodes
-
controller-manager: AKA managing controllers powering Kubernetes abstractions
-
kube-scheduler: A control loop that is crucial to cluster operation by ensuring that nodes run pods
-
node: container runtime interface, default is docker.
-
kube-proxy: manage network communication between node, pods. expose container traffic like load balancer
-
K8S service
- Service- L4 Load balancer
K8S ingress
-
Ingress- L7 Load balancer
-
URI 기반으로 서비스 별 라우팅
-
Google Cloud의 Load balancer
K8S Deployments& ReplicaSet
- Deployment가 복수개의 ReplicaSet을 통해 Rolling Update 방식으로 처리한다.
댓글남기기