컨테이너 기술은 오랫동안 사용돼 왔지만 도커가 등장하면서 더 널리 알려졌다고 함.
도커는 패키징 과정을 단순화해서 컨테이너를 여러 시스템에 쉽게 이식 가능하게 하는 최초의 컨테이너 시스템이라고 함.
리눅스 컨테이너 기술로 가상머신과 거의 동일한 수준의 격리를 제공.
도커는 애플리케이션을 패키징, 배포, 실행하기 위한 플랫폼이라고 함.
애플리케이션을 전체 환경과 함께 패키지화할 수 있고, 중앙 저장소로 전송하고, 도커를 사용하는 모든 컴퓨터에 전송할 수 있다!
image
애플리케이션과 환경을 패키지화한 것
registry
원격 도커 이미지 저장소
container
도커 기반 컨테이너 이미지에서 생성된 일반적인 리눅스 컨테이너라고 함.
k8s는 컨테이너화된 애플리케이션을 쉽게 배포하고 관리할 수 있게 해주는 소프트웨어 시스템이라고 함.
가장 간단하게 표현한 k8s 시스템
k8s는 클러스터 어딘가에 컨테이너화된 애플리케이션을 실행하고 구성 요소 간에 서로를 찾는 방법?에 관한 정보를 제공하고 모든 애플리케이션을 계속 실행하게 한다고 함.
control plane
클러스터를 제어하고 작동시킨다고 함..?
API 서버
유저, 컨트롤 플레인 구성 요소와 통신..?
스케줄러
배포를 담당한다고 함.. (= 애플리케이션 구성 요소를 워커 노드에 할당)
컨트롤러 매니저
복제본?, 워커 노드 추적, 노드 장애 처리? 등의 기능을 수행...?
Etcd
클러스터 구성을 지속적으로 저장..?하는 분산 데이터 저장소...?
노드 (워커 노드)
컨테이너화된 애플리케이션을 실행하는 시스템.
컨테이너 런타임
컨테이너를 실행
Kubulet
API 서버와 통신하고 노드의 컨테이너를 관리한다고 함..
kube-proxy
트래픽 로드밸런싱을 한다고 함..
디스크립션으로 컨테이너를 실행하는 방법
디스크립터를 k8s에 제출하면, 각 파드의 지정된 복제본 수만큼 가능한 워커 노드들에 할당.
API 서버가 app description을 처리할 때,
스케줄러는 각 컨테이너에 필요한 리소스를 계산.
남은 리소스를 가지고 워커 노드에 지정된 컨테이너를 할당.
kubelet은 컨테이너 런타임(도커)이 필요한 이미지를 가져와 컨테이너를 실행하도록 지시.
실행된 컨테이너 유지
k8s는 배포 상태가 디스크립션과 일치하는지 지속적으로 확인한다고 함.
인스턴스가 제대로 동작하지 않으면 k8s가 자동으로 다시 시작한다고 함!!
이동한 컨테이너 접근
고정 IP..?
도커로 배포, 실행한다는 말의 의미를 정확히 모름
모든 도커 이미지는 다른 레이어 위에 구성된다?
k8s는 많은 머신을 운영할 때 효과적인데, 그런 조직 잘 없는듯한데 k8s를 왜 쓰는지?
무슨 뜻인지 이해 안 됨.
"k8s를 사용하면 모든 노드가 하나의 거대한 컴퓨터인 것처럼 수천 대의 컴퓨터 노드에서 소프트웨어 애플리케이션을 실행할 수 있다"
k8s는 클러스터의 운영체제라고 볼 수 있다?
근데 클러스터란 정확히 뭐 말하는거지
상세 아키텍처에서 각 구성요소들이 뭐하는건지 모름....
일단 A지점에서 B지점으로 이동하는 법을 배우고 나서, 자동차의 각 구성 요소 배우는 식으로 공부하라고 조언함!
배포 상태가 디스크립션과 일치하는지 지속적으로 어떻게 확인함..?
애플리케이션을 왜 격리함?
리눅스 컨테이너 기술이 뭔지 모름
-> 뭐 리눅스에서 격리시키는 방법이라 보면 되겠지. 다음과 같은 방법으로 구현한다고 함!!
hypervisor (가상화 프로세스) 잘 모름
여러 다른 종류의 guest OS를 동작할 수 있게해주는 가상화 소프트웨어라 보면 됨
도커 image가 정확히 어떻게 생겼는지 보고싶다