해당 글은 쿠버네티스 교과서 책과 공식 홈페이지(https://kubernetes.io/ko/)를 참조하여 작성되었습니다
쿠버네티스는 가장 큰 단위인 클러스터 여러대로 구성될 수 있으며, 하나의 클러스터는 마스터-슬레이브의 구조를 따라 하나의 마스터 노드와 여러개의 워커 노드로 구성되어 있다
그렇다면 우선 클러스터부터 알아보도록 하자
쿠버네티스의 구성요소 중 가장 큰 단위이며, 컨테이너화된 애플리케이션을 실행하는 노드라고 하는 워커 머신의 집합이다
모든 클러스터는 최소 한 개의 워커 노드를 가진다
클러스터는 크게 컴포넌트와 오브젝트로 나눌 수 있다
클러스터의 상태를 나타내는 단위이다
항상 오브젝트의 "현재 상태"를 "의도한 상태"와 동일하게 만들게끔 작동함
ex) 동작중인 컨테이너 relicas 개수, 어떤 파드들이 어느 노드에서 동작중인지..
일반적으로 자원을 할당하기 위해 사용되는 단순 오브젝트와 그런 리소스의 상태를 관리하는 컨트롤러 오브젝트가 있다
또한 하나의 클러스터 내에서 사용되는 것인지, 여러 클러스터에서 전반적으로 사용되는 것인지에 따라 나뉘기도 한다
볼륨을 할당한다던지, 컨테이너를 할당하는 등 자원 할당에 사용되는 오브젝트 들이다
파드
네임 스페이스
하나의 물리적 클러스터 내에서 네임스페이스 기반 객체들을 논리적으로 그룹핑하여 격리시키는 것
이 때문에 논리적(가상) 클러스터라고도 한다
볼륨
emptyDir
hostPath
PV (PersistentVolume)
PVC (PersistentVolumeClaim)
컨피그맵
시크릿
ResourceQuota
LimitRange
디플로이먼트 (Deployment)
데몬셋 (DaemonSet)
레플리카셋 (ReplicaSet)
스테이트풀셋 (StatefulSet)
잡/크론잡(Job, CronJob)
네임스페이스 기반 오브젝트란 하나의 클러스터 내에서만 사용되는 오브젝트로 대부분이 이에 속한다
위에서 기술한 오브젝트들 대부분이 여기에 속한다
클러스터 기반 오브젝트란 하나의 클러스터에 속하지 않고 클러스터 A, 클러스터 B, … 이런 식으로 여러 클러스터에 걸쳐 사용되는 오브젝트들을 말한다
대표적으로 Namespace, Node, PersistentVolume, StorageClass 등이 있다
현재 오브젝트가 어디에 속하는지 알고 싶다면
kubectl api-resources --namespaced={false/true}
라는 명령어를 통해 네임스페이스 오브젝트인지 아닌지 알 수 있다