티스토리 뷰

◼ Cluster(클러스터)

  • 쿠버네티스를 배포하면 얻는 것으로 컨테이너화된 애플리케이션을 실행하는 노드라고 하는 워커 머신의 집합을 뜻한다.
  • 모든 클러스터는 최소 한 개이상의 컨트롤플레인과 워커 노드를 가진다.

클러스터가 하는 작업

  • 원하는 상태(행해야 할 애플리케이션이나 워크로드, 사용하는 이미지, 사용할 수 있는 리소스 등)를 만든다.
  • 원하는 상태는 매니페스트로 이루어진 구성 파일로 정의
  • 원하는 클러스터 상태는 쿠버네티스 API로 정의
  • 쿠버네티스는 원하는 상태에 부합하도록 자동으로 클러스터를 관리

◼ Component(컴포넌트)

사전적 의미: 시스템이나 어떤단위의 일부분을 지칭할 때를 말하는 것
프로그래밍/엔지니어링: 더 큰 프로그램이나 구조물에서 식별 가능한 "일부분"

쿠버네티스에서는 크게 컨트롤플레인 컴포넌트노드 컴포넌트로 구분 하고 클러스터를 구성하기 위한 하위 컴포넌트들을 소개한다.

Control Plane Component

워커 노드를 제어하는 프로세스의 묶음으로 master node들의 집합

클러스터에 관한 전반적인 결정(예를 들어, 스케줄링)을 수행하고 클러스터 이벤트감지

Node Component

Add-on(애드온)

  • 애드온은 쿠버네티스의 기능을 확장한다.
  • 클러스터 단위로 기능을 제공하기 때문에 kube-system namespace에속한다.
  • daemonset, deployment 등 쿠버네티스 리소스를 사용하여 구현

대표적으로 아래와 같은 영역이 있다.

Workload(워크로드)

공식 문서에 따르면 워크로드는 쿠버네티스에서 구동되는 어플리케이션(하나 혹은 여러개의 컴포넌트로 구성되는 pod 집합)으로 정의한다. 

쿠버네티스가 정의한 워크로드들은 아래와 같다. 

흔히 얘기 하기를 워크로드는 쿠버네티스 builtin workload들을 말하는 것으로 보인다.

 

◼ Object(오브젝트)

  • 쿠버네티스에서 오브젝트는 클러스터의 상태를 표현하는데 사용되는 영속적[각주:1]인 엔터티[각주:2]다.
  • 클러스터에서 desired state에 해당

current state에서 desired state로 만들기 위한 쿠버네티스의 노력

status: 오브젝트를 생성할 때 리소스에 원하는 특징(desired state)에 대한 설명을 제공
spec: 쿠버네티스 시스템과 컴포넌트에 의해 제공되고 업데이트된 오브젝트의 current state
  • 어떤 컨테이너화된 애플리케이션이 동작 중인지 (그리고 어느 노드에서 동작 중인지)
  • 그 애플리케이션이 이용할 수 있는 리소스
  • 그 애플리케이션이 어떻게 재구동 정책, 업그레이드, 그리고 내고장성과 같은 것에 동작해야 하는지에 대한 정책

Object 묘사하기

필수적으로 들어가야하는 3개의 필드

  • apiVersion - 이 오브젝트를 생성하기 위해 사용하고 있는 쿠버네티스 API 버전이 어떤 것인지
  • kind - 어떤 종류의 오브젝트를 생성하고자 하는지
  • metadata - 이름 문자열, UID, 그리고 선택적인 네임스페이스를 포함하여 오브젝트를 유일하게 구분지어 줄 데이터
  • spec - 오브젝트에 대해 어떤 상태를 의도하는지
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2 # tells deployment to run 2 pods matching the template
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

모든 object 확인

$ kubectl api-resources

◼ Manifest(매니패스트)

매니페스트란 실행할 애플리케이션의 유형과 정상적인 시스템을 실행하기 위해 필요한 복제본의 수를 선언하는 JSON 또는 YAML 파일

◼ KUBECONFIG & Context

  • KUBECONFIG: cluster를 생성하면 $HOME/.kube에 cluster에 접속하기 위한 정보가 저장되고 이것을 KUBECONFIG라 한다.
  • Context: 접속 정보를 group화 해준다. 따라서 namespace, user, cluster 등의 정보가 포함된다.

https://theithollow.com/2019/02/11/kubernetes-kubeconfig-and-context/

 


Reference

https://theithollow.com/2019/02/11/kubernetes-kubeconfig-and-context/

https://stackoverflow.com/questions/53053888/where-is-the-complete-list-of-kubernetes-objects

https://kubernetes.io/ko/docs/concepts/overview/working-with-objects/_print/

https://kubernetes.io/docs/concepts/workloads/_print/#pg-89637410cacae45a36ab1cc278c482eb

https://www.redhat.com/ko/topics/containers/what-is-a-kubernetes-cluster

https://mommoo.tistory.com/55

https://kubernetes.io/ko/docs/concepts/overview/components/

https://kubernetes.io/ko/docs/concepts/workloads/

entity

https://linuxism.ustd.ip.or.kr/45

https://brunch.co.kr/@ambler/55

 

  1. 메모리 등에 저장되어 휘발적인 데이터가 아닌 프로그램이 종료되어도 남아있는 데이터 [본문으로]
  2. 유용한 정보를 저장하고 관리하기 위한 잡합.i.e.학생 엔터티는 이름, 학교, 나이, 성별등의 속성으로 특정지어질  수 있다. [본문으로]
반응형

'Development' 카테고리의 다른 글

SOLID/Cohesion/Coupling  (0) 2022.03.19
Network command line  (0) 2022.03.01
docker compose VS docker-compose  (0) 2022.02.17
Semantic Versioning & Conventional Commit  (0) 2021.12.22
환경변수 관리 하기(direnv, dotenv)  (0) 2021.12.14
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함