K8s

kubectl

Tech Crunchy 2025. 3. 29. 18:47
728x90

개요

kubectl은 쿠버네티스 클러스터 관리를 위한 커맨드라인 인터페이스입니다. kubectl에서 지원하는 명령은 아래와 같이 구분됩니다.

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

 

사용법

kubectl은 아래 형식으로 명령을 작성합니다.

kubectl {command} {TYPE} {NAME} {flags}
  • command: 자원에 실행하는 동작 (create, get, delete, ...)
  • TYPE: 자원 타입 (pod, service, ingress, ...)
  • NAME: 자원 이름
  • flags: 부가적 설정 옵션

기본적으로 kubeconfig ($HOME/.kube/config) 파일에서 클러스터, 인증, 컨텍스트 정보를 읽습니다.

 

리소스 생성 및 수정

# 신규 Pod 생성
kubectl run {pod_name} --image={image_name}

# YAML 파일에 정의된 리소스를 생성하거나 업데이트
kubectl apply -f {filename}.yaml

# 지정된 이름과 이미지를 사용하여 새로운 Deployment를 생성
kubectl create deployment {name} --image={image}

# 기존 Deployment를 편집
kubectl edit deployment {deployment_name}

kubectl run 예시

 

리소스 조회

# 현재 네임스페이스의 모든 Pod 목록을 조회
kubectl get pods

# 모든 네임스페이스의 Pod 목록을 조회
kubectl get pods --all-namespaces

# 클러스터의 모든 노드 목록을 조회
kubectl get nodes

# 현재 네임스페이스의 모든 서비스 목록을 조회
kubectl get svc

# 현재 네임스페이스의 모든 Kubernetes 객체를 조회
kubectl get all

 

리소스 상세 정보 확인

# 특정 Pod의 상세 정보를 확인
kubectl describe pod {pod_name}

# 특정 노드의 상세 정보를 확인
kubectl describe node {node_name}

 

리소스 삭제

# 특정 Pod를 삭제
kubectl delete pod {pod_name}

# 특정 노드를 삭제
kubectl delete node {node_name}

 

디버깅 및 로그

# 특정 Pod의 로그를 확인
kubectl logs {pod_name}

# 실행 중인 Pod 내부에서 명령어를 실행하거나 Bash 셀을 오픈
kubectl exec -it {pod_name} -- /bin/bash

 

스케일링 및 롤아웃

# Deployment의 복제본 수를 조정
kubectl scale deployment {deployment_name} --replicas={number}

# Deployment 롤아웃 상태를 확인
kubectl rollout status deployment/{deployment_name}

#  Deployment를 이전 버전으로 롤백
kubectl rollout undo deployment/{deployment_name}

 

네임스페이스 관리

# 클러스터의 모든 네임스페이스 목록을 조회
kubectl get namespaces

# 새로운 네임스페이스를 생성
kubectl create namespace {namespace_name}

# 현재 컨텍스트의 기본 네임스페이스를 설정
kubectl config set-context --current --namespace={namespace_name}

 

모니터링 및 자원 사용량 확인

# Pod별 CPU와 메모리 사용량을 표시
kubectl top pods

# 노드별 CPU와 메모리 사용량을 표시
kubectl top nodes

 

포트 포워딩 및 클러스터 정보

# 로컬 포트를 Pod의 포트로 포워딩하여 접근할 수 있게 함
kubectl port-forward {pod_name} {local_port}:{pod_port}

# 클러스터 API 서버와 기본 정보를 표시
kubectl cluster-info

 

클러스터 내 가용한 자원 확인

# 클러스터 내 사용할 수 있는 자원 확인
kubectl api-resources
728x90

'K8s' 카테고리의 다른 글

kube-proxy  (0) 2025.04.20
서비스 (Service)  (0) 2025.04.20
컨트롤러 (Controller)  (0) 2025.03.31
포드 (Pod)  (0) 2025.03.31
K8s Cluster 구조  (0) 2025.03.29