[Kubernetes] Kubernetes 개요

Kubernetes 개요

 

The evolution of microservices frameworks

 

Docker (2013)

  • microservice의 runtime을 컨테이너 단위로 관리하면 편리함
  • 불편함 발생 > 컨테이너 수가 많아질수록 관리 어려움

 

Container Orchestration

  • Docker Swarm 등 여러 종류 등장
  • 현재는 업계 표준 수준의 Kubernetes로 통일 (백엔드의 OS와 같은 역할로 여겨지기도 함)

 

Spring Cloud (2015)

  • netflix oss를 spring에서 매핑한 것 

 

Istio

  • Service mesh solution
    • microservice 하나하나 각 서로를 호출 (거미줄처럼 복잡해짐)
    • 구조적 문제점 발생: 핵심이 되는 microservice에 장애가 발생하면 장애 전파
    • 이런 문제를 해결하기 위한 솔루션이 service mesh solution
    • 대표적인 것이 Istio

 

 

컨테이너 기술의 발전

 

  • 가상 머신을 통해 더 효율적으로 자원 사용 가능
  • 컨테이너: 가상 머신과 유사하게 격리된 환경 지원, 더 가볍게 사용 가능
  • 컨테이너들을 효율적으로 관리해주는 것이 쿠버네티스

 

 

 

 

Kubernetes

참고: https://kubernetes.io/ko 

 

 

Kubernetes (K8S) : 컨테이너화된 애플리케이션을 자동으로 배포, 스케일링 및 관리해 주는 오픈소스 시스템

 

가장 중요한 두 가지 관점

1. desired state

2. declarative

 

기능

  • Service discovery and load balancing
  • Automatic bin packing
  • Storage orchestration
  • Self-healing
  • Automated rollouts and rollbacks
  • Secret and configuration management
  • Batch execution
  • Horizontal scaling

 

kubernetes 기능 참고

 

 

Cluster

 

여러 대의 컴퓨터들이 연결되어 하나의 시스템처럼 동작하는 컴퓨터들의 집합

 

Kubernetes cluster

  • 모여 있는 컴퓨터들을 두 가지로 구분
    • master node
      • cluster의 핵심
      • api server 포함
    • worker node

 

 

컴퓨터 클러스터 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 독일에 위치한 켐니츠 기술 대학교에서 기술자들이 대규모 리눅스 클러스터에서 작업하고 있다 컴퓨터 클러스터(영어: computer cluster)는 여러 대의 컴퓨터들이

ko.wikipedia.org

 

Google Kubernetes Engine(GKE)

GKE는 완전한 Kubernetes API, 4방향 자동 확장, 출시 채널, 멀티 클러스터 지원을 갖춘 업계 최초의 완전 관리형 Kubernetes 서비스입니다.

cloud.google.com

 

Red Hat OpenShift로 간편해진 개방형 컨테이너 오케스트레이션

오픈시프트 컨테이너 플랫폼의 기능과 장점: 자동화된 풀스택 오퍼레이션으로 하이브리드 클라우드, 멀티클라우드, 엣지 배포를 관리하는 기업용 쿠버네티스 컨테이너 플랫폼

www.redhat.com

 

IBM Cloud Kubernetes Service

IBM Cloud Kubernetes Service를 사용하면 지능형 스케줄링, 자가 복구 및 수평 스케일링을 오케스트레이션할 수 있습니다.

www.ibm.com

 

 

 

Kubernetes 구성 요소

 

클러스터 구성 컴포넌트

 

컨트롤 플레인

  • 전체 클러스터의 기능을 제어하고 리소스를 만드는 역할 

 

워커 노드

  • 컨테이너 실행

 

Add-on 컴포넌트

  • Kubernetes DNS 서버
  • 대시보드
  • CNI 플러그인
  • ...

kubernetes component interdependency

 

 

kubernetes resources map

 

 

 

클러스터 작동 확인

kubectl cluster-info

cluster-info

API 서버 엔드포인트 확인 가능

 

 

 

쿠버네티스 리소스 변화 관찰

watch kubectl get all -o wide	 # 2초마다 자동 실행

 

 

YAML을 이용한 쿠버네티스 리소스 생성

 

YAML

  • YAML Ain't Markup Language: 문서 마크업이 아닌 데이터 중심 표현
  • 버전 제어 시스템 이점 사용 가능
  • 탭 대신 공백 사용
  • 배열 데이터 앞에는 '-' 기호 사용

 

쿠버네티스 Add-on Component

 

1. 쿠버네티스 대시보드 https://github.com/kubernetes/dashboard

  • Web UI를 통해 쿠버네티스 리소스의 생성/수정/삭제/조회 기능 제공
# 설치 명령어
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml

 

 

2. Metrics-Server https://github.com/kubernetes-incubator/metrics-server

  • 쿠버네티스 자원 모니터링을 할 수 있게 성능 지표 수집

 


 

 

cf. Docker Container

 

Docker Container

Docker 개요 참고: 컨테이너 개념잡기- 왜 컨테이너일까? - Opennaru, Inc. Docker란? Dock + er 원래는 부두에서 물건을 싣고 내리는 일을 하는 사람을 의미한다. 규격화되지 않은 물건들의 형태와 노동 방

drsuneamer.tistory.com

 

참고한 영상

 

🔼명령어와 같이 개념도 짚어 주는 느낌이라 좋았음

'TIL > etc' 카테고리의 다른 글

[이산수학] 집합론  (1) 2024.04.22
jupyter notebook 설치 명령어  (0) 2024.03.27
[Kubernetes] Deployment  (0) 2024.01.14
[Kubernetes] Service  (0) 2024.01.13
[Kubernetes] POD / POD Generator  (1) 2024.01.12