Kubernetes 전체 파이프 라인 흐름 설명

김도비·2022년 10월 23일
0

Kubernates

목록 보기
2/4

Kubernetes 전체 파이프 라인 흐름 설명

1. YAML 작성

Yaml 및 Json 파일에 ConfigMap과 Secret을 정의.

2. 이미지 Push

쿠버네티스에서 애플리케이션을 실행하려면, 애플리케이션을 docker image로 만들어 도커 허브에 push 필요.

3. kubectl 명령

Kubectl 명령어를 실행하면 kube-Apiserver에 REST API로 Yaml 이나 Json으로 작성된 파일이 전송

kubectl이 kube-apiserver에 yaml 파일 전송시, JSON 형식으로 정보를 변환시켜 전송한다.

4. kubectl이 kube-apiserver 호출

Kube-apiserver가 Yaml 파일을 읽고난 뒤,

kube-apiserver는 kube-scheduler에게 각 컨테이너에 필요한 리소스를 계산하라고 명령을 내림.

5. 스케쥴링

Kube-scheduler는 사용 가능한 노드에 pod을 할당.

6. 노드에 명령

kube-apiserver가 노드의 kubelet에게 명령을하고, 해당 노드의 kubelet은 pod이 스케쥴링 됐다는 것을 전달받는다.

7. kubelet은 도커에 이미지 실행 지시

kubelet이 Docker(container runtime)에게 이미지를 실행 명령.

7-1 일반적인 생성, 배포 방식

위와 같이 kubelet이 직접 도커에 명령을 내려 이미지를 실행할 수도 있지만, 매우 번거럽고 불편하다.

특히나 롤링 업데이트와 같은 작업을 할 경우 일일히 다 배포해 줘야 하기 때문이다. 그래서 kubelet이 docker에게 명령을 내리는 것이 아닌

kube-controller manager -> controller -> deployment -> replicaset을 이용해 pod을 생성, 관리, 배포 합니다.

8. 도커 허브에서 이미지 pull

도커 이미지가 해당 노드 상에 없다면, 도커 허브에서 이미지를 pull해오고, 이미지를 pull해온 후 도커는 컨테이너를 생성 및 실행.

9. expose

위의 과정을 통해 생성된 pod들은 service 오브젝트에의해 외부로 노출된다.

또한 service와 함께 Ingress를 Controller를 같이 사용하여 효과적인 클러스터 관리를 가능케함.(클라우드를 같이 사용하는 경우 loadbalancing을 같이 사용)

profile
모든 걸 기록하자

0개의 댓글