개요
"2가지의 Object 관리 접근 방법" 과 "3가지의 Object 관리 방법"을 알아보겠습니다.
Object를 관리 접근 방법
2가지 방법에 대한 설명
명령형(Imperative) 접근법
원하는 상태를 얻기 위해서 "어떻게" 해야하는 지를 명령어로 정의하는 접근법
즉, 사용자가 "어떻게(명령)" 부분은 모두 입력해야 한다.
선언형(Declarative) 접근법
"원하는 상태"를 정의하면 시스템이 알아서 어떻게 해야 하는지 정의하는 접근법
즉, 사용자가 "원하는 상태(yaml)"만 입력하면 된다.
관리 방법
관리 기법 | 관리 대상 | 권장 환경 | 지원하는 작업자 수 |
명령형 커맨드(Imperative Command) | 활성 오브젝트 | 개발 환경 | 1+ |
명령형 오브젝트 구성(Imperative Object Configuration) | 개별 파일 | 프로덕션 환경 | 1 |
선언형 오브젝트 구성(Declarative Object Configuration) | 파일이 있는 디렉터리 | 프로덕션 환경 | 1+ |
명령형 커맨드
Imperative commands
1. Create Object
#kubectl run --image=nginx nginx
#kubectl create deployment --image=nginx nginx-dep
#kubectl expose deployment nginx-dep --port 80
2. Update Object
#kubectl edit deployment nginx
#kubectl scale deployment nginx-dep --replicas=5
#kubectl set image deployment nginx-dep nginx=nginx:1.18
명령형 오브젝트 구성
Imperative Object Configuration
생성/ 업데이트 / 삭제시 모두 다른 명령어를 실행해야한다.
1. Create Object
2. Update Live Object
3. Update yaml file
4. 단점
pod가 있는 상태에서 create를 실행하거나. pod가 없는 상태에서 replace를 실행하면 에러가 발생합니다.
그래서 항상 현재 상태를 알고 있어야 하는 번거로움이 존재합니다.
선언형 오브젝트 구성
Declarative Object Configuration
apply 명령어 하나로 object를 "생성/업데이트/삭제"가 하는 것이 가능합니다.
1. Create Object
2. Update Object
3. Delete Object
kubectl apply 의 내부 동작
3개의 정보를 가지고 apply시 변경사항을 live object에 반영 합니다.
apply시 사용하는 정보
1. local file
kubectl apply를 통해서 적용하려는 yaml 파일
2. last applied configuration
kubectl apply를 통해서 적용된 최종 object 설정 상태
3. kubernetes
kubectl apply를 통해서 생성된 live object
apply 상세 과정
1. Update
1. Local file에서 image변경이 발생
2. Memory에 있는 live object(kubernets)가 변경됨
3. 변경된 live object(kubernets) 정보를 Memory에 존재하는 Last Applied Configuration에 반영
2. delete
1. Local file에서 label이 삭제됨
2. Memory에 있는 last applied Configuration과 비교하여 삭제된 부분을 확인
3. Memory에 있는 live object에서 삭제된 부분을 삭제함
3. last applied configuration에 삭제 사항을 적용 함.
정리
Object를 관리하는 방법에는 2가지의 접근 방법 "명령형(Imperative)"과 "선언형(Declarative)" 이 존재합니다.
Object를 관리하는 방법에는 명령어를 사용하는 방법과, yaml 파일은 이용하는 방법이 존재합니다.
Next Post
[CKA] 7. schedule (manual-schedule, labels, taint, toleration)
'Cloud > k8s-CKA' 카테고리의 다른 글
[CKA] 8. schedule (Node Selector, Node Affinity) (0) | 2023.02.11 |
---|---|
[CKA] 7. schedule (nodeName, taint, toleration) (0) | 2023.02.02 |
[CKA] 5. namespace (0) | 2023.01.24 |
[CKA] 4. Service (0) | 2023.01.20 |
[CKA] 3. ReplicaSet & Deployments (0) | 2023.01.11 |