- 변경사항만 적용: 기존 리소스의 설정을 수정하거나 추가할 때 유용합니다.
- 선언적 업데이트: 리소스의 전체 정의를 제공하고 Kubernetes가 필요한 변경을 파악해 적용합니다.
kubectl apply -f sample-deployment.yaml
kubectl rollout restart deployment sample-deployment.yaml
항목 |
kubectl apply -f |
kubectl rollout restart |
동작 조건 |
YAML 내용이 바뀌었을 때만 작동 |
무조건 강제 재시작 |
사용 목적 |
상태를 선언적으로 관리 |
상태는 그대로 두고 재시작만 |
변경 없이 재시작 가능? |
❌ 불가능 |
✅ 가능 |
ConfigMap 변경 반영? |
✅ 단, Pod template에 마운트되어 있어야 함 |
✅ 강제 재시작으로 반영 가능 |
실사용 예시 |
버전 변경, 리소스 수정 등 |
Secret/ConfigMap 수정 후 재시작 필요 시 |
Rolling Update 적용 방식 |
변경 시에만 적용 |
항상 Rolling Update로 Pod 재생성 |
상황 |
어떤 명령어 사용 |
php 버전을 8.2 → 8.3으로 바꿨음 |
kubectl apply -f |
ConfigMap만 바꿨는데 적용이 안 됨 |
kubectl rollout restart |
디버깅 중 nginx만 재시작하고 싶음 |
kubectl rollout restart deployment nginx-phpfpm-deployment |
YAML 정의를 GitOps처럼 선언적으로 유지 |
kubectl apply -f (주로 CI/CD에서 사용) |
- 새 리소스 생성: 존재하지 않는 새 리소스를 만드는 데 사용됩니다.
- 명시적 생성: 명령어가 호출될 때 리소스가 생성됩니다.
kubectl create -f my-custom-nginx.yaml // yaml에 정의된 pod 생성
kubectl exec -it <podname> -n namespace -- <command> -<arguments-as-per-command>
kubectl exec -it [pod name] -- /bin/bash // pod의 default container의 콘솔 접근
kubectl exec -it [pod name] -c [container name] -- /bin/bash // 1개 이상의 container가 pod 내에 있을 경우 각각의 container 접근법
옵션 |
설명 |
-c , --container |
대상 컨테이너 지정 (Pod에 여러 개의 컨테이너가 있을 경우 필수) |
-i , --stdin |
표준 입력(STDIN)을 활성화 (예: bash에서 키보드 입력) |
-t , --tty |
TTY를 할당 (터미널 인터페이스 제공) |
--pod-running-timeout |
Pod이 준비될 때까지 기다리는 시간 (기본 1분) |
--namespace |
사용할 네임스페이스 설정 (기본은 default ) |
--context |
kubeconfig에서 사용할 context 지정 |
--kubeconfig |
특정 kubeconfig 파일 사용 |
--quiet |
실행 결과 출력 억제 |
--help |
사용법 도움말 출력 |
kubectl delete pod [pod name] // pod 삭제
kubectl delete --all pods --namespace=foo
kubectl delete deployment [deployment name]
kubectl delete svc [service name]
kubectl delete pvc [pvc name]
kubectl delete persistentvolumeclaim [pvc name]
kubectl delete pv [pv name]
kubectl delete statefulset [statefulset name]
kubectl delete clusterrolebinding [clusterrolebinding name]
kubectl describe pod {POD NAME} -n {namespace} // 현재 pod의 상태를 보여준다.
kubectl describe svc {Service NAME}
kubectl get all // 일반적인 리소스(pod, svc, deployment, etc.)는 가져올 수 있습니다. (ConfigMap, PVC, Ingress, Secret 등은 포함하지 않습니다.)
kubectl get nodes
kubectl get pod [pod name] // pod 정보 출력
kubectl get pods // 생성된 pod list up
kubectl get pods -o wide // pods의 상세 리스트
kubectl get deployment
kubectl get configmaps
kubectl get services
kubectl get persistentvolume
kubectl get pv
kubectl get persistentvolumeclaim
kubectl get pvc
kubectl get clusterrolebindings
kubectl logs [pod name] // pod name에 대한 logs를 디스플레이
kubectl logs [pod name] --container [container name] // pod name에 포함된 container name의 log
kubectl logs [pod name] -c [container name]
kubectl logs [pod name] --previous --tail 10
kubectl logs deployment/[deployment name] // deployment 의 로그 디스플레이
kubectl port-forward [pod name] 8888:80 //외부의 8888 포트를 컨테이너내의 80 포터로 변경