리소스
- 기본 개념 및 리소스 종류들은 해당 글에서
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 |