T아카데미 - 컨테이너 오케스트레이션 쿠버네티스 살펴보기


쿠버네티스란?

  - Docker - Build, Ship, Run, Deployment
  - docker 는 Deploy 까지 보장하지 않음
  - $DOCKER_HOST=production.host.ip docker run -d -p 80:80 awsome-App
  - 매번 docker 명령어를 입력하는 것을 자동화하자!
  - 복잡한 서버를 효과적으로 관리하기 위해 오케스트레이션 툴을 도입해 보자!
  - 컨테이너 관리도구의 춘추전국시대
  - 구글이 컨테이너 배포 시스템으로 사용하던 borg 를 기반으로 만든 오픈소스
  - 쿠버네티스를 기반으로 한 플랫폼들의 등장

 

쿠버네티스의 특징

  1. 상태관리 : 상태를 선언하고 선언한 상태를 유지 / 노드가 죽거나 컨테이너의 응답이 없을경우 자동으로 복구
  2. 스케줄링 : 클러스터의 여러 노드 중 조건에 맞는 노드를 찾아 컨테이너를 배치
  3. 클러스터 : 가상 네트워크를 통해 하나의 서버에 있는 것처럼 통신
  4. 서비스 디스커버리 : 서로 다른 서비스를 쉽게 찾고 통신 가능
  5. 리소스 모니터링 : cAdvisor 를 통한 리소스 모니터링
  6. 스케일링 : 리소스에 따라 자동으로 서비스를 조정함
  7. RollOut / RollBack : 배포 / 롤백 및 버전 관리
  8. 빠른 업데이트
  9. 다양한 배포 방식

        * DAEMON SET : 모든 노드에 꼭 하나씩 띄우고 싶을 경우, EX 모든서버 모니터링
        * REPLICA SET : 갯수 제어, EX 3대를 띄우고 싶음
        * STATEFUL SETS : 순서를 지정하고 싶을 경우
        * JOB
        * REPLICATION CONTROLLER  : 현재 사용 x


  10. Ingress 설정 : 도메인, ip, port 도메인과 path를 지정하면 자동으로 인지
  11. namespace & label
  12. RBAC : 누가 어떤권한을 가지고 있을지 제어 (누가 - user, 어떻게? - pod)
  13. 다양한 환경 지원

 

기본 개념

  - pod
      * 컨테이너를 한번 더 감싼 개념을 pod 이라고 함
      * 하나의 팟에 여러 컨테이너가 들어가면 서로 통신 가능

 

  -  ReplicaSet
      * replicas 라는 옵션으로 갯수 지정

  - Object Spec - YAML
      * 나는 XX 라는 이름의 팟을 갖고싶다.
        그 안에는 N개의 XX 라는 이름을 가진 컨테이너가 있고 XX 이미지를 사용합니다.
      * 원하는 상태 (desired state)를 다양한 오브젝트에 라벨을 붙여 정의(yaml) 하고 API 서버에 전달한다.

 

  - Architecture

* Master : 마스터 서버는 다양한 모듈이 확장성을 고려하여 기능별로 쪼개져 있는 것이 특징, 

관리자만 접속할 수 있도록 보안 설정을 해야 하고 

마스터서버가 죽으면 클러스터를 관리할 수 없기 때문에 보통 3대를 구성하여 안정성을 높인다.

* Node : 노드 서버는 마스터서버와 통신하면서 필요한 Pod를 생성하고 네트워크와 볼륨을 설정
* kubectl : 명령 도구

 

* API Server 운영자 및 내부 노드와 통신하기 위한 인터페이스 /HTTP(S) RestAPI 로 노출되어 있고 모든 명령은 여기로 통한다.
* Controller Manager 다양한 컨트롤러 (복제,배포,상태,크론,,) 을 관리하고 API Server와 통신하여 작업을 수행
* Scheduler 서비스를 리소스 상황에 맞게 적절한 노드에 배치
* etcd 가볍고 빠른 분산형 key-value 저장소 / 설정 및 상태 저장

 

* 실제 서비스 (컨테이너) 가 실행되는 서버, 마스터의 Api server 와 통신하며 서비스를 생성, 상태관리
* kubelet 서비스를 실행 중지하고 상태를 체크하여 계속해서 살아있는 상태로 관리
* proxy 네트워크 프록시와 로드 발란서 역할 cretes a iptable rule..
* Docker(containerd 또는 rkt 또는 Hyper) 도커 뿐만 아니라 다양한 컨테이너 엔진 지원

 

+ Recent posts