/엔지니어/Docker / 컨테이너/kubectl 기초 — Pod·Deployment·
Docker / 컨테이너중급UbuntuDebianCentOSkuberneteskubectlpod

kubectl 기초 — Pod·Deployment·Service 실전 명령

kubectl로 Pod·Deployment·Service를 생성·조회·수정·삭제하는 핵심 명령과 실무 패턴을 정리합니다.

kubectl 설치 및 설정

Bash
# kubectl 설치 (Linux)
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl && mv kubectl /usr/local/bin/

# 클러스터 컨텍스트 확인
kubectl config get-contexts
kubectl config use-context my-cluster

# 현재 컨텍스트
kubectl config current-context

Pod 기본 명령

Bash
# Pod 목록
kubectl get pods
kubectl get pods -n kube-system        # 네임스페이스 지정
kubectl get pods -A                    # 모든 네임스페이스
kubectl get pods -o wide               # 노드 정보 포함

# Pod 상세 정보
kubectl describe pod my-pod

# Pod 로그
kubectl logs my-pod
kubectl logs my-pod -c my-container   # 멀티컨테이너
kubectl logs -f my-pod                 # 실시간

# Pod 내부 접속
kubectl exec -it my-pod -- bash
kubectl exec -it my-pod -c my-container -- sh

# Pod 삭제
kubectl delete pod my-pod

Deployment 관리

Bash
# Deployment 생성
kubectl create deployment nginx --image=nginx:latest --replicas=3

# Deployment 목록·상태
kubectl get deployments
kubectl rollout status deployment/nginx

# 이미지 업데이트
kubectl set image deployment/nginx nginx=nginx:1.25

# 롤백
kubectl rollout undo deployment/nginx
kubectl rollout undo deployment/nginx --to-revision=2

# 스케일 조정
kubectl scale deployment nginx --replicas=5

# 롤링 업데이트 히스토리
kubectl rollout history deployment/nginx

Service 생성·노출

Bash
# ClusterIP (내부 통신)
kubectl expose deployment nginx --port=80 --target-port=80

# NodePort (외부 접근)
kubectl expose deployment nginx \
  --type=NodePort --port=80 --target-port=80

# LoadBalancer (클라우드)
kubectl expose deployment nginx \
  --type=LoadBalancer --port=80

# Service 목록
kubectl get services
kubectl get svc

# 포트포워딩 (로컬 테스트)
kubectl port-forward service/nginx 8080:80

YAML 파일로 리소스 관리

YAML
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
  labels:
    app: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app
        image: my-app:1.0
        ports:
        - containerPort: 3000
        resources:
          requests:
            memory: "64Mi"
            cpu: "250m"
          limits:
            memory: "128Mi"
            cpu: "500m"
Bash
kubectl apply -f deployment.yaml
kubectl delete -f deployment.yaml

유용한 명령 모음

Bash
# 리소스 전체 조회
kubectl get all -n my-namespace

# 레이블로 필터
kubectl get pods -l app=nginx

# 이벤트 확인 (문제 진단)
kubectl get events --sort-by='.lastTimestamp'

# 노드 상태
kubectl get nodes -o wide
kubectl top nodes

# Pod 리소스 사용량
kubectl top pods

# ConfigMap / Secret
kubectl get configmap
kubectl get secret
kubectl describe secret my-secret
#kubernetes#kubectl#pod#deployment#service
편집 안내 · Editorial Note

이 가이드는 AI 도구를 활용해 초안을 구성하고 사람이 명령어·문맥을 검토해 발행했습니다. 운영체제와 도구 버전에 따라 결과가 달라질 수 있으므로 적용 전 공식 문서를 함께 확인하세요. 오류를 발견하시면 이메일로 제보해 주세요.

질문 & 답변 (Q&A)

이 가이드에 대해 궁금한 점을 질문해보세요. 확인 후 답변드립니다.