쿠버네티스(kubernetes)의 기본개념에 관하여...

2021. 5. 25. 09:51Container/kubernetes

728x90
반응형

1. 클러스터를 구성하는 코어프로세서

 

1) kubectl

  • k8s 클러스터를 조작하기 위한 도구로 가장 빈번하게 이용되는 커맨드 라인 인터페이스

 

2) kube-apiserver

  • kubectl등의 API클라이언트로부터 오는  REST요청을 검증하고, API 오브젝트를 구성하고 상태를 보고한다.

 

3) kube-scheduler

  • 쿠버네티스의 기본 스케쥴러z
  • 새로 생성된 파드에 대해 실행할 최적의 노드를 선택
  • 스테쥴러는 파드가 실행 가능한 노드를 찾은 다음 점수를 계산하여 가장 점수가 높은 노드를 선택

 

4) kube-controller-manager

  • 컨트롤러를 구동하는 마스터상의 컴포넌트

 

5) cloud-controller-manager

  • API 통해서 클라우드 서비스와 연계하는 컨트롤러로, 클라우드 업체에서 개발한다.

 

6) etcd

  • k8s클러스터의 모든관리데이터는 etcd 저장된다.
  • CoreOS 개발한 분산 / 저장소로 신뢰성이 요구되는 핵심데이터의 저장 접근을 위해 설계되었다.

 

7) kubelet

  • 파드와 컨테이너의 실행
  • 파드와 노드상태를 API서버에 보고
  • 컨테이너 동작을 확인하는 프로브 실행
  • 내장된 cAdvisor 통해 메트릭 수집 공개

 

8) kube-proxy

  • 서비스와 파드의 변경을 감지하여 최신 상태로 유지
  • iptables 규칙을 관리
  • 서비스명과 ClusterIP 내부 DNS 등록

 

9) coredns

  • 파드가 서비스 이름으로부터 IP 주소를 얻기위해 사용

 

2. 애드온 컴포넌트

 

1) kube-flannel

  • 모든 노드에서 실행되어 여러노드사이에서 IPV4 네트워크를 제공한다.
  • 컨테이너는 k8s 클러스터 내부에서 사용되는 IP주소를 바탕으로 다른노드에 있는 파드와 통신 할수있다.

 

2) calico-kube-controllers

  • calico 위한 컨트롤러, 데이터 스토어로서 etcd 이용하기 위하여 사용된다.

 

3) calico-node

  • 모든 노드에서 실행되어 노드 파드 통신, 라우팅, 네트워크 접근 관리 기능을 제공한다.

 

4) kubernetes-dashboard

  • web 대쉬보드

 

5) heapster

  • kubelet 내장된 cAdvisor로부터 메트릭 정보를 수집. 버전 1.11부터 지원이 중단됨

 

6) metrics-server

  • heapster 대신하여 1.8버전부터 도입되었고 API aggreation layer 통해서 k8s클러스터 전체로부터 메트릭을 수집한다.

 

3. 쿠버네티스 계층 구조

 

1)쿠버네티스의 API 서버로서 클라이언트로부터 명령을 받아드리고 실행

2)컨테이너를 파드 단위로 스케줄링 삭제

3)파드의 컨트롤러 기능과 외부 리소스 관리

 

  • 스케쥴링이란?

파드를 실행할 노드를 정하는 것을 의미한다.

Master 노드의 CPU 메모리 예약상황, 실제사용량을 감시하고 있다. 그래서 매니페스트에 기제된 CPU 메모리 요청값 상한 값을 기준으로 조건에 부합하는 노드를 찾아서 파드를 스케쥴 한다.

 

 

4. 쿠버네티스 API 오브젝트

1) 쿠버네티스 API

  • k8s 모든 조작은 API 통하여 이루어진다.
  • kubectl ----> kube-apisever 에게 API규약에 맞게 기술된 매니페스트 (YAML)형식 혹은  JSON 형식으로 전송하여 오브젝트를 만들고, 바꾸고 제거하는 일을 한다.

 

2) 오브젝트

  • k8s클러스터 내부의 엔티티로서, 이후 설명할 파드, 컨트롤러, 서비스등의 인스턴스를 의미
  • API 리소스 종류 (kind) 맞게 설정되고 생성4되며 지정된 상태가 유지되도록 k8s에서 제어된다.
  • 오브젝트를 만들 때는 반드시 이름을 부여해야하고, 이름은 하나의 네임스페이스에서 반드시 유일해야한다.

네임스페이스 : k8s 논리적으로 분할하여 사용하기 위해 존재하는 기능

    default kube-system 만들어짐

 

3) 워크로드

  • 오브젝트의 카테고리를 나타내는 용어로 컨테이너와 파드, 그리고 컨트롤러의 그룹을 의미한다.
  • 컨테이너 실행을 관리 하기 위해 사용

 

4) 컨테이너

  • 쿠버네티스의 컨테이너만을 독자적으로 실행하는 것은 불가능하고, 반드시 파드내에서 실행해야한다.
  • 컨테이너 기동시 설정할 있는 항목은 이미지이름, 실행명령어, 실행인자, 환경변수, 볼륨, CPU사용시간과 메모리 크기의 요청값 상한 값등이 있다.

 

5) 파드

  • 컨테이너를 시작하기위한 오브젝트이다.

 

6)컨트롤러

  • 파드를 실행을 제어하는 오브젝트로서, 여러 종류의 컨트롤러가 있어 컨트롤러의 기능을 이해하고 목적에 맞게 적절히 구별해서 사용해야한다.
  • ) Deployment 컨트롤러는 지정된 숫자보다 적으면, 지정한 개수가 될때까지 파드를 기동함

 

7) 설정 ( Configureation )

  • 컨테이너 에플리케이션 설정 값이나 비밀번호 등의 정보는 배포된 네임스페이스로부터 취득하는것이 좋다.
  • 컨피그맵 ( ConfigMap ), 비밀번호와 같은 기밀 정보를 담기 위한 시크릿 ( Secret ) 오브젝트가있음

 

8) 서비스 (Service)

  • 파드와 클라이언트를 연결하는 역활을 수행
  • 서버 역활을 수행하는 파드가 클라이언트의 요청을 받을 있도록 대표  IP 주소를 취득하여 내부DNS 등록한다.
  • 대표 IP 주소를 취득한 파드들에게 부하분산 역활도 수행한다. ( 로드밸런서 )

 

9) 스토리지 ( Storage )

  • 파드나 컨테이너는 실행 시에만 존재하는 일시적인 존재이기 때문에 중요한 데이터를 컨테이너의 파일 시스템에 저장해서는 안된다. 데이터를 잃지 않기 위해서는 퍼시스턴트 볼륨에 사용하여 전원이 꺼져도 데이터가 유지되는 스토리지 시스템에 데이터를 저장해야한다.
  • 퍼시스턴트 볼륨은 복수의 노드에서 접속이 안되기에 외부 스토리지 시스템을 연동해야한다.
  • 다양한 외부 스토리지 시스템의 프로토콜과 API 차이점을 은폐하기 위해 k8s 스토리지를 계층적으로 추상화한 오브젝트를 제공한다.



출저 :  15단계로 배우는 도커와 쿠버네티스를 참고하였습니다.

728x90
반응형