본문 바로가기
개발 이야기/Kubernetes

kubectl 자주 쓰는 명령어 정리

by 농개 2024. 3. 9.
반응형

kubectl쿠버네티스 클러스터 사용을 위한 CLI(Comand Line Interface)입니다.

이번 포스팅에서는 실무에서 자주 사용하는 kubectl을 정리해봅니다.

 

1. 설치

만약 로컬 환경에 minikube 설치 또는 kubernetes on docker desktop 활성화가 되어있다면

따로 설치할 필요가 없습니다.

 

만약 쿠버네티스 클러스터가 외부에 있다면

공식 홈에서 설치 가능합니다.

출처: https://kubernetes.io/ko/docs/tasks/tools/install-kubectl-macos/

 

설치가 완료되었다면

아래처럼 로컬 PC에서 kubectl 사용 가능합니다.

 ~ kubectl version
Client Version: v1.29.2
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
Server Version: v1.28.3

 

 

2. 클러스터 정보 확인

kubectl config view

 ~ kubectl config view
apiVersion: v1
clusters:
- cluster:
    certificate-authority: /Users/my/.minikube/ca.crt
    extensions:
    - extension:
        last-update: Sat, 09 Mar 2024 13:04:26 KST
        provider: minikube.sigs.k8s.io
        version: v1.32.0
      name: cluster_info
    server: https://127.0.0.1:49499
  name: minikube
contexts:
- context:
    cluster: minikube
...(생략)

 

 

3. Nodes/Services/Pods/Endpoints 확인

kubectl get

kubectl get nodes 					# 노드정보 확인
kubectl get deployment				# 디플로이 확인
kubectl get svc   					# 서비스 확인, 기본적으로 네임스페이스 명시 안하면 default를 조회
kubectl get svc -A					# 서비스 확인, -A 옵션은 모든 네임스페이스를 조회
kubectl get svc -n ingress-nginx 	# 서비스 확인, 네임스페이스 명시
kubectl get po						# 파드 확인
kubectl get ep						# 엔드포인트 확인
kubectl get all -n ingress-nginx	# 노드,서비스,파드 등 모든 정보 확인

 

 

4. yml 파일 적용

kubectl apply

kubectl apply -f {fileName.yml}

 

 

5.  yml 적용 상태 확인

kubectl get svc springboot-app-svc -o yaml   # springboot-app-svc라는 서비스 적용 상태 확인
apiVersion: v1
kind: Service
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"name":"springboot-app-svc","namespace":"default"},"spec":{"ports":[{"name":"svc-port","port":8080,"targetPort":8080}],"selector":{"app":"springboot-app"},"type":"ClusterIP"}}
  creationTimestamp: "2024-03-02T12:04:03Z"
  name: springboot-app-svc
  namespace: default
  resourceVersion: "21021"
  ...(생략)

 

 

6. 파드 원격 접속

kubectl exec

 ~ kubectl exec -it springboot-app-xkcsn /bin/bash   # springboot-app-..는 파드 이름
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
bash-4.2#

# 위 명령어는 곧 Deprecated된다. 아래를 쓰는 것 좋음.
 ~ kubectl exec -it springboot-app-xkcsn -- /bin/bash

 

7. 파일 복사

kubectl cp

kubectl cp logs.txt springboot-app-9f9d497f-xkcsn:/opt/logs.txt 	# 로컬 to 파드
kubectl cp springboot-app-9f9d497f-xkcsn:/opt/logs.txt ./logs.txt 	# 파드 to 로컬

# 또다른 방법
kubectl exec -n {네임스페이스} {파드명} -- cat {파일명 경로포함} > {파일명}

 

반응형