DevOps/Kubernetes

[K8S] k8s 정리 - (11) Kubernetes 명령어 (kubectl)

yubi5050 2022. 9. 10. 21:55

이전 글에서는 Kubernetes의 Service와 그 근간인 kube-proxy에 대해 알아보았습니다.

https://yubi5050.tistory.com/182

 

[K8S] k8s 정리 - (10) Kubernetes Service와 kube-proxy

이전 글에서는 Kubernetes의 Volume의 emptyDir, hostPath 개념과, PV/PVC 추상화 개념에 대해 알아보았습니다. https://yubi5050.tistory.com/181 [K8S] k8s 정리 - (9) Kubernetes Volume (PV, PVC, emptyDir,..

yubi5050.tistory.com

이번 글에서는 Kubernetes kubectl 명령어에 대해 알아보려고 합니다.

 

kubectl 이란?

Kubectl은 쿠버네티스 클러스터를 제어하기 위한 커맨드 라인 도구로, 클러스터 외부의 사용자 컴퓨터에 설치 가능

 

📌 kubectl 역할

  • 쿠버네틱스 자원들의 생성, 업데이트, 삭제 (create, update, delete)
  • 디버그 모니터링, 트러블 슈팅 (log, exec, cp, top, attach)
  • 클러스터 관리 (cordon, top, drain, taint 등)

 

kubectl 명령어

📌 명령어 기본형

kubectl [command] [type] [name] [flags]

  • command : 자원에 실행하려는 동작 (create, get, delete)
  • type : 자원 타입 (pod, service, ingress 등)
  • name : 자원 이름
  • flags : 부가적으로 설정할 옵션  ex) -s, --server

 

📌 kubectl 조회 관련 명령어

  • kubectl api-resources : 사용 가능한 API 리소스 나열 (약어 정보 등)
  • kubectl cluster-info : 클러스터의 마스터와 서비스에 대한 엔드포인트 정보를 표시
  • kubectl describe : 하나 이상의 리소스의 자세한 상태를 표시
  • kubectl get : 선택된 리소스의 정보 리스트를 확인
  • kubectl logs <pods> : 선택한 POD 의 Logs 확인
  • kubectl explain : 리소스(pod, node, service)에 대한 documentation 확인

 

📌 kubectl 동작 관련 명령어

  • kubectl create : 파일이나, 명령어 입력을 통해 리소스 생성
  • kubectl apply : 해당 resource의 구성 변경 사항 적용, no base서 실행시 다켜짐
  • kubectl expose : 레플리케이션 컨트롤러/서비스/파드를 쿠버네티스 서비스로 노출
  • kubectl run [name] [images] [flags] : 클러스터내 특정 이미지 run
  • kubectl delete  [pod/service] [pod이름/service이름] : 리소스를 삭제
  • kubectl attach [pod 내 컨테이너] : 실행 중인 컨테이너에 접속
  • kubectl exec [pod] : 해당 pod 에 명령어 실행
  • kubectl patch : 리소스의 일부 attribute를 수정, 적용

 

 

📌 kubectl 변경 관련 명령어

  • kubectl edit : 동작중인 api-resources 수정시 사용
  • kubectl scale : 레플리케이션 컨트롤러의 관리하는 파드 집합 자동 조정
  • kubectl port-forward : port-forwarding 관련 명령어
  • kubectl proxy : 쿠버네틱스 내 프록시 설정

 

 

kubectl 명령어 세부 설명

📌 kubectl get pods

 

kubectl get pods

  • NAME : 파드 이름
  • READY : 파드의 준비상태 (0/1 : 파드는 생성 됬으나 사용 준비x, 1/1 : 파드 생성 및 준비 완료)
  • STATUS : 파드 상태 (Running :실행 중, Terminating : 삭제 중, Container Creating : 생성 중)
  • RESTARTS : 재시작횟수 (파드는 자동 재시작 되므로)
  •  AGE : 파드 생성 후 경과 시간

 

📌 kubectl get services

 

kubectl get services, kubectl get svc

  • NAME : 서비스 이름
  • TYPE : 서비스 타입
  • CLUSTER-IP : 클러스터 내 IP
  • EXTERNAL-IP : 클러스터 외부에서 접속시 사용되는 ip
  • PORTS: 해당 서비스 접속 port
  • AGE: 자원 생성 후 지난 시간

 

📌 kubectl get deployments

 

kubectl get deployments

  • NAME : 클러스터에 배포한 디플로이먼트 이름
  • READY : 사용자가 최종 배포한 파드 개수와 현재 클러스터에 동작중인 파드 갯수
  • UP-TO-DATE : 디플로이먼트 설정에 정의한 신규 파드 갯수
  • AVAILABLE : 서비스 가능한 파드 갯수
  • AGE : 디플로이먼트 생성 후 지난 시간

  

📌 kubectl get nodes

 

kubectl get nodes

  • NAME : 클러스터의 node 이름
  • STATUS : 노드 상태
  • ROLES : 노드의 역할
  • AGE : 노드 생성 후 지난 시간
  • VERSION: 도커 Version

 

 

📌 kubectl get namespaces

 

kubectl get namespaces

  • STATUS : namespace 상태
  • AGE : namespace 생성 후 지난 시간
  • NAME : 클러스터에 설정한 namespace 이름 위의 4개는 k8s에서 기본적으로 생기는 namespace
    kube-system : 쿠버네티스 시스템에서 관리하는 namespace, 쿠버네티스 관리용 파드나 설정
    kube-public : 클러스터 안 모든 사용자가 읽을 수 있는 네임스페이스
    kube-node-leases : 각 노드의 임대 오브젝트들을 관리하는 네임스페이스

 

마무리

이번 글에서는 Kuberenetes의 kubectl 명령어에 대해 알아보았습니다. 다음 글에서는 Kuberenetes의 template 파일 (yaml) 작성에 대해 정리해보도록 하겠습니다.