Imperative Commands 로 시간 단축하기
January 13, 2026
Imperative Commands
실제로 운영환경에서는 yaml 파일로 declarative하게 운영하는 것이 좋지만, 시험환경에서는 yaml 파일을 작성하는데 시간도 오래걸리고 다시 재사용할 일이 없기 때문에 Imperative 명령어들을 알아두면 시간 단축에 매우 큰 도움이 된다.
run (Pod)
kubectl run nginx --image=nginx
- 시험에서 굳이 yaml 파일을 만들지 않아도 되는 간단한
Pod생성의 경우run명령어 한 줄로 해결할 수 있다.
create (Deployment)
kubectl create deployment --image=nginx nginx
- 시험에서 굳이 yaml 파일을 만들지 않아도 되는 간단한
Deployment생성의 경우create명령어 한 줄로 해결할 수 있다.
kubectl create deployment --image=nginx nginx --replicas=4
- Kubernetes v1.19 이후부터는
--replicas옵션을 줄 수 있다.
expose, create (Service)
kubectl expose pod redis --port=6379 --name redis-service
- 이 명령어를 사용하면
redis라는Pod의label을 확인하고 이를redis-service라는 이름의Service의selector에 자동으로 복사되고 해당Service가 생성된다.
kubectl create service clusterip redis --tcp=6379:6379
- 이 명령어를 사용하면
redis라는 이름의Service가selector속성에서app=redis라고 가정하고 생성된다. create는selector를 지정할 수 없다.--dry-run=client -o yaml과 함께 사용하여selector를 직접 지정하여 사용하는 방법으로 단점을 보완할 수 있다.
kubectl expose pod nginx --type=NodePort --port=80 --name=nginx-service
- 이 명령어를 사용하면
Pod의label이 자동으로selector에 의해 선택되지만,NodePort의 포트 번호는 자동으로 선택(30000-32767)된다. (설정 불가) --dry-run=client -o yaml과 함께 사용하여type을nodePort로 변경하고 노드 포트 번호를 지정하는 식으로 단점을 보완할 수 있다.
kubectl create service nodeport nginx --tcp=80:80 --node-port=30080
- 이 명령어는 반대로
NodePort의 포트 번호는 지정할 수 있지만,selector를 지정할 수 없다. --dry-run=client -o yaml과 함께 사용하여selector를 직접 지정하여 사용하는 방법으로 단점을 보완할 수 있다.
--dry-run=client
kubectl run nginx --image=nginx --dry-run=client -o yaml
kubectl create deployment --image=nginx nginx --dry-run=client -o yaml
- yaml 파일을 만들어야하는 경우,
--dry-run=client명령어로Pod를 직접 생성하지 않고, yaml 기본 템플릿을 자동으로 출력할 수 있다.
kubectl run nginx --image=nginx --dry-run=client -o yaml > nginx-deployment.yaml
kubectl create deployment --image=nginx nginx --dry-run=client -o yaml > nginx-deployment.yaml
- 파일을 저장까지 하려면 위처럼
> 파일이름.yaml로 저장할 수 있다. - 위와 같이 템플릿을 만드는 이유는 yaml 파일의 모든 요소를 기억하기 힘든 것도 있겠지만, Indentation과 같은 사소한 실수를 예방할 수도 있기 때문이다.
kubectl apply -f nginx-deployment.yaml
- 추출한 yaml 파일을 수정하고 적용하여 리소스를 생성할 수 있다.
Remind Commands
시험장에서 Docs에서 찾기 힘들고 기억나지 않는것이 있을 때
kubectl api-resoucres
- 리소스의
apiVersion이나name, 축약어 등이 기억나지 않을 경우 위 명령어 사용
kubectl explain pods
- 특정 리소스의
apiVersion이나metadata,spec등이 기억나지 않을 경우 위 명령어 사용 - 위 명령어는
Pod에 어떤 요소가 들어가는지를 알고싶을 때 사용 (최상위 요소만 나타냄)
kubectl explain pods.spec
- 최상위 요소 하위에 더 자세한 요소가 기억나지 않을경우 위처럼 명령어 사용
- 위 명령어는
Pod의spec에 어떤 요소가 들어가야하는지 기억나지 않을 경우 사용
kubectl explain pods --recursice
- yaml 파일 형식처럼 모든 요소를 보고싶을 경우
- 해당 리소스에서 사용가능한 모든 필드를 출력한다.
- yaml 파일 작성에 도움받을 수 있음
레퍼런스
- https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands
- https://kubernetes.io/docs/reference/kubectl/conventions/
- Udemy - Certified Kubernetes Administrator (CKA) with Practice Tests (Mumshad)