채용 공고를 보면서 데이터 엔지니어 직무의 우대사항에 왜 쿠버네티스가 들어간걸까?

이런 생각이 들어 GPT의 힘을 빌려 정리해두었다.

막연하게 배워야한다라고 생각하는게 아니라 글로 작성해보니 체감이 더 잘되는 것 같다.

🥡 데이터 엔지니어가 쿠버네티스를 배우는 이유?
- 효율적인 리소스 관리
쿠버네티스를 통해 애플리케이션과 서비스의 배포, 확장 및 관리를 자동화할 수 있습니다. 이는 인프라 운영의 복잡성을 줄이고, 자원을 더 효율적으로 사용할 수 있게 합니다.

- 확장성 및 가용성 향상
자동 확장 기능과 함께 노드 장애가 발생했을 때 서비스의 지속적인 운영을 보장합니다. ⇒ 고가용성과 확장성

- 다양한 환경과의 호환성

우선 포스팅 작성 전에 이번 포스팅의 거의 모든 내용은 다음 블로그를 참고하였다.

따라서 더 자세한 정보를 원한다면 해당 블로그를 참고하는 것을 추천한다.

이번 포스팅은 단순하게 내가 공부한 내용을 타이핑해보면서 기록하는 용도이다.

https://easyitwanner.tistory.com/174

 

[Kubernetes] 쿠버네티스의 구성 요소

목차 마스터 노드(컨트롤 플레인) 워커 노드 애드온 마스터 노드(컨트롤 플레인) 컨트롤 플레인은 클러스터를 제어하고 작동시킵니다. 즉, 마스터 노드는 전체 쿠버네티스 시스템을 제어하고 관

easyitwanner.tistory.com


쿠버네티스의 장점

  • 애플리케이션 배포 단순화
  • 하드웨어 활용도 증가
  • 상태 확인과 자가 치유
  • 오토스케일링

Master node = Control plane

컨트롤 플레인은 클러스터를 제어하고 작동시킨다. 하나의 마스터 노드에서 실행하거나 여러 노드로 분할되고 복제되어 고가용성을 보장할 수 있는 요소들로 구성된다.

 

구성 요소

  • etc 분산 저장 스토리지
    • 분산형, 신뢰 가능한 키 값 저장소
    • 클러스터의 구성 데이터와 상태를 보유
    • 뗏목 합의 알고리즘 기반
  • API 서버
    • 클러스터 내의 사용자, 관리자 및 기타 구성 요소 간의 기본 상호작용 지점.
    • Restful APU 요청을 처리하고 유효성을 검사하며, etcd 데이터 저장소의 개체를 업데이트한다.
    • 클러스터의 상태를 관리하고 컨트롤 플레인의 일관성, 보안, 안전성을 보장하는 역할을 수행한다.
    • API서버가 Kubelet에 직접 접속하는 경우
      • log를 가져오는 경우
      • kubectl attach로 실행중인 컨테이너에 연결 시
      • kubectl port-foward를 실행할 때
  • 스케쥴러
    • 새로 생성되거나 예약되지 않은 파드를 클러스터 내의 적절한 노드에 할당
    • 리소스 가용성, 제약 조건 및 정의된 정책을 기반으로 포드를 실행할 위치를 결정하여 워크로드가 클러스터 전체에 효율적으로 분산되게 만듬.
  • 컨트롤러 매니저
    • 클러스터의 원하는 상태를 자동화하고 유지 관리하는 다양한 컨트롤러를 관리하는 k8s 제어 평면의 핵심구성요소
    • 클러스터의 상태를 원하는 상태와 일치하도록 필요한 조정을 수행하는 제어 루프이다.

역할

  • 클러스터 상태 관리
  • 예약: Pod 예약
  • 확장: 실행 중인 Pod수를 자동으로 확장 또는 축소
  • 배포 업데이트 및 롤백: 애플리케이션 가동 중지 시간이 없음
  • 클러스터 전체 네트워킹 관리

주요 기능

  • 고가용성: 고가용성 구성 시 마스터 노드를 여러개로 실행
  • 확장성: 마스터 노드는 수천개의 노드와 수만개의 포드가 있는 대규모 클러스터의 처리가 가능하다.
  • 보안: 클러스터에 대한 액세스를 인증하고 승인해서 인증된 사용자만 특정 작업을 수행
  • 사용자 정의 가능성

Worker node

컨테이너화된 애플리케이션을 실행하는 시스템.

 

구성 요소

  • 컨테이너 런타임
  • Kubelet: API서버와 통신하고 노드의 컨테이너를 관리한다.
    • 컨테이너가 포드 내에서 예상되로 실행되도록 하는 역할.
    • 컨트롤 플레인과 통신하고 노드에서 컨테이너의 수명 주기를 관리하는 기본 노드 에이전트 역할이다.
    • 각 노드에서 실행되는 필수 구성요소이다.
  • 쿠버네티스 서비스 프록시: 애플리케이션 구성 요소간에 네트워크 트래픽을 로드밸런싱함.

역할

  • Pod 실행: 배포 가능한 가장 작은 단위인 Pod를 실행. 포드는 동일한 네트워크 네임스페이스를 공유하는 하나 이상의 컨테이너를 포함 가능.
  • 컨테이너 관리: 필요에 따라 컨테이너 시작, 중지, 다시시작을 포함한 수명 주기를 관리
  • 네트워킹: 작업자 노드는 IP 주소 할당 및 네트워크에 서비스 노출을 포함하여 실행중인 컨테이너에서 들어오고 나가는 네트워크 트래픽 처리
  • 상태 확인
  • 리소스 관리

주요 기능

  • 확장성
  • 유연성
  • 내결함성: 하나 이상의 노드가 실패하더라도 애플리케이션이 계속 실행될 수 있다.
  • 사용자 지정 가능성
 
 

+ Recent posts