k8s 동작원리

zhzkzhffk·2022년 5월 23일
0

따배쿠

목록 보기
1/6

본 포스팅은 따배쿠(따라하면서 배우는 쿠버네티스)을 보고 정리한 내용입니다.


  1. docker push hub.example.com/nginx
    - 개발자 혹은 운영자가 컨테이너를 쿠버네티스 플랫폼에 올려 사용하는 것이 목적입니다.
    - 컨테이너 엔진(docker)를 이용하여 컨테이너를 빌드(생성)

  2. Image nginx is pushed to Docker Hub
    - 생성한 컨테이너 이미지를 컨테이너 저장소 (Docker Hub)에 업로드합니다.
    - Docker Hub는 사내에 만들어졌을 수도 있고(Private) Docker Hub(Public)를 사용할 수도 있습니다.

  3. kubectl create deploy web --image=hub.example.com/nginx or yaml 파일
    - 쿠버네티스 명령어를 통해 생성한 컨테이너가 실행되도록 요청합니다.

  4. kubectl issues REST call
    - kubectl 명령이 Control-plane으로 전달됩니다.
    - Master에는 REST API Server가 있어서 kubectl의 명령어를 받아들입니다.

  5. Pod created and scheduled to a worker node
    - 작업 중인 Node 중 어느 노드에 Pod가 생성되면 좋을지 Scheduler에게 API서버가 etcd 정보를 가지고 요청합니다.
    - Scheduler는 노드들의 상태들을 보고 어느 노드가 가장 놓을지 선택 후 응답합니다.

etcd란??

  • worker 노드들에 대한 상태 정보(하드웨어 리소스, 컨테이너 동작중인 상태, 이미지 상태)를 kublet(kubelt damon, cAdvisor)이 현재 이 워커노드에 컨테이너 기반 상태 정보 + 하드웨어 상태 정보도 수집하고 API server에 전달하고 이 정보를 etcd에 저장한다.
  • 쿠버네티스 상태 정보도 저장한다.(deploy 요청..그 요청에 따른 실행 정보)
  • API 서버는 문법체크를 하고 etcd 정보를 확인하고, 그 정보를 가지고 스케줄러에게 요청을 함
  1. Kubelet is notified
    - kubelet은 API 서버를 통해 etcd에 적힌 내용을 기반으로 pod를 생성한다.

  2. kubelet instructs Docker to run the image
    - kubelet은 요청을 받아서 도커 명령어로 바꿔서 docker daemon에게 실제 컨테이너 실행 요청을 진행한다.

  1. Docker pulls and runs nginx
    • 컨테이너 생성 요청을 받은 Docker 데몬이 Docker Hub에서 이미지를 찾아서 이미지를 생성합니다.
    • 생성된 컨테이너를 쿠버네티스에서는 Pod라는 단위로 관리합니다.

profile
Backend Developer

0개의 댓글