k8s - 1. 도커, k8s 소개

roon-replica·2022년 10월 13일
0

kubernetes

목록 보기
2/3
  • 참고자료: k8s in action, ch1

도커 컨테이너 플랫폼 소개

개요

  • 컨테이너 기술은 오랫동안 사용돼 왔지만 도커가 등장하면서 더 널리 알려졌다고 함.
    도커는 패키징 과정을 단순화해서 컨테이너를 여러 시스템에 쉽게 이식 가능하게 하는 최초의 컨테이너 시스템이라고 함.

  • 리눅스 컨테이너 기술로 가상머신과 거의 동일한 수준의 격리를 제공.

  • 도커는 애플리케이션을 패키징, 배포, 실행하기 위한 플랫폼이라고 함.
    애플리케이션을 전체 환경과 함께 패키지화할 수 있고, 중앙 저장소로 전송하고, 도커를 사용하는 모든 컴퓨터에 전송할 수 있다!

도커의 주요 3가지 개념

  • image
    애플리케이션과 환경을 패키지화한 것

  • registry
    원격 도커 이미지 저장소

  • container
    도커 기반 컨테이너 이미지에서 생성된 일반적인 리눅스 컨테이너라고 함.

도커 이미지의 빌드, 배포, 실행

가상머신 vs 도커 컨테이너

k8s 소개

개요

  • k8s는 컨테이너화된 애플리케이션을 쉽게 배포하고 관리할 수 있게 해주는 소프트웨어 시스템이라고 함.

  • 가장 간단하게 표현한 k8s 시스템

  • k8s는 클러스터 어딘가에 컨테이너화된 애플리케이션을 실행하고 구성 요소 간에 서로를 찾는 방법?에 관한 정보를 제공하고 모든 애플리케이션을 계속 실행하게 한다고 함.

상세 아키텍처

  • control plane
    클러스터를 제어하고 작동시킨다고 함..?

    • API 서버
      유저, 컨트롤 플레인 구성 요소와 통신..?

    • 스케줄러
      배포를 담당한다고 함.. (= 애플리케이션 구성 요소를 워커 노드에 할당)

    • 컨트롤러 매니저
      복제본?, 워커 노드 추적, 노드 장애 처리? 등의 기능을 수행...?

    • Etcd
      클러스터 구성을 지속적으로 저장..?하는 분산 데이터 저장소...?

  • 노드 (워커 노드)
    컨테이너화된 애플리케이션을 실행하는 시스템.

    • 컨테이너 런타임
      컨테이너를 실행

    • Kubulet
      API 서버와 통신하고 노드의 컨테이너를 관리한다고 함..

    • kube-proxy
      트래픽 로드밸런싱을 한다고 함..

k8s에서 애플리케이션 실행

  1. 애플리케이션을 1개 이상의 컨테이너 이미지로 packaging
  2. 해당 이미지를 레지스트리(원격 저장소)로 push
  3. k8s API 서버에 앱 description을 게시!
    • 디스크립션에 기술된 내용 예시
      컨테이너 이미지
      애플리케이션 구성 요소?가 포함된 이미지
      구성 요소들이 통신하는 방법?
      함께 배치되야 하는 구성 요소 정보
  • 디스크립션으로 컨테이너를 실행하는 방법
    디스크립터를 k8s에 제출하면, 각 파드의 지정된 복제본 수만큼 가능한 워커 노드들에 할당.

    • API 서버가 app description을 처리할 때,
      스케줄러는 각 컨테이너에 필요한 리소스를 계산.
      남은 리소스를 가지고 워커 노드에 지정된 컨테이너를 할당.

    • kubelet컨테이너 런타임(도커)이 필요한 이미지를 가져와 컨테이너를 실행하도록 지시.

  • 실행된 컨테이너 유지
    k8s는 배포 상태가 디스크립션과 일치하는지 지속적으로 확인한다고 함.
    인스턴스가 제대로 동작하지 않으면 k8s가 자동으로 다시 시작한다고 함!!

  • 이동한 컨테이너 접근
    고정 IP..?

질문들

  • 도커로 배포, 실행한다는 말의 의미를 정확히 모름

  • 모든 도커 이미지는 다른 레이어 위에 구성된다?

  • k8s는 많은 머신을 운영할 때 효과적인데, 그런 조직 잘 없는듯한데 k8s를 왜 쓰는지?

  • 무슨 뜻인지 이해 안 됨.
    "k8s를 사용하면 모든 노드가 하나의 거대한 컴퓨터인 것처럼 수천 대의 컴퓨터 노드에서 소프트웨어 애플리케이션을 실행할 수 있다"

  • k8s는 클러스터의 운영체제라고 볼 수 있다?
    근데 클러스터란 정확히 뭐 말하는거지

  • 상세 아키텍처에서 각 구성요소들이 뭐하는건지 모름....
    일단 A지점에서 B지점으로 이동하는 법을 배우고 나서, 자동차의 각 구성 요소 배우는 식으로 공부하라고 조언함!

  • 배포 상태가 디스크립션과 일치하는지 지속적으로 어떻게 확인함..?

  • 애플리케이션을 왜 격리함?

  • 리눅스 컨테이너 기술이 뭔지 모름
    -> 뭐 리눅스에서 격리시키는 방법이라 보면 되겠지. 다음과 같은 방법으로 구현한다고 함!!

    • 리눅스 네임스페이스로 가시성을 제한
    • 리눅스 컨트롤 그룹으로 프로세스가 사용할 수 있는 리소스를 제한 (cgroups)
      각각의 커널을 가지는 VM 인스턴스와 달리, 컨테이너로 격리하면 동일한 커널을 호출해서 보안 위험이 발생할 수 있다는데 그럼 도커도 보안 위험 있는건가?
  • hypervisor (가상화 프로세스) 잘 모름
    여러 다른 종류의 guest OS를 동작할 수 있게해주는 가상화 소프트웨어라 보면 됨

  • 도커 image가 정확히 어떻게 생겼는지 보고싶다

profile
집중 ➝ 프로세서↑ 시간 투자 ➝ 디스크↑

0개의 댓글