DevOps/Kubernetes

쿠버네티스 - kubectl (기본 명령어)

재성스 2024. 10. 4. 16:46
반응형

kubectl은 Kubernetes 클러스터와 상호작용하는 명령어 도구로, 클러스터의 리소스를 관리하고 제어하는 데 사용된다. kubectl을 통해 pod, service, node 등의 오브젝트를 생성하고, 상태를 조회하며, 삭제할 수 있다. 

kubectl 기본 명령어 

Create

  • 리소스를 생성하는 명령어다. 
  • 보통 yaml 파일을 통해 Kubernetes 오브젝트의 정의를 작성하고, kubectl create 명령을  사용해 해당 리소스를 클러스터에 배포한다.
  • 이 명령은 한 번만 리소스를 생성한다. 이미 존재하는 리소스를 수정하려면 apply를 사용해야 함
kubectl create -f ./pod.yaml  # YAML 파일을 사용해 리소스를 생성.

예: pod.yaml 파일에 정의된 파드를 클러스터에 생성한다.

  • kubectl create는 새로운 리소스를 정의하고 배포할 때 사용한다. 예를 들어, Pod, Deployment, Service 등을 생성할 수 있다. 만약 동일한 이름의 리소스가 이미 존재하면, 리소스를 생성하지 않고 오류가 발생한다.

 

Apply

  • 리소스를 생성하거나 업데이트할 때 사용하는 명령어다
  • 이미 존재하는 리소스가 있으면, 그 리소스를 업데이트하고 없으면 새로 생성한다. 
kubectl apply -f ./pod.yaml

예: pod.yaml에 정의된 파드를 클러스터에 적용한다. 만약 파드가 이미 존재한다면, 정의된 내용에 맞게 파드가 업데이트된다. 

 

Get

  • 현재 클러스터 내에서 실행 중인 리소스의 목록을 조회하는 명령어다. 
  • pod, service, node 등의 상태를 확인할 수 있고, 특정 네임스페이스에서만 조회하거나 추가 정보를 포함해 출력할 수도 있다.
kubectl get pods  # 현재 실행 중인 파드 목록을 확인.
kubectl get pods -A # 현재 실행 중인 모든 파드 목록을 확인
kubectl get pods -o wide  # 파드의 추가 정보를 포함한 상태를 출력.

예 : 클러스터 내에서 실행 중인 모든 파드의 상태를 조회한다. -o wide 옵션을 사용하면 파드의 IP 주소나 노드 정보 등 더 많은 정보를 볼 수 있다.

 

Describe

  • 특정 리소스의 상세 정보를 확인하는 명령어다. 
  • 리소스가 어떤 이유로 실행되지 않거나, 상태에 문제가 있을 때, 이 명령어를 통해 파드나 노드의 이벤트 로그, 상태, 관련 메타데이터 등의 세부 정보를 확인할 수 있음
kubectl describe pod pod1  # pod1의 상세 상태 정보를 확인.

예: pod1이라는 이름의 파드이 상세 상태를 조회해서 파드가 실행되는지, 문제가 있는지, 어떤 이벤트가 발생했는지 등을 확인한다. 

  • describe는 pod에 문제가 발생했을 때 활용하기 좋다. 파드가 실패하거나, 상태가 Pending에 머물러 있을 때 이 명령어를 통해 원인을 어느정도 파악할 수 있다.
  • 이벤트 로그는 특정 시간에 무슨 일이 있었는지를 명확하게 보여준다.

 

Delete

  • 리소스를 삭제하는 명령어다.
  • 생성할 때 사용한 yaml 파일을 그대로 사용해 리소스를 삭제할 수 있으며, 특정 리소스 이름을 직접 지정하여 삭제할 수 있음
kubectl delete -f ./pod.yaml  # YAML 파일로 정의된 리소스를 삭제.
kubectl delete pod pod1  # pod1이라는 이름의 파드를 삭제.

예: pod.yaml로 생성된 파드를 삭제하거나, 이름이 pod1인 파드를 삭제한다.

 

Exec

  • 실행 중인 파드 내부에 접속하여 컨테이너 안에서 명령을 실행할 수 있는 명령어다.
  • 파드 내에서 컨테이너의 상태를 확인하거나, 디버깅 목적으로 사용된다.
kubectl exec pod1 -it /bin/bash  # pod1 내부에 접속하여 bash 쉘 실행.
kubectl exec pod1 -c con1 -it /bin/bash  # 컨테이너 con1에 접속.

예: pod1의 내부로 접속하여 bash 쉘을 실행한다. 컨테이너가 여러 개 있을 경우, -c 옵션으로 특정 컨테이너를 선택해서 접속할 수 있다.

 

반응형