본문 바로가기

데이터엔지니어링/K8s on Cloud5

[6장] 클러스터 운영하기 클러스터 사이징과 스케일링 클러스터 용량 계획 세우기 용량을 산정하는 초기 측정 법은 동일한 애플리케이션을 실행하는 데 필요한 기존 서버의 수를 계산하는 것이다. 가장 작은 클러스터 가장 작은 쿠버네티스 클러스터는 단일 노드 구성이나, 안정적인 쿠버네티스 클러스터를 위한 최소한의 마스터 노드 개수는 세 개이다. 워크로드를 실행하는데 작은 클러스터로도 가능하나 권장하지 않는다. 클러스터 컨트롤 플레인이 고가용성을 보장한다면, 단일 노드로 운영해도 되나, 노드 장애를 고려해서 최소 두 개의 워커 노드로, 쿠버네티스가 모든 파드의 레플리카를 최소 두 개씩 실행하게 하는 것을 권한다. 가장 큰 클러스터 쿠버네티스는 공식적으로 최대 5000개 노드의 클러스터를 지원하며, 15만 개 이하의 파드, 30만 개 이하의.. 2023. 8. 3.
[5장] 리소스 관리 리소스 이해하기 워크로드에 사용 가능한 클러스터 리소스를 최대한 활용하는 동시에 트래픽 폭증, 노드 장애, 잘못된 배포 상황에 대처할 수 있는 충분한 여유 공간을 확보할 수 있는 방법은 무엇이 있을까?? 쿠버네티스 스케줄러 관점에서 생각을 해보자. 여기서, 스케줄러는 주어진 파드를 어디에서 실행할지 결정하는 역할을 하는데, "파드를 실행할 수 있는 충분한 리소스를 가진 노드가 있는가?" -> 파드를 실행하는데 얼마나 리소스가 드는지 알아야 답을 할 수 있다. 리소스 단위 파드의 CPU 사용량은 CPU 단위로 표시되며, 쿠버네티스 CPU는 AWS의 vCPU, 구글 클라우드의 코어, AZURE의 vCore와 동일하다. 쿠버네티스 용어로 1CPU는 일반적인 CPU단위로 보면 된다. 대부분의 파드는 CPU 전체.. 2023. 7. 4.
[4장] 쿠버네티스 오브젝트 다루기 디플로이먼트 만약 컨테이너가 종료가 된다면, 터미널에 접속하여 docker container run 명령어로 컨테이너를 다시 시작해줘야하는 불편함이 있다. 이런 방식은 불편하며, 지속적으로 컨테이너가 실행 중인지 혹은 정지되었다면 다시 실행해야하는지 관리하는 관리프로그램이 필요하다. 전통적으로 systemd, runit, supervisord 같은 도구를 사용하고, 쿠버네티스의 경우 디플로이먼트라는 관리자 기능을 제공한다. 관리와 스케줄링 쿠버네티스는 각 프로그램을 관리하기 위해 디플로이먼트 오브젝트를 생성하는데, 디플로이먼트 오브젝트에는 해당 프로그램에 대한 정보가 기록된다. 쿠버네티스의 오브젝티브인 컨트롤러는 디플로이먼트 리소스를 관리하며, 컨트롤러는 리소스가 존재하고 작동하는지 확인한다. 컨트롤러는.. 2023. 6. 20.
[3장] 쿠버네티스 구축하기 클러스터 아키텍처 쿠버네티스는 여러 대의 서버가 하나의 클러스터로 연결되어 있다. 다음은 쿠버네티스의 아키텍처다. 컨트롤 플레인 컨트롤 플레인은 클러스터의 두뇌 역할을 하며 컨테이너 스케줄링, 서비스 관리, API 요청 처리등의 작업 처리를 한다. 컨트롤 플레인은 다음과 같은 컴포넌트로 구성이 된다. -컨트롤 플레인 컴포넌트- kube-apiserver 컨트롤 플레인의 프론트엔트 서버로 API 요청을 처리한다. etcd 어떤 노드가 존재하고 클러스터에 어떤 리소스가 존재하는지와 같은 쿠버네티스와 관련된 모든 정보를 저장하는 데이터 베이스다. kube-scheduler 새로 생성된 파드(pod)를 실행할 노드를 결정한다. kube-controller-manager 디플로이먼트와 같은 리소스 컨트롤러를 관리.. 2023. 6. 6.