공부/서버

😁데브옵스, 베스천서버, 쿠버네티스 - (1/3)

JangGiraffe 2023. 9. 13. 01:36

😁데브옵스, 베스천서버, 쿠버네티스 - 1

😭틀린부분은 지적 부탁드려요

- ▶데브옵스, 베스천서버, 쿠버네티스 (1/2) : 데브옵스,쿠버네티스에 대해서
- 데브옵스, 베스천서버, 쿠버네티스 (2/3) : 베스천서버, 쿠버네티스 파드 모니터링 방법에 대해서
- 데브옵스, 베스천서버, 쿠버네티스 (3/3) : 우리회사의 서버 (베스천서버, 쿠버네티스 등) 아키텍처
    - 3번은 회사 내부 공유용으로 본 블로그에서는 포스팅하지 않을 예정

😁 데브옵스(DevOps) ?

  • 개발(Development)과 운영(Operations)의 합성어로 목적이 다른 두 업무를 하나로 모아 서비스를 보다 안정적으로 고객에게 제공하기 위한 문화이자 방법론
  • 각 단계별 목적
    • 개발 :신속한 개발과 새로운 기능 제공,개발에 집중
      • 문제점 : 기능추가, 반복적인 테스트
      • 해결 : CI/CD 파이프라인 (깃랩,젠킨스 등)
    • 운영 : 장기적이고 안정적으로 신뢰할 수 있는 서비스를 만드는 데 집중
      • 문제점 : 서비스 중단에 대한 대처, 데이터 관리, 트래픽에 따른 적절한 배포(서버 증설,감축 등등)
      • 해결 : 탄력적인 인프라 설계,무중단 서비스(쿠버네티스 배포방식 등), 모니터링 시스템(튜나 등) 구축 등

😁 쿠버네티스로 들어가기 전에

😉 컨테이너에 소프트웨어 넣기 ?

해운 산업에서는 표준화된 컨테이너는 대량 상품을 운송하는 비용을 획기적으로 절감시킨다. 컨테이너를 들어서 선박에 옮기기만 하면 되니깐 !

  • IT 측면에서도 해운산업과 같은 개념으로 사용된다.
    컨테이너에는 앱 실행에 필요한 모든 것이 포함되어 있고, 컨테이너 런타임이 실행할 수 있는 이미지 파일에 저장한다.
  • 컨테이너 vs 가상머신(VM)
    • 가상머신 이미지도 애플리케이션에 필요한 모든 것들이 포함되지만 불필요한 것도 포함이 된다. 용량차이는 수백배정도 되는듯
      VM에는 관련이 없는 프로그램,라이브러리, 애플리케이션이 사용하지 않은 많은것이 포함되어있다 !
      • VM은 가상환경에서 작동하는데, 가상머신이 실행하는 CPU는 물리 CPU를 실제와 같이 에뮬레이션 하여 구현한다. 컨테이너는 가상화 오버헤드 없이 실제 CPU에서 직접 실행되기 때문에 속도가 30%정도 차이난다고 한다.
      • 컨테이너간의 공유하고 재사용할 수 있는 주소 지정 방식의 파일 시스템 레이어를 사용함. 이 말은 하나의 이미지 파일을 여러 컨테이너에서 참조할 수 있다는 뜻으로 디스크 공간과 네트워크 대역폭을 효율적으로 사용할 수 있다고 함.
  • 🙄Docker? (관련 aws서비스는 ECR)
    • 소프트웨어 애플리케이션과 그에 필요한 각종 라이브러리 및 종속성을 하나의 패키지로 묶어서 배포할 수 있도록 이미지화 하고 도와주는 플랫폼이다.

😉 컨테이너 오케스트레이션

  • 다양한 종류의 시스템, 아키텍처, 운영체제를 관리할 수 있는것
  • 오케스트레이션은 오케스트라의 연주자처럼 서비스의 공통적인 목표를 위하 역할을 조정하고 나열하는 것을 의미함.

😁 쿠버네티스(= kubernetes = k8s, 관련 aws서비스는 eks)

  • Kubernetes는 컨테이너화된 애플리케이션을 오케스트레이션(자동으로 배포, 스케일링 및 관리)하기 위한 오픈소스 플랫폼이다. 간단히 말해, 애플리케이션을 관리하기 쉽게 만들어 준다.
    • 로드밸런싱,오토스케일링 등의 기능이 쿠버네티스 코어에 내장되어 있음.
    • 서버 업그레이드, 보안패치 설치, 네트워크 구성, 백업 등을 자동화해줌
  • 개발자는 핵심작업(애플리케이션 코드 작성등)만 집중할 수 있게 됨.

😉 쿠버네티스 아키텍처

  • 쿠버네티스는 여러 대의 서버가 하나의 클러스터로 연결되어 있다.
  • 컨트롤 플레인 : 클러스터 내 마스터노드에서 실행됨. 클러스터의 두뇌 역할을 함. 컨테이너 스케줄링,서비스 관리, API 요청 처리 등의 작업을 수행한다.
    • kube api server : 컨트롤 플레인의 프런트엔트 서버로 API 요청 처리를 함.
    • etcd : k8s와 관련된 모든 정보를 저장하는 db
    • kube scheduler : 새로 생성된 파드를 실행할 노드를 결정함.
    • kube controller manager : 디플로이먼트와 같은 리소스 컨트롤러를 관리함.
    • cloud controller manager : 클라우드 업체와 연동해 로드밸런서나 디스크 볼륨같은 자원관리를 한다.
  • 노드 컴포넌트 : 클러스터 내에서 사용자의 워크로드를 실행함. 다음과 같은 컴포넌트가 있다.
    • kubelet : 노드에 예약된 워크로드를 실행하기 위해 컨테이너 런타임을 관리하고 상태를 모니터링함.
    • kube-proxy : 서로 다른 노드에 있는 파드 간 통신이나 파드와 인터넷 사이의 네트워크 트래픽을 라우팅 함.
    • 컨테이너 런타임 : 컨테이너의 시작 및 중지,통신처리로 일반적으로 도커를 쓰는듯.
  • kubectl : 쿠버네티스 API를 사용해 컨트롤 플레인과 통신하기 위한 커맨드 라인 툴
    • CLI(Command line interface)는 linux같은거처럼 글자를 입력해서 컴퓨터에 명령을 내리는 방식을 말함.

반응형