ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 쉽게 시작하는 쿠버네티스
    Deploy/도커 & 쿠버네티스 2023. 4. 23. 14:38

    이 글은 아래 책을 요약한 내용입니다.

     
    쉽게 시작하는 쿠버네티스
    많은 기업이 컨테이너 환경을 기반으로 기능을 통합하고 관리하는 형태로 변하고 있다. 이때 다수의 컨테이너를 관리하기 위해 쿠버네티스를 사용하지만, 쿠버네티스 자체가 워낙 방대하여 시작하기에 쉽지 않다. 책에서는 조금이라도 더 쉽고 빠르게 쿠버네티스를 배울 수 있도록 반드시 알아야 할 핵심 개념만 선별해 담았다. 동작 원리를 잘 표현한 그림으로 개념을 설명하고, 손쉽게 따라 할 수 있는 간단한 실습도 함께 제공하여 배운 내용을 내 것으로 만들 수 있게 구성했다. 또한, 단순히 따라 하기만 하는 것이 아니라 명령어 각각의 개념과 실행 결과가 나타내는 의미를 하나하나 자세히 살펴보기 때문에 쿠버네티스의 전반적인 동작 과정을 파악할 수 있다. 어디서부터 어떻게 시작해야 할지 막막하다면 이 책을 추천한다.

     

    저자
    서지영
    출판
    길벗
    출판일
    2023.01.27

    배경 지식

    퍼블릭 클라우드

    IaaS : Infrastructure as a Service (인프라만)
    PasS : Platform as a Service (개발 환경까지)
    Saas : Software as a Service (서비스 영역까지)

    컨테이너 오케스트레이션 도구

    • 쿠버네티스 : 구글에서 개발, 기능이 가장 많고 가상화 및 퍼블릭 클라우드 당 다양한 환경에서 작동
    • 도커 스웜 : 도커가 설치된 여러 대의 서버를 클러스터로 묶어 단일 환경을 사용
    • 아파치 메서드 : 수만 대의 시스템으로 확장할 수 있도록 설계. 클러스터 환경에서 하둡, 스파크 같은 응용 프로그램의 리소스 공유 및 분리를 유연하게 운영 가능

    쿠버네티스 기본

    용어 정리

    • 파드 : 가장 기본적인 배포 단위
    • 서비스 : 배포한 파드를 외부에서 접근 가능하게 함
    • 네임스페이스 : 쿠버네티스 클러스터의 논리적인 분리 단위
    • 볼륨 : 컨테이너의 파일을 저장하고 컨테이너 간 파일을 공유할 수 있는 저장소
    • 워커 노드 : 컨테이너 혹은 도커를 실행, 유지 및 관리
    • 클러스터 : 마스터 노드 + 워커 노드 (개수 상관없이) 파드와 컨테이너의 차이? 유사한 역할을 하는 컨테이너를 파드라는 단위로 묶어서 배포

    컨트롤러

    • 디플로이먼트 : 상태가 없는 애플리케이션을 배포할 때 사용하는 가장 기본 컨트롤러
    • 레플리카셋 : 몇 개의 파드를 유지할지 결정하는 컨트롤러 -> 서비스를 지속 운영할 수 있게 만들어 줌
    • 잡 : 하나 이상의 파드를 지정하고 지정된 수의 파드가 성공적으로 실행되도록 함
    • 크론잡 : 잡의 일종으로 지정한 일정에 따라서 잡을 실행시킬 때 사용 (데이터 백업에 주로 사용)
    • 데몬 셋 : 디플로이먼트처럼 파드를 생성 및 관리. 디플로이먼트는 실행해야 할 파드 개수와 배포 전략을 세분화해서 조작한다면, 데몬 셋은 특정 노드 또는 모든 노드에 파드를 배포하고 관리 (주로 노드마다 배치되어야 하는 성능 및 로그 수집 작업에 사용)

    서비스

    서비스를 사용하면 파드가 클러스터 내의 어디에 떠 있든지 고정된 주소를 이용해 접근 가능

    • 클러스터 IP : 내부 통신 방법을 위한 IP
    • 노드포트 : 외부로 노출하는 용도
    • 로드 밸런서 : 퍼블릭 클라우드에 존재하는 로드 밸런서에 연결하고자 할 때 사용

    통신

    파드 간의 통신은 동일한 워커 노드 내에서만 가능
    다른 워커 노드끼리 통신을 위해서는 CNI 플러그인이 필요
    -> 여러 가지가 있으나, 오버레이 네트워크를 제공하는 플라넬이 많이 사용됨

    쿠버네티스 사용

    디플로이먼트 배포 전략

    디플로이먼트는 상태가 없는 애플리케이션을 배포할 때 사용
    디플로이먼트 배포 전략은 주로 애플리케이션이 변경될 때 사용하며 롤링, 재생성, 블루/그린, 카나리 방법이 있음

    롤링 업데이트

    새 버전의 애플리케이션은 하나씩 늘리고, 기존 버전은 하나씩 줄여가는 방식. 안정적이지만 업데이트가 느림

    재생성 업데이트

    이전 버전 파드를 한 번에 종료하고 새 버전을 일괄 교체. 새 버전에 문제가 있을 경우, 대처가 늦을 수 있음

    블루/그린

    이전 버전 (블루)과 새 버전 (그린)이 동시 운영. 하지만 서비스 목적으로는 새 버전에만 접속 가능하고, 이전 버전은 테스트 목적으로만 접속 가능. 문제 대응이 빠르고 안정적이지만, 많은 자원이 필요

    카나리

    블루/그린과 유사. 새 버전에 트래픽 유입을 적게 시작해서 늘리고 문제 가 없는 것이 확인되면 새 버전으로만 서비스

    컨피그맵과 시크릿

    환경 변수 같은 값을 도커 이미지에 포함시키지 않고 별도로 분리해서 관리하는 방법
    시크릿은 외부에 노출되어서는 안 되는 정보를 저장할 때 활용

    서비스 - 로드밸런서

    L4 로드밸런서

    OSI 7 계층에서 네트워크 계층(IP)이나 트랜스포트 계층(TCP)의 정보를 바탕으로 로드를 분산

    L7 로드밸런서

    OSI 7계층에서 애플리케이션 계층(HTTP, FTP, SMTP)을 기반으로 로드를 분산. 그렇기 때문에 URL, HTTP 헤더, 쿠키 같은 사용자 요청을 기준으로 트래픽을 분산

    로드밸런서는 서비스는 별도의 스위치 장비가 필요해서 비용이 많이 들게 됨.
    이때 대안으로 사용할 수 있는 것이 ‘인그레스’

    인그레스

    클러스터 외부에서 내부로 접근하는 요청을 어떻게 처리할지 정의해 둔 규칙들의 모음

    • url의 패턴에 따라 접근 가능한 파드를 지정할 수 있음
    • 동일한 URL로 접속하더라도, 여러 개의 파드가 있다면 여러 개의 파드로 로드밸런싱을 해서 응답

    쿠버네티스 활용

    CI/CD

    지속적 배포 자동화 도구, ArgoCD

    깃옵스 기반의 자동화 배포 도구
    소스 코드 수정 시, 함께 수정되어야 하는 매니페스트 파일을 깃옵스 리포지터리에 저장을 하고 이렇게 저장된 매니페스트만 쿠버네티스 클러스터에 적용

    쿠버네티스 리소스 관리

    모니터링 도구

    데이터독 vs 프로메테우스
    데이터독이 설치도 쉽고 메트릭과 그래프 기능이 더 좋으나, SaaS 형태이기 때문에 외부 데이터 유출이 됨
    프로메테우스는 시각화 툴이 약하기 때문에 “그라파나“라는 툴을 추가로 이용해야 함

    컨테이너 리소스 관리

    하나의 파드에 과도한 자원이 사용되고 있거나, 자원 사용률이 낮을 경우 모니터링을 통한 관리가 필요

    관리 툴

    LimitRange & 오토스케일링

    LimitRange

    파드에서 사용할 수 있는 리소스 사용률을 제한
    Min/Max 혹은 Reqiest/Limits로 제한

    오토스케일링

    시스템 스스로 자원 사용률을 감지해 자동으로 파드를 늘려주거나 줄여줌
    이때 최대 몇 대까지 증가 가능한 지 지정이 가능한데, 이를 ‘최대 사이즈’라고 함
    예) 평소 사용률은 30%인데 티켓팅 기간에 90%까지 사용률이 증가하는 경우 활용

Designed by Tistory.