티스토리 뷰
◼ Cluster(클러스터)
- 쿠버네티스를 배포하면 얻는 것으로 컨테이너화된 애플리케이션을 실행하는 노드라고 하는 워커 머신의 집합을 뜻한다.
- 모든 클러스터는 최소 한 개이상의 컨트롤플레인과 워커 노드를 가진다.
클러스터가 하는 작업
- 원하는 상태(행해야 할 애플리케이션이나 워크로드, 사용하는 이미지, 사용할 수 있는 리소스 등)를 만든다.
- 원하는 상태는 매니페스트로 이루어진 구성 파일로 정의
- 원하는 클러스터 상태는 쿠버네티스 API로 정의
- 쿠버네티스는 원하는 상태에 부합하도록 자동으로 클러스터를 관리
◼ Component(컴포넌트)
사전적 의미: 시스템이나 어떤단위의 일부분을 지칭할 때를 말하는 것
프로그래밍/엔지니어링: 더 큰 프로그램이나 구조물에서 식별 가능한 "일부분"
쿠버네티스에서는 크게 컨트롤플레인 컴포넌트와 노드 컴포넌트로 구분 하고 클러스터를 구성하기 위한 하위 컴포넌트들을 소개한다.
Control Plane Component
워커 노드를 제어하는 프로세스의 묶음으로 master node들의 집합
클러스터에 관한 전반적인 결정(예를 들어, 스케줄링)을 수행하고 클러스터 이벤트감지
Node Component
Add-on(애드온)
- 애드온은 쿠버네티스의 기능을 확장한다.
- 클러스터 단위로 기능을 제공하기 때문에 kube-system namespace에속한다.
- daemonset, deployment 등 쿠버네티스 리소스를 사용하여 구현
대표적으로 아래와 같은 영역이 있다.
◼ Workload(워크로드)
공식 문서에 따르면 워크로드는 쿠버네티스에서 구동되는 어플리케이션(하나 혹은 여러개의 컴포넌트로 구성되는 pod 집합)으로 정의한다.
쿠버네티스가 정의한 워크로드들은 아래와 같다.
- Workload resources
흔히 얘기 하기를 워크로드는 쿠버네티스 builtin workload들을 말하는 것으로 보인다.
◼ Object(오브젝트)
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 등의 정보가 포함된다.
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://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
'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
- k8s
- cka
- GitHub
- thetextbook
- Python
- no-op
- Git
- go
- HTTP/3
- pytest
- database
- QUIC
- inflearn
- 원티드
- direnv
- Isolate level
- MSA
- Network
- user-agent
- http
- Complier
- gitignore
- 창업
- 프리온보딩
- HTTP/2
- docker-compose
- 덕타이핑
- buildkit
- 위코드
- web_server
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |