도커 & 쿠버/CKA를 취득하자

쿠버강의 hands-on _ 1

dudung__ 2023. 10. 11. 23:12

 

쿠버네티스

=> 컨테이너를 관리하기 위한 툴

 

container + orchestration

 

 

 

 

container docker 

 

도커가 무엇인가 

 

다양한 서비스 사용에 따른 => 다양한 버전 / 다양한 os 사용에 대한 문제가 많았음

서비스 - 라이브러리 - os간의 종속성에 대한 문제도 많았음

=> 관련된 다양한 호환성에 대해서 계속 확인 / 수정해야하는 이슈가 있었음

+

새로운 개발자의 개발환경을 매번 새로 구성하는것이 큰 일 + 효율성이 좋지 않았음

 

==> 개발 / 제작 / 배포가 어려웠음 

 

==> 이런 호환성 개선을 위해서 쓰인 기술이 docker임 

 

 

 

 

==> 각각의 라이브러리와 종속성을 모두 가지고 별도의 컨테이너에서 작업하는것이 가능함 

 

=> 운영체제를 뭘 사용하든 상관이 없었음

 

 

 

컨테이너 

: 고유의 프로세스 / 서비스 / 네트워크 를 가질 수 있고  =>  커널을 공유함

 

 

=> 도커 위에서는 각각의 다른 운영체체를 이용해서 서비스를 설정하고, 작업을 진행할 수 있음

=> 윈도우에서는 커널이 공유되지 않음

 

=> 같은 물리 체제 안에서 운영체제와 커널을 가상화해서 사용하는 것이 아님

==> 응용 프로그램을 컨테이너화 => 가볍게 사용하는 것이 목적 

 

 

=> 도커 위에 각각의 컨테이너에 서비스에서 필요한 라이브러리 / 종속성들을 담아서 실행할수있음

 

기본적인 가상머신의 경우에는 각각의 가상머신이 OS를  가지고 있고, 서비스를 실행시에 os부터  => 서비스까지 전부 부팅을 시켜야하기 때문에 무겁고 느림

===> 그렇기 때문에 윈도우 - 리눅스를 전부 올려서 작업할 수 있지만,

 

 

도커의 경우에 리눅스 기반의 os에 윈도우가 올라가지는 못함

가상화머신의 이점이 이런부분이라고 할 수 있겠음

 

 

 image -> 일종의 템플릿 => 이걸 실행하고 여러가지 서비스를 올린것이 container 

 

container -> 각각의 격리된 이미지를 가지고 고유의 환경으로 설정이 되어있음

=> 직접 컨테이너를 이미지로 만들어서 공유할 수도 있음 

=> hub / store

 

 

==> 효율적인 개발 / 운영환경을 만드는데 강점을 가짐

 

 

 

 

container orchestration

 

=> 각각 연관성이 있는 컨테이너들을 연결하기 위한 기본 플랫폼? 이라고 생각하면 될듯

=> 컨테이너를 자동으로 배포 / 관리하는 전체 프로세스를 '컨테이너 오케스트레이션 '이라함

 

==> 쿠버네티스가 이 오케스트레이션 기술임 ㅇㅇ

 

 

docker swarm 

=> 시작이 쉬운데 고급 기능이 약간 부족함

 

mesos

=> 시작이 어려운 대신 많은 고급 기능을 가지고 있음

 

kubernetes 

=> 시작이 어렵지만 많은 지원을 하기 때문에 가장많이 사용하고 가장 인기있음

 

=> 쉽게 스케일 업 / 다운이 가능함 

 

 

 

 

architecture

 

 

node

: 쿠버가 설치된 물리적, 가상의 머신 => 컨테이너가 올라가는 공간이라고 생각하면 됨

 

  • 마스터 노드: 전체 쿠버네티스 시스템을 관리 및 통제하는 쿠버네티스 컨트롤 플레인을 관장 (위 사진 참고)

=> 클러스터 멤버에 대한 정보, 노드들에 대한 작업의 관리

 

  • 워커 노드: 배포하고자 하는 어플리케이션의 실제 실행을 수행

마스터 노드가 죽으면 클러스터를 관리할 노드가 없기에, 일반적으로 3개 정도의 마스터 노드를 띄워 관리하는 것으로 알려져 있으며,

워커 노드도 여러 개 구성할 수 있다

 

 

cluster 

: 묶인 노드의 집합 

 

 

 

====== 

api server => frontend

 

etcd => key-value store => 클러스터 내의 모든 정보를 저장

=> 마스터간의 충돌이 없게 하기 위해 사용

 

scheduler => 새로 생성된 컨테이너를 찾아 노드에 할당

 

controller  => 오케스트레이션을 관리  

 

container runtime => 컨테이너를 실행하는 기본 소프트웨어 ex) docker 

설치가 되어있어야 컨테이너를 실행할 수 가 있음

 

kubelet =>  클러스터내 각 노드에서 실행되는 에이전트

컨테이너가 노드내에서 제대로 실행되는지 확인

 

======

 

 

 

kubectl  => 명령줄 도구 그니까 CLI 창 

=> 명령어를 작성 / 동작시키는 창

 

 

 

생활코딩 도커편 강의를 보면서 기본적으로 이미지의 개념 컨테이너의 개념을 공부했고, 그 이미지를 생성, 다운, 실행, 배포하는 법을 공부했었다. 또한 컨테이너를 다시 이미지화 하는 방법들 또한 배웠었다. 하지만 기본적인 하나하나의 개념들에 대해서 공부한것은 아니기 때문에 강의를 통해서 열심히 배우고 정리해봐야겠다.. CKA! 취득하자!