K8s 뉴비의 쿠버네티스 정복기 (3)

2 분 소요

1. K8s 개념 이해 (Ctnd.)

고급 컨트롤러

  • RC, RS, Deployment는 웹서버 같은 일반적 워크로대에 대해 Pod 관리하기 위한 컨트롤러
  • 실제 운영환경에서는 일반적 워크로드 이외에 DB / 배치 작업 / 데몬 서버와 같이 다양한 형태의 워크로드 모델 존재 : 이를 위해 다야한 컨트롤러 제공
  • DaemonSet(DS)
    • Pod가 각각의 노드에서 하나씩만 돌게 하는 형태로 Pod를 관리하는 컨트롤러
    • 모든 Node에 균등하게 하나씩만 배포
    • 서버 모니터링 혹은 로그 수집 용도로 많이 사용
    • 특정 node에만 pod 배포 가능하도록 node selector 활용하여 선택 가능
  • Job
    • 배치 혹은 한번 실행되고 끝나는 형태의 작업
    • 원타임 파일 변환 작업 / 주기적 ETL 배치 작업 => 작업시에만 Pod를 띄우면 됨
    • Job 종료시 Pod 종료
    • 보통 이미지 + Job 수행 위한 커맨드를 함께 입력
    • Job 컨트롤러에 의해서 실행된 Pod는 이 Command의 실행 결과에 따라 Job의 실패 / 성공 여부 판단
      • 종료 => 실패 => 재실행 ? 끝낼지 ? 설정에 따라 결정
      • 만약 비정상적 종료시에는(장애 발생시)
        • 다시 시작하게 하거나 (resume이 아닌 restart)
        • 다시 시작하지 않게
    • Completion : 여러번 수행 / Parallesim : 병렬 수행 의 옵션 줄 수 있음
  • Cron Jobs
    • Job 컨트롤러에 의해 실행되는 배치성 작업들에 대해서 주기적 자동화 실행
    • 스케줄로 처리 : cron jobs
    • unix 명령어처럼 시간에 따른 실행조건 정의 가능 : 이에 따라 Job 컨트롤러 실행 / 정의된 Pod 실행
  • StatefulSet
    • DB와 같이 상태를 가지고 있는 Pod를 지원하기 위해 소개
    • 디스크 볼륨과 연관

2. 아키텍처

마스터와 노드

  • 마스터 : 클러스터 전체 컨트롤 시스템
    • API 서버 : k8s는 모든 명령을 및 통신을 api로 수행 : REST API
    • Etcd : k8s 클러스터의 DB 역할 / 서버 설정값이나 클러스터 상태 저장하는 서버 => key-value 스토어 오픈소스
    • 스케줄러 : Pod / 서비스 등 각 리소스들을 적절한 노드에 할당
    • 컨트롤러 매니저 : 컽트롤러를 생성하고 이를 각 노드에 배포 / 관리
    • DNS : k8s는 리소스의 Endpoint를 DNS로 매핑하고 관리
      • Pod나 서비스틑 IP를 동적으로 생성하여 받기 때문에 리소스에 대한 위치 정보가 필요함 : Service Discovery => 내부 DNS 서버를 두는 방식으로 해결
      • 즉, 새로운 리로스가 생기면 해당 리소스에 대해 IP / DNS 이름을 등록하여 해당 DNS 이름 기반으로 리소스에 접근할 수 있게 함
  • 노드 : 마스터에 의해 명령받고, 실제 워크로드를 생성하여 서비스하는 컴포넌트
    • Kubelet : 노드에 배포되는 에이전트 / 마스터와 API 통신하며 명령을 전달받아 수행하고, 반대로 노드의 상태 등을 마스터에 전달
    • Kube-proxy : 노드에 들어오는 네트워크 트래픽을 적절한 컨테이너로 라우팅, 로드밸런싱 등 노드로 들어오고 나가는 네트워크 트래픽을 프록시함. 노드 - 마스터 간 네트워크 통신 관리
    • Container Runtime : Pod를 통해 배포된 컨테이너를 실행하는 컨테이너 런타임 / 보통 도커를 생각하나 이외에 rkt (보안 강화), Hyper container 등 다양한 런타임이 있다고 함
    • cAdvisor : 각 노드에서 기동되는 모니터링 에이전트 : 노드 내에서 가동되는 컨테이너 상태 / 성능정보 수집 => 마스터 서버의 API로 전달 (kubelet를 안거치고?) / 보통 모니터링용으로 사용

출처 - 조대협님 블로그 (https://bcho.tistory.com/1255)

댓글남기기