쿠버네티스란?

2021. 5. 25. 09:32Container/kubernetes

728x90
반응형

- 컨테이너화 어플리케이션을 효율적으로 배포하고 운영하기 위해 설계된 오픈소스 플랫폼

( 이해하기 위해서는 Container 사용부터 알아야함 )

 

컨테이너 기술의 필요성

애플리케이션 실행에 필요한 라이브러리나 운영체제 패키지등을 모두 담아서 불변의 실행 환경을 만든다. 이렇게하면 개발자 들간에 테스트와 운영환경 간의 차이를 없앨 있어 개발 생산성을 높이고, 에플리케이션 정식 서비스를 안정적으로 배포할 있게 된다.

 

  • 배포계획에 맞춰 에플리케이션을 신속하게 배포할 있다.

 

 * 컨테이너 개수, CPU,  사용률, 메모리 사용량을 설정 가능

 * 저장 공간, 네트워크 접근 제어, 로드밸런싱 기능 설정 가능

 

  • 가동 중인 애플리케이션을 스케일 /다운 있다.

 

  * 요청이 많을 때는 컨테이너 수를 늘려서 처리 능력을 높임

  * 요청이 적을 때는 컨테이너 수를 줄여서 자원 점유율이나 요금을 줄임

 

  • 다양한 환경에서 쿠버네티스의 사용 가능

ex) 퍼블릭 클라우드 , 프라이빗 클라우드, 하이브리드 클라우드, 온프레미스 등등…

 

  • 계속되는 변화를 전제로 설계된 높은 유연성과 확장성

   * 마이크로 서비스화된 에플리케이션에 최적화된 실행 환경

   * 느슨한 결합에 의한 유연성, 교체 용이성

   * 다양한 스펙의 서버가 혼재하는 클러스터 구성에 사용가능

   * 서버(노드) 정지, 추가, 제거가 용이

   * 저장소나 로드벨런서의 동적 프로비저닝

   * 퍼블릭 클라우드 API 연동한 쿠버네티스 조작

 

  • 고가용성과 성능 관리

   * 서버 정지 애플리케이션 재배포 자동화

   * 애플리케이션의 이상 종료 자동 재기동

   * 필요한 인스턴스의 개수를 유지

   * 높은 부하에서 자동 스케일

 

1. 쿠버네티스가 해결하는 과제

 

  • 지속적 통합 ( CI ) 지속적 배포 ( CD ) 효과적으로 해결할수 있다.

 

1) 애플리케이션의 빈번한 출시

  • k8s 롤아웃과 롤백 기능은 새로운 기능을 빈번하게 출시하고 버그 수정을 긴급 투입하는 것과 같은 민감한 작업을 안전하게 자동화 해준다.
  • 무정지 교체가 가능하며 교체중 발생하는 성능 저하와 프로그램 충돌로 인한 서비스 정지를 막기위해 컨테이너 교체 정책을 설정할 있다.

 

2) 무정지 서비스

  • IT 기술이 생활을 감싸기 시작하면서 서비스의 가용성이 중요한 요건이 되었다. k8s 자기 회복기능은 무정지 서비스 운영을 도와준다.

 

3) 초기 비용을 낮추고 비즈니스 상황에 맞게 규모를 조정

  • 컨테이너 기술은 애플리케이션과 실행 환경을 하나로 묶어서 배포할 있게 해준다. 그리고 k8s 복수 노드 위에서 컨테이너가 조화롭게 돌아 있도록 해준다.

 

4) 쿠버네티스와 외부 서비스와의 연동

  • 에플리케이션 서버와 달리 데이터베이스에 대한 컨테이너화는 신중하게 접근할 필요가 있다.

이유는 컨테이너는 언제든지 재시작 잇는 일시적 존재이며, 상태를 포함하지 않는것을 전제로 하기때문이다. -> 이럴때 대안이 하이브리드 구축을 하는것이 방법임

 

 

5) 개발 환경과 운영 환경의 분리

  • 쿠버네티스에서는 클러스터를 여러개의 가상환경으로 분할하는것이 가능하다. 그리고 각각 가상환경에 설정파일, 보안이 필요한 인증서나 비밀번호를 저장할 있다. 그리고 컨테이너에서는 저장된 정보에 접근할 있다.

 

6) 온프레미스와 클라우드 위에 구축

  • 쿠버네티스는 인프라의 복잡성을 감추며, 일관된 인터페이스로 다룰 있도록 설계되어있다.
  • 온프레미스와 클라우드 환경에서 동일한 인터페이스로 조작하며 운영이 가능하다.

 

7) 애플리케이션 중심의 오케스트레이션

  • 애플리케이션 개발자가 YAML파일을 기술하여 쿠버네티스에 제출하면 로드밸런서, 저장소, 네트워크, 런타임 등의 환경이 구성된다.

 

8) 특정 기업에 종속되지 않는 표준과 기술

  • 170여개의 회사가 참가하고 있기때문에 특정 회사에 종속되지 않은 표준 기술

 

9) 서버들의 가동률 높이기

  • k8s에서 사용되는 컨테이너 기술은 에플리케이션이 정해진 서버에서 돌지 않아도 된다는 자유를 보장한다. 또한 CPU사용시간이나 메모리 요구량도 간단히 제어할수 있다.

 

3.  쿠버네티스의 아키텍쳐

  • 클러스터를 담당하는 Master 컨테이너화 애플리케이션을 실제로 실행하는 노드 Worker
  • Master Node : kubectl 같은 API클라이언트 부터 요청을 받아서 애플리케이션 배포, 스케일업/다운, 컨테이너 버전 업등의 요구를 처리, Master 다중화 있다.(고가용성)

 

 

 참고 : 15단계로 배우는 도커와 쿠버네티스 책을 참조했습니다.

728x90
반응형