Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- servicemesh
- 노드포트
- createvsapply
- 이미지풀시크릿생성
- ingresscontroller
- kubernetes
- 프라이빗레지스트리
- k8s
- 원격서버지원
- apply
- 쿠버네티스 인그래스 컨트롤러 구성 예시
- 인그래스
- clustermanagement
- servertimesync
- 쿠버네티스
- ingress
- 포트추적
- 인그래스컨트롤러
- ingressservice
- kubectl
- chrony
- ingressrules
- timesynchronization
- 도커프라이빗레지스트리
- nodeport
- networktimeprotocol
- 인증서설치후 런타임 재시작
- 여러 레지스트리를 하나의 시크릿으로 묶고
- 컨테이너런타임 재시작
- 쿠버네티스 구조
Archives
- Today
- Total
madebychung
📌 kubectl apply vs create 차이점 정복 본문
📌 kubectl apply vs create 차이점 정복 (실습 포함)
쿠버네티스를 막 시작한 사람이라면 kubectl apply랑 kubectl create의 차이 때문에 혼란스러울 수 있습니다.
두 명령어는 리소스를 "만든다"는 점에서는 비슷하지만, 실제 사용 목적과 동작 방식은 확연히 다릅니다.
🧠 개념 먼저: create vs apply 차이
| 항목 | kubectl create | kubectl apply |
|---|---|---|
| 목적 | 리소스 최초 생성 | 리소스 생성 및 이후 업데이트 |
| 상태 추적 | 없음 | .last-applied-configuration 주석으로 상태 추적 |
| 덮어쓰기 | 불가 (이미 있으면 오류) | 가능 (변경사항만 반영) |
| 선언적 관리 | ❌ 명령형 | ✅ 선언형 (YAML 중심) |
| 사용 예 | 초기 리소스 배포 | 배포 후 설정 변경 관리 |
🧪 실습으로 이해하기
📄 Step 1. 테스트용 deployment.yaml 만들기
# nginx-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deploy
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.21
ports:
- containerPort: 80
▶️ Step 2. kubectl create 로 배포
kubectl create -f nginx-deploy.yaml
결과: 리소스가 생성됩니다. 하지만 다시 실행하면 Error from server (AlreadyExists) 오류가 발생합니다.
🛠 Step 3. 이미지 버전 수정 후 다시 create 실행
image: nginx:1.25
kubectl create -f nginx-deploy.yaml
결과: 여전히 실패. 이미 존재하므로 create 로는 수정 불가합니다.
✅ Step 4. 이번엔 apply 로 실행
kubectl apply -f nginx-deploy.yaml
결과: 기존 리소스를 감지하고 수정된 부분만 반영됩니다. (롤링 업데이트 수행됨)
📌 언제 create, 언제 apply?
| 상황 | 추천 명령어 | 이유 |
|---|---|---|
| 리소스 처음 만들 때 | kubectl create |
간단하게 생성 가능 |
| 여러 번 배포/변경 예정 | kubectl apply |
선언형 방식에 최적화 |
| GitOps 또는 CI/CD 연동 | kubectl apply |
코드 기반 관리에 적합 |
| 덮어쓰기 방지 필요 | kubectl create |
이미 있으면 오류 발생시켜줌 |
🚨 apply 실수 방지 팁
- YAML은 Git으로 관리하는 습관 들이기
kubectl edit로 직접 수정 후 apply 하면 충돌 위험 있음- 수정은 항상 YAML → apply로 반영
✅ 한 줄 요약
create는 "처음 만들 때", apply는 "만들고 계속 관리할 때" 쓴다.
'K8s' 카테고리의 다른 글
| 📌 kubectl describe로 리소스 상태 추적하는 방법 (0) | 2025.04.08 |
|---|---|
| kubectl apply로 리소스를 업데이트할 때 실제로 어떤 정보가 어떻게 바뀌는가?(apply, patch) (0) | 2025.04.08 |
| 🧩 쿠버네티스 구조: kubectl 명령어가 처리되는 전체 흐름도 + 구성 요소 역할 (0) | 2025.04.07 |
| Kubernetes Ingress Controller 설정 및 확인 방법 (0) | 2024.12.11 |
| k8s- kubelet cgroupv2오류 (0) | 2024.09.19 |