본문 바로가기

GitOps/Kubernetes

[Kubernetes] 리소스

리소스

  • 기본 개념 및 리소스 종류들은 해당 글에서

Manifest file

  • 클러스터에서 리소스를 정의하고 관리하는 데 사용되는 구성 파일
  • 주로 YAML로 작성됨
  • 파드, 서비스, 볼륨 등의 리소스 생성, 수정, 삭제 등의 방법 지시

파일 구조

  • apiVersion: API 버전 정보
  • kind: 리소스 종류
  • metadata: 리소스 메타데이터 (이름, 네임스페이스, 레이블 등)
  • spec: 리소스 상세 정보 (컨테이너, 포트 등)

pod manifest 예시

apiVersion: v1
kind: Pod
metadata:
 name: nginx-pod
 labels:
   app: nginx
spec:
 containers:
 - name: nginx
   image: nginx:1.14.2
   ports:
   - containerPort: 80

 

Manifest file 예제

# 위에 작성한 파드 매니페스트를 등록
vi nginx-pod.yaml

# 클러스터에 파드 생성
kubectl apply -f nginx-pod.yaml

# 파드 삭제
kubectl delete -f nginx-pod.yaml

 


Label

  • 리소스에 붙이는 태그
  • 관리를 위해 사용

Label 예제

# label-pods.yaml
apiVersion: v1
kind: Pod
metadata:
  name: label-pod-1
  labels:
    env: development
    app: frontend
    version: v1
spec:
  containers:
  - name: nginx
    image: nginx
---
apiVersion: v1
kind: Pod
metadata:
  name: label-pod-2
  labels:
    env: production
    app: backend
    version: v2
spec:
  containers:
  - name: nginx
    image: nginx

 

# 위의 label-pods.yaml을 붙여넣기
vi label-pods.yaml

# 클러스터에 등록
kubectl apply -f label-pods.yaml

Label로 리소스 조회

# 모든 파드 조회
kubectl get pods

# -l 옵션으로 레이블 기반 조회
kubectl get pods -l version=v1
kubectl get pods -l env=development
kubectl get pods -l app=frontend,version=v1

# 복잡한 쿼리 사용 가능
kubectl get pods -l 'app=frontend,version in (v1,v2)'
kubectl get pods -l 'app!=backend,env=development'

 


네임스페이스

  • 리소스를 논리적으로 분리
  • 가상 디렉토리라고 생각하면 됨
  • 롤베이스로 권한 설정 가능
  • 네임스페이스 내부에서 리소스명은 고유해야 함.
  • Manifest의 metadata에 namespace 속성으로 설정 가능

네임스페이스 예제

# namespace-pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
  namespace: dev-environment
  labels:
    app: nginx
spec:
  containers:
  - name: nginx
    image: nginx:1.14.2

 

# 네임스페이스 확인
kubectl get namespace

# 네임스페이스 생성
kubectl create namespace dev-environment

# 위의 manifest 적용
vi namespace-pods.yaml

# manifest 기반 파드 생성
kubectl apply -f namespace-pods.yaml

# 파드를 네임스페이스로 조회
kubectl get pod --namespace dev-environment

 


그 외 리소스 관련 명령

# resource 조회
kubectl get <resource>

# resource 조회
kubectl get <resource>

# 특정 resource 상세 정보
kubectl describe <resource> <resource-name>

# 모든 리소스 조회
kubectl api-resources

# 네임스페이스 레벨 리소스만 조회
kubectl api-resources --namespaced

# 리소스 정의 설명
kubectl explain <resource>

# 리소스 전체 삭제
kubectl delete <resource> --all

 

'GitOps > Kubernetes' 카테고리의 다른 글

[Kubernetes] 클러스터 생성  (0) 2025.01.14
[Kubernetes] 개념  (0) 2025.01.13