본문 바로가기

Kubernetes

쿠버네티스 명령어 정리 (kubectl) 및 yaml

리소스 조회

kubectl get <리소스> # pod, deployment, service 등

kubectl get pod
kubcetl get deployment
kubectl get service

# 상세 조회
kubectl get <리소스> -o wide

kubectl get pod -o wide

리소스 디버그

Pod의 상태를 봤을 때 오류가 발생한 경우 다음과 같이 원인을 찾을 수 있습니다.

kubectl describe pod <pod명>

컨테이너의 로그까지 봐야되는 경우

kubectl logs <pod명> -f

리소스 삭제

kubectl delete <리소스> <리소스명>

kubectl delete pod my-pod
kubectl delete service my-svc

# 일괄 삭제 --all
kubectl delete pod --all
kubectl delete deployment --all

리소스 생성 및 적용

Kubernetes에서 리소스를 명령어로 직접 배포하는 경우는 거의 없으며, 대부분 yaml 파일을 작성하여 배포합니다.

kubectl apply -f <yaml파일>

대표적인 리소스 Pod, Deloyment, Service의 yaml 구조를 알아보겠습니다.

Pod

Pod는 단독으로 생성하는 경우가 잘 없고 주로 Deployment에서 Pod 정의를 함께 하기에 Deployment에서 함께 알아보겠습니다.

Deployment

* name과 labels의 차이

name : 쿠버네티스 리소스를 식별하는 namespace 내에서 고유한 이름. 명령에서 직접 사용하는 식별자

label: 타 리소스(Service, Job 등)가 해당 리소스를 선택할 때 이 라벨을 바탕으로 선택. 그룹 관리 용도로도 사용

apiVersion: v1
kind: Deployment
metadata:
  name: my-deployment
  labels:
    key: value

spec:
  replicas: 2 # 생성(유지)할 Pod의 개수

  strategy:
    type: RollingUpdate # 기본값 롤링 업데이트

  # selector : 어떤 Pod를 Deployment에서 관리할 것인지
  selector:
    matchLabels:
      app: my-pod # Deployment의 관리 대상 Pod

  # 생성할 Pod 정보 ( 주로 Deployment에서 Pod를 함께 정의합니다. )
  template:
    metadata:
      labels:
        app: my-pod # 생성될 Pod에 붙일 라벨

    spec: # Pod의 스펙 정의
      containers:
        - name: my-app # 컨테이너 이름
          image: nginx:latest # 사용할 컨테이너 이미지
          ports:
            - containerPort: 80

Service

Service 생성 명령어 ( 임시 방편 )

kubectl expose deployment deploy-lab --name=svc-lab --type=NodePort --port=80 --target-port=8080

Service 생성 템플릿 ( 정석 )

apiVersion: v1
kind: Service
metadata:
  name: myapp-service
spec:
  type: ClusterIP
  selector:
    app: myapp
  ports:
    - port: 80
      targetPort: 80

'Kubernetes' 카테고리의 다른 글

쿠버네티스 네트워크  (0) 2025.12.12
쿠버네티스 볼륨  (0) 2025.12.10
쿠버네티스 아키텍처  (0) 2025.12.09
쿠버네티스 개념 및 용어 정리  (0) 2025.12.08
쿠버네티스 VMware 실습 환경 세팅  (0) 2025.12.05