리소스 조회
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 |