🔎 kubectl run에서 -it는 로그를 보기 위해 필요한가?
2026. 2. 21. 15:43ㆍk8s
“kubectl run에서 -it는 로그를 위해 필요한가?”
운영자 관점에서 오해 정리 중심으로 써줄게.
티스토리에 바로 올려도 자연스럽게 읽히도록 구성한다.
Kubernetes에서 테스트용 Pod를 실행할 때 이런 명령을 자주 사용한다.
kubectl run busybox --image=busybox -it --restart=Never -- echo "hello world"
여기서 많은 사람들이 궁금해한다.
“-it가 없으면 로그가 안 보이는 건가?”
결론부터 말하면:
❌ 로그 생성을 위해 필요한 옵션은 아니다.
⭕ 터미널에 바로 출력하기 위해 사용하는 옵션이다.
📌 기본 개념 정리
컨테이너의 STDOUT 출력은 항상 로그로 저장된다.
-it는 로그 생성 여부와는 관계가 없다.
-it의 의미는 다음과 같다.
| 옵션 | 의미 |
|---|---|
-i |
STDIN 연결 |
-t |
TTY 할당 |
즉, 현재 터미널과 컨테이너를 직접 연결하는 옵션이다.
1️⃣ -it 없이 실행하면?
kubectl run busybox --image=busybox --restart=Never -- echo "hello world"
동작 흐름:
- Pod 생성
- echo 실행
- 컨테이너 종료
- 출력은 로그로 저장됨
하지만 터미널에는 아무것도 바로 보이지 않는다.
출력을 보려면:
kubectl logs busybox
를 실행해야 한다.
2️⃣ -it를 붙이면?
kubectl run busybox --image=busybox -it --restart=Never -- echo "hello world"
동작 흐름:
- Pod 생성
- STDOUT이 현재 터미널에 연결됨
- 출력이 즉시 표시됨
- 컨테이너 종료
즉,
로그는 항상 생성되지만
-it가 있어야 터미널에 바로 출력된다.
📊 비교 정리
| 구분 | -it 없음 | -it 있음 |
|---|---|---|
| 로그 생성 | O | O |
| 터미널 즉시 출력 | X | O |
| 인터랙티브 가능 | X | O |
🔥 언제 -it가 반드시 필요한가?
1️⃣ 쉘 실행할 때
kubectl run busybox -it --image=busybox --restart=Never -- sh
TTY가 없으면 쉘이 바로 종료될 수 있다.
2️⃣ 인터랙티브 명령 실행
- bash
- sh
- mysql client
- top
- vi
이런 명령들은 TTY가 필요하다.
🧠 운영 관점에서 이해해야 할 것
-it는 로그를 만들기 위한 옵션이 아니다.- STDOUT은 항상 로그로 남는다.
- 단지 터미널에 attach할지 말지의 차이이다.
테스트용 1회성 실행이라면:
kubectl run tmp --image=busybox -it --rm --restart=Never -- echo "hello world"
처럼 사용하는 것이 가장 깔끔하다.
🎯 한 줄 정리
-it는 로그 옵션이 아니라 “터미널 연결 옵션”이다.
이 차이를 이해하면 kubectl run, kubectl exec, kubectl attach의 동작도 자연스럽게 이해된다.
'k8s' 카테고리의 다른 글
| 🏷 Kubernetes 라벨(Label)로 Pod 조회하기 완전 정리 (0) | 2026.02.21 |
|---|---|
| 🌱 kubectl run에서 --env 옵션으로 환경변수 설정하기 (0) | 2026.02.21 |
| 📜 kubectl logs --previous 완전 정리 (컨테이너 재시작 로그 확인 방법) (0) | 2026.02.21 |
| 🔍 kubectl run에서 sh가 필요할 때와 필요 없는 이유 (0) | 2026.02.21 |
| 🔄 Kubernetes Pod 이미지 변경 시 컨테이너 재시작 동작 이해하기 (0) | 2026.02.21 |