본문 바로가기
docker & kubernetes

쿠버네티스 사용하기 2 | Docker&Kubernetes 학습 34

by 그갸거겨 2024. 12. 23.
728x90
반응형
쿠버네티스를 사용하기 위해 알아야 할 용어들을 알아보자

쿠버네티스의 구성과 관련된 용어 파드

  • 쿠버네티스에서 컨테이너는 파드(pod)라는 단위로 관리된다.
  • 파드는 컨테이너와 볼륨을 함께 묶은 것으로, 기본적으로 파드 하나가 컨테이너 하나이다.
    • 컨테이너가 여러 개인 파드도 있을 수 있다.
  • 파드에 포함되는 볼륨은, 함께 포함되는 컨테이너가 정보를 공유하기 위해 사용하는 것으로,
    파드에 볼륨이 없는 경우도 많다.

쿠버네티스의 구성과 관련된 용어 서비스

  • 파드를 모은 것이 서비스(service) 즉, 여러 개의 파드를 이끄는 반장이라고 생각하면 된다.
  • 서비스가 관리하는 파드는 모두 기본적으로 동일한 구성을 갖는다.
  • 구성이 다른 파드는 별도의 서비스로 관리한다.
  • 파드가 여러 개의 워커 노드(물리적 서버)에 걸쳐 동작하더라도, 이 모든 파드들을 관리한다.
  • 서비스의 역할은 쉽게 말해 로드 밸런서(부하 분산장치)다.
  • 각 서비스는 자동적으로 고정된 IP 주소를 부여받으며(cluster IP), 이 주소로 들어오는 통신을 처리한다.
    • cluster IP는 서비스를 명시적으로 삭제하지 않는 한 바뀌지 않는다.
  • 내부적으로는 여러 개의 파드가 있어도, 밖에서는 하나의 IP 주소(cluster IP)만 볼 수 있으며,
    이 주소로 접근하면 서비스가 통신을 적절히 분배해 주는 구조다.
  • 하지만, 서비스가 분해하는 통신은 한 워커 노드 안으로 국한된다.
  • 여러 워커 노드 간의 분배는 실제 로드 밸런서 또는 인그레스(ingress)가 담당한다.

쿠버네티스의 구성과 관련된 용어 레플리카세트

  • 서비스가 요청을 분배하는 반장이라면 레플리카세트(ReplicaSet)는 파드의 수를 관리하는 반장이다.
  • 정의 파일에 정의된 파드 수에 맞게, 파드를 보충하거나 파드 수를 감소시킨다.
  • 레플리카세트가 관리하는 동일한 구성의 파드를 레플리카(replica)라고 부른다.
  • 그래서, 파드의 수를 조정하는 것을 '레플리카의 수를 조정'한다고 하거나,
    파드의 수를 결정하는 것도 '레플리카의 수를 결정'한다고 표현하기도 한다.

쿠버네티스의 구성과 관련된 용어 디플로이먼트

  • 원하는 대로 다루기 어려워서 레플리카세트는 단독으로 쓰이는 경우가 드물고,
    디플로이먼트(Deployment)와 함께 쓰일 때가 많다.
  • 디플로이먼트란 파드의 디플로이(배포)를 관리하는 요소로,
    파드가 사용하는 이미지 등 파드에 대한 정보를 갖고 있다.
  • 레플리카세트의 상사가 디플로이먼트이다.

그 밖의 쿠버네티스 리소스

  • 파트, 서비스, 레플리카세트, 디플로이먼트 등을 리소스(resource)라고 한다.
  • 주요 쿠버네티스 리소스
리소스 이름 내용
파드(pods) 파드. 컨테이너와 볼륨을 합친 것.
파드템플릿(podtemplates) 배포 시 파드의 형틀 역할
레플리케이션컨트롤러(replicationcontrollers) 레플리케이션을 제어
리소스쿼터(resourcequotas) 쿠버네티스 리소스의 사용량 제한을 설정
비밀값(secrets) 키 정보를 관리
서비스어카운트(serviceaccounts) 리소스를 다루는 사용자를 관리
서비스(services) 파드에 요청을 배분
데몬세트(daemonsets) 워커 노드마다 하나의 파드를 생성
디플로이먼트(deployments) 파드의 배포를 관리
레플리카세트(replicasets) 파드의 수를 관리
스테이트풀세트(statefulsets) 파드의 배포 상태를 유지하며 관리
크론잡(cronjobs) 지정된 스케줄대로 파드를 실행
잡(jobs) 파드를 한번 실행

오브젝트와 인스턴스

  • 파드나 서비스, 레플리카, 디플로이먼트를 각각 파드 오브젝트, 서비스 오브젝트처럼
    'OO 오브젝트(object)'라고 부르기도 한다.
  • 이렇게 부르는 이유는, 이들 리소스가 마스터 노드에 위치한 데이터베이스인 etcd에 등록된 상태에서는 'OO 오브젝트' 형태로 관리되기 때문이다.
  • 앞서 이야기 했듯이, 쿠버네티스의 정의 파일 내용은 etcd에 등록돼 관리된다.
  • 쿠버네티스는 이 etcd에 등록된 내용을 따라 실제 파드나 서비스를 생성하며,
    이렇게 생성된 것을 인스턴스(instance)라고 한다.
  • DB에 오브젝트로 등록된 정보를 기초로 인스턴스를 실제로 생성하는 것이다.

쿠버네티스의 종류

  • 쿠버네티스는 클라우드 네이티브 컴퓨팅 재단(Cloud Native Computing Foundation, CNCF)이라는 단체에서 제정한 표준이다.
  • 본래 구글에서 개발됐지만 구글 등의 회사가 CNCF를 조직하고 이 재단에 쿠버네티스를 기부해 개발이 오픈소스로 전환되면서 급속하게 보급됐다.
  • CNCF도 쿠버네티스를 만들고 있지만, 관리 기능을 강화한 버전이나, 크기를 줄인 버전 등 쿠버네티스의 규격을 따른 서드파티 소프트웨어가 여럿 나오고 있다.
  • 특히 이 중에서도 AWS나 애저, GCP 같은 클라우드 서비스에서는
    자사 서비스에 맞춰 커스터마이징된 쿠버네티스를 제공한다.
  • 이들 SW는 서로 호환되는데, 이들 중 호환성이 검증된 SW나 서비스에는 'Certified Kubernetes'인증을 부여해 공식 웹 사이트에서 소개하고 있다.

어떤 종류의 쿠버네티스를 사용해야 할까?

  • 원조 쿠버네티스를 채택하는 것 자체는 꽤 흔하지만, 이를 직접 구축하지는 않고 대게 외주를 준다.
    • 로드 밸런싱을 위한 하드웨어, 각종 드라이버 상성 확인, 유지보수 등의 문제
  • 쿠버네티스는 본래 대규모 시스템이 전제 조건이라, 마스터 노드와 워커 노드도 별도의 물리적 컴퓨터로 설정하지만 도커 데스크톱이나 Minukube에서는 컴퓨터 한 대에 마스터 노드와 워커 노드를 모두 구축한다.

  • 하지만 도커 데스크톱이나 Minukube는 오직 학습용이라서, '쿠버네티스를 모두 익혔다'고 하기엔 무리가 있다.
  • 쿠버네티스를 적용한 현장은 '안정성이 생명인' 시스템이거나 '사용량이 많은' 시스템이 대부분이다.
  • 이런 현장에서 일하려면 도커나 쿠버네티스 외에도 다양한 지식이 필요하다.
  • '명령어를 안다 != 쿠버네티스를 쓸 수 있다' 라는 의미이다.

 

1. 쿠버네티스 활성화

  • 도커 설정 화면에서 [Kubernetes] 탭에서 [Enable Kubernetes] 항목을 체크한다.

2. 쿠버네티스 클러스터 설치

  • [Kubernetes Cluster Installation]이라는 대화창이 나타나면, [Install]을 클릭해 설치하고, 설치되면 실행된다.

3. 준비완료

  • 쿠버네티스 클러스터 설치가 끝나면 아래 화면과 같이 Kubernetes가 running 상태가 된다.

 

쿠버네티스 삭제 또는 비활성화

  • 쿠버네티스는 컴퓨터의 리소스를 소모하므로 사용하지 않을 때는 평소 작업에 지장을 줄 수 있다.
  • 'Enable Kubernetes'항목의 체크를 해제해 쿠버네티스를 비활성화한다.
  • 또 쿠버네티스 클러스터를 초기화하려면 'Reset Kubernetes Cluster' 버튼을 클릭하면 된다.
728x90