[K8s] 쿠버네티스 소개

Aiden·2021년 6월 16일
0

K8S Study

목록 보기
2/9
post-thumbnail

1. 쿠버네티스(kubernetes, k8s) 란?

쿠버네티스(Kubernetes, k8s)란, 컨테이너화된 프로세스를 관리하기 위한 컨테이너 오케스트레이션(Orchestration) 플랫폼이다.

컨테이너는 애플리케이션 간에 호스트 운영체제를 공유한다. 이로 인해, 가상 머신에 비해 훨씬 더 가벼우면서, 가상 머신과 마찬가지로 실행 환경을 독립적으로 가져갈 수 있다.

1-1. k8s 사용의 장점

  • 서비스 배포, 운영에 필요한 대부분의 오케스트레이션 기능을 지원
  • 성능과 안정성 면에서 신뢰 받고 있음
  • 필요한 대부분의 기능과 컴포넌트를 사용자가 직접 커스터마이징 할 수 있음
  • CNCF(Cloud Native Computing Foundation) 및 클라우드 운영 도구들과 쉽게 연동되어 확장성이 높음

1-2. 컨테이너 오케스트레이션?

  • 컨테이너 오케스트레이션은 다수의 서버 위에서 컨테이너의 전반적인 라이프사이클을 관리해주는 플랫폼

2. 쿠버네티스 기본 개념

2-1. 바라는 상태(Desired State)

  • 사용자가 생각하는 최종 애플리케이션 배포 상태를 의미

⇒ 원하는 애플리케이션 배포 상태를 쿠버네티스에 알려주면 쿠버네티스가 자동으로 현재 상태를 바라는 상태로 변경

2-2. 컨트롤러(Controller)

  • 현재 상태를 바라는 상태로 변경하는 주체가 컨트롤러(Controller)

control-loop 라는 루프를 돌며 특정 리소스를 지속적으로 모니터링하다가, 사용자가 생성한 리소스의 이벤트에 따라 사전에 정의된 작업을 수행

2-3. 선언형 커맨드(Declarative Command)

  • 사용자가 직접 시스템의 상태를 바꾸지 않고, 바라는 상태를 선언적으로 기술하여 명령을 내리는 방법
  • 선언형 커맨드의 반대 개념은 명령형(Imperative) 커맨드로, SQL 쿼리도 명령형 커맨드의 한 종류
  • 쿠버네티스는 YAML 형식을 이용하여 선언형 커맨드를 수행
  • YAML 형식의 리소스(Pod) 예시
apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: nginx
    image: nginx:latest

2-4. 오브젝트(Object)

  • 쿠버네티스는 다양한 역할과 동작을 하는 오브젝트로 구성되어 있음
  • 이 오브젝트는 크게 기본 오브젝트와 컨트롤러로 나뉨
  • 기본 오브젝트: 파드, 서비스, 볼륨, 네임스페이스
  • 컨트롤러: 레플리카 셋, 디플로이먼트, 스테이트풀 셋, 데몬 셋, 잡

2-5. 네임스페이스(namespace)

  • 쿠버네티스 클러스터 내의 논리적인 분리 단위
  • 네임스페이스 레벨 리소스와 클러스터 레벨 리소스로 구분

네임스페이스의 목적

  • 네임스페이스별 리소스 할당량 지정
  • 사용자별 네임스페이스 접근 권한

2-6. 라벨 & 셀렉터(Label & Selector)

  • 특정 오브젝트에 명령을 전달하거나 정보를 확인하고 싶을 때 라벨링 시스템을 이용
  • 라벨링 시스템을 이용하여 질의하기 위해서 먼저 리소스에 key-value 형식의 태그정보(라벨)을 붙임
  • 태깅한 리소스를 찾기 위해 셀렉터라는 것을 이용하여 특정 key-value 를 가진 리소스만 추출

3. 쿠버네티스 아키텍처

쿠버네티스는 크게 마스터노드와 워커노드로 구분된다.

3-1. 마스터 (노드)

  • 쿠버네티스 클러스터 전체를 컨트롤 하는 시스템으로 아래와 같이 구성됨
  • kube-apiserver : 마스터로 전달되는 모든 요청을 받아 드리는 REST API 서버
  • etcd : 클러스터내 모든 메타 정보를 저장하는 서비스
  • kube-scheduler : 사용자의 요청에 따라 적절하게 컨테이너를 워커 노드에 배치하는 스케줄러
  • kube-controller-manager : 현재 상태와 바라는 상태를 지속적으로 확인하며 특정 이벤트에 따라 특정 동작을 수행하는 컨트롤러

3-2. (워커) 노드

  • 마스터로부터 명령을 전달 받아 서비스 하는 컴포넌트
  • kubelet : 마스터의 명령에 따라 컨테이너의 라이프 사이클을 관리하는 노드 관리자
  • kube-proxy : 컨테이너의 네트워킹을 책임지는 프록시
  • container runtime : 실제 컨테이너를 실행하는 컨테이너 실행 환경
profile
기억이 안되면 기록이라도🐳

0개의 댓글