개발 창고/Server

kubectl 기본명령어: 쿠버네티스 제어의 시작

Royzero 2025. 7. 17. 22:00
반응형

들어가며

쿠버네티스를 설치했다면, 이제는 kubectl을 자유자재로 다루는 것이 필수입니다.
kubectl은 Kubernetes 클러스터와 상호작용할 수 있는 가장 핵심적인 CLI 도구입니다.

Kubernetes를 운영한다는 건 결국, kubectl 명령어로 리소스를 만들고, 조회하고, 수정하고, 삭제하는 일의 연속입니다.

이번 시간에는 반드시 알아야 할 kubectl의 기본 명령어를 정리하고, 각 명령어가 어떤 상황에서 사용되는지를 예시와 함께 설명드리겠습니다.


1. kubectl 구조 이해하기

kubectl의 기본 명령어 구조는 다음과 같습니다.

kubectl [command] [type] [name] [flags]
구성 요소 설명
command get, describe, create, delete, apply 등
type pod, service, deployment, node 등 리소스 유형
name 리소스 이름 (생략하면 전체 대상)
flags 옵션. 예: -n, -o, --watch

예시

kubectl get pods
kubectl describe node my-node
kubectl delete pod nginx-pod

2. 클러스터 상태 조회

1) 노드 확인

kubectl get nodes

노드의 현재 상태를 확인합니다.

NAME        STATUS   ROLES           AGE   VERSION
master      Ready    control-plane   10d   v1.29.0
worker-01   Ready    <none>          10d   v1.29.0

2) 파드 확인

kubectl get pods
kubectl get pods -A   # 모든 네임스페이스의 파드 확인

3) 서비스 확인

kubectl get svc

서비스 IP, 타입, 포트 등을 확인할 수 있습니다.


4) 디플로이먼트 확인

kubectl get deployment

현재 배포된 앱의 상태, 복제 수 등을 확인합니다.


3. 리소스 상세 정보 확인

1) describe

kubectl describe pod [POD_NAME]
kubectl describe node [NODE_NAME]

오브젝트의 상태, 이벤트, 라벨 등을 상세히 보여줍니다.


2) YAML 형태로 보기

kubectl get pod [POD_NAME] -o yaml

실제 리소스 정의 파일을 확인하는 데 유용합니다.


4. 리소스 생성

1) YAML 파일을 통한 생성

kubectl apply -f deployment.yaml

보통의 실무에서는 수동 명령어보다는 apply -f로 배포 자동화를 합니다.


2) 명령어 기반 생성 (간단 테스트 용도)

kubectl run nginx --image=nginx

위 명령어는 nginx 이미지를 이용해 하나의 Pod를 생성합니다.


5. 리소스 수정

1) 명령어 기반 수정

kubectl edit deployment [DEPLOY_NAME]

기본 에디터(Vim 등)로 YAML을 열고 직접 수정합니다.


2) 적용된 YAML 재적용

kubectl apply -f updated-deployment.yaml

변경된 YAML을 적용하여 리소스를 업데이트합니다.


6. 리소스 삭제

kubectl delete pod [POD_NAME]
kubectl delete -f deployment.yaml
  • 특정 리소스를 삭제하거나
  • YAML로 생성된 리소스를 파일로 삭제

7. 실시간 모니터링

1) watch 옵션

kubectl get pods --watch

실시간으로 Pod의 상태 변화를 확인할 수 있습니다.


2) 로그 확인

kubectl logs [POD_NAME]

컨테이너의 표준 출력 로그를 확인할 수 있습니다.

멀티 컨테이너 Pod일 경우:

kubectl logs [POD_NAME] -c [CONTAINER_NAME]

8. 네임스페이스 활용

특정 네임스페이스 조회

kubectl get pods -n my-namespace

네임스페이스 생성

kubectl create namespace dev

기본 네임스페이스 설정

kubectl config set-context --current --namespace=dev

9. 오토컴플리션 설정 (선택 사항)

bash/zsh 환경에서 자동 완성을 사용하면 편리합니다.

source <(kubectl completion bash)

혹은 .bashrc.zshrc에 추가


10. 핵심 명령어 요약

목적 명령어
클러스터 상태 확인 kubectl get nodes, kubectl cluster-info
리소스 조회 kubectl get pods, get svc, get deployments
리소스 상세보기 kubectl describe pod [name], -o yaml
리소스 생성 kubectl apply -f [file].yaml
리소스 수정 kubectl edit [type] [name]
리소스 삭제 kubectl delete pod [name], delete -f [file].yaml
로그 보기 kubectl logs [pod]
네임스페이스 전환 kubectl config set-context --current --namespace=[name]

마무리

kubectl은 쿠버네티스 생태계에서 가장 많이 사용하는 도구입니다.
이 명령어들을 자유롭게 다루는 것만으로도 Kubernetes 환경을 제어할 수 있고, 더 나아가 자동화 스크립트와 연계하여 DevOps의 기반을 마련할 수 있습니다.

이번 글에서 소개한 명령어들을 직접 실습해보시고, 손에 익히는 것이 가장 중요합니다.

kubectl-basic-commands

반응형