😁데브옵스, 베스천서버, 쿠버네티스 - 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같은거처럼 글자를 입력해서 컴퓨터에 명령을 내리는 방식을 말함.
- 출처
- https://www.codestates.com/blog/content/%EB%8D%B0%EB%B8%8C%EC%98%B5%EC%8A%A4-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0
- Cloud Native DevOps with Kubernetes(TMI : 책 - 필요하면 빌려드림)
- https://namu.wiki/w/Kubernetes?from=%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4
반응형