1. 기존 Pod에서 직접 수정 가능한 것
실행 중인 기존 Pod는 아무 필드나 수정할 수 있는 게 아님.
아래만 수정 가능함.
- spec.containers[*].image
- spec.initContainers[*].image
- spec.activeDeadlineSeconds
- spec.tolerations
즉 보통은 image 변경 정도만 바로 수정 가능하다고 생각하면 됨.
2. 기존 Pod에서 직접 수정 불가능한 것
예를 들어 아래는 실행 중인 Pod에서 직접 수정 불가함.
- environment variables
- service account
- resource limits
즉 이런 값들을 바꾸려면 Pod를 다시 만들어야 함.
3. Pod 수정 방법 1
kubectl edit pod <pod-name>
kubectl edit pod webapp
이 명령을 실행하면 Pod YAML이 editor로 열림.
수정 후 저장하려고 하면,
수정 불가능한 필드를 바꾼 경우 저장이 거부됨.
하지만 수정한 파일은 임시 경로에 저장됨.
그 다음 순서는:
기존 Pod 삭제
kubectl delete pod webapp
임시 파일로 새 Pod 생성
kubectl create -f /tmp/kubectl-edit-ccvrq.yaml
4. Pod 수정 방법 2
기존 Pod YAML 추출
kubectl get pod webapp -o yaml > my-new-pod.yaml
파일 수정
vi my-new-pod.yaml
기존 Pod 삭제
kubectl delete pod webapp
수정한 파일로 새 Pod 생성
kubectl create -f my-new-pod.yaml
5. Pod 수정 핵심 흐름
직접 수정 안 되는 필드를 바꾸고 싶으면 흐름은 항상 비슷함.
- YAML 추출 또는 edit
- 수정
- 기존 Pod 삭제
- 새 Pod 생성
즉 Pod는 재생성 방식으로 수정하는 경우가 많음
6. Deployment 수정
Deployment는 Pod와 다름.
Deployment는 Pod template를 수정할 수 있음.
즉 Deployment spec 안의 Pod template를 수정하면, Deployment가 자동으로 새 Pod를 다시 만들어줌.
명령어
kubectl edit deployment my-deployment
이렇게 수정하면 Deployment가 알아서:
- 기존 Pod 삭제
- 새 설정으로 Pod 재생성
을 수행함.
7. 왜 Deployment는 쉬운가
Deployment 아래의 Pod는 직접 관리 대상이 아니라
Deployment가 관리하는 Pod template를 바탕으로 생성된 것임.
그래서 Pod 자체를 직접 고치는 것보다,
Deployment를 수정하는 게 정석임.
'Infra > K8S' 카테고리의 다른 글
| [CKA 준비] Scheduling (0) | 2026.04.11 |
|---|---|
| [CKA 준비] Core Concepts - 3 (0) | 2026.03.15 |
| [CKA 준비] - Core Concepts - 2 (0) | 2026.03.15 |
| [CKA 준비] Core Conecepts - 1 (4) | 2026.03.04 |
| KEDA 필요성, HPA 와의 차이점 (0) | 2026.01.18 |