🤖

본 콘텐츠의 이미지 및 내용은 AI로 생성되었습니다.

⚠️

본 콘텐츠의 이미지 및 내용을 무단으로 복제, 배포, 수정하여 사용할 경우 저작권법에 의해 법적 제재를 받을 수 있습니다.

이미지 로딩 중...

Kubernetes 실무 활용 팁 - 슬라이드 1/11
A

AI Generated

2025. 11. 3. · 11 Views

Kubernetes 실무 활용 팁

쿠버네티스 실무 환경에서 자주 사용하는 핵심 명령어와 설정 방법을 소개합니다. 초급 개발자가 실제 프로젝트에서 바로 활용할 수 있는 실용적인 예제들을 담았습니다.


카테고리:TypeScript
언어:TypeScript
메인 태그:#Kubernetes
서브 태그:
#Pod#Deployment#Service#ConfigMap

들어가며

이 글에서는 Kubernetes 실무 활용 팁에 대해 상세히 알아보겠습니다. 총 10가지 주요 개념을 다루며, 각각의 개념에 대한 설명과 실제 코드 예제를 함께 제공합니다.

목차

  1. Pod_생성과_조회
  2. Deployment로_애플리케이션_배포
  3. Service로_네트워크_노출
  4. ConfigMap으로_설정_관리
  5. Secret으로_민감정보_관리
  6. Resource_제한_설정
  7. Health_Check_설정
  8. Namespace로_환경_분리
  9. 자주_사용하는_kubectl_명령어
  10. Rolling_Update와_Rollback

1. Pod 생성과 조회

개요

Pod는 쿠버네티스에서 배포할 수 있는 가장 작은 단위입니다. YAML 파일로 간단하게 Pod를 정의하고 생성할 수 있습니다.

코드 예제

# pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: my-app
spec:
  containers:
  - name: nginx
    image: nginx:latest

설명

apiVersion과 kind로 리소스 타입을 지정하고, metadata에 이름을, spec에 컨테이너 정보를 작성합니다. kubectl apply -f pod.yaml 명령으로 생성합니다.


2. Deployment로 애플리케이션 배포

개요

Deployment는 Pod의 복제본을 관리하고 자동으로 재시작해주는 리소스입니다. 실무에서 가장 많이 사용하는 배포 방식입니다.

코드 예제

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: nginx
        image: nginx:1.21

설명

replicas로 Pod 개수를 지정하고, selector로 관리할 Pod를 선택합니다. Rolling Update 방식으로 무중단 배포가 가능합니다.


3. Service로 네트워크 노출

개요

Service는 Pod들을 네트워크로 노출시켜 외부에서 접근할 수 있게 합니다. ClusterIP, NodePort, LoadBalancer 타입을 선택할 수 있습니다.

코드 예제

apiVersion: v1
kind: Service
metadata:
  name: my-app-service
spec:
  type: LoadBalancer
  selector:
    app: my-app
  ports:
  - port: 80
    targetPort: 8080

설명

selector로 연결할 Pod를 지정하고, port로 외부 포트와 내부 targetPort를 매핑합니다. LoadBalancer 타입은 클라우드에서 자동으로 외부 IP를 할당합니다.


4. ConfigMap으로 설정 관리

개요

ConfigMap은 환경 변수나 설정 파일을 코드와 분리해서 관리할 수 있게 해줍니다. 환경별로 다른 설정을 쉽게 적용할 수 있습니다.

코드 예제

apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
data:
  DATABASE_URL: "postgres://db:5432"
  API_KEY: "dev-key-123"
---
# Pod에서 사용
env:
- name: DATABASE_URL
  valueFrom:
    configMapKeyRef:
      name: app-config
      key: DATABASE_URL

설명

ConfigMap에 key-value 형태로 설정을 저장하고, Pod에서 환경 변수로 주입받아 사용합니다. 코드 수정 없이 설정만 변경할 수 있습니다.


5. Secret으로 민감정보 관리

개요

Secret은 비밀번호, API 키 같은 민감한 정보를 안전하게 저장하는 리소스입니다. Base64로 인코딩되어 저장됩니다.

코드 예제

apiVersion: v1
kind: Secret
metadata:
  name: db-secret
type: Opaque
data:
  password: cGFzc3dvcmQxMjM=
---
# Pod에서 사용
env:
- name: DB_PASSWORD
  valueFrom:
    secretKeyRef:
      name: db-secret
      key: password

설명

Secret에 민감 정보를 저장하고 Pod에서 환경 변수로 주입받습니다. ConfigMap과 사용법은 비슷하지만 보안이 강화되었습니다.


6. Resource 제한 설정

개요

CPU와 메모리 리소스를 제한하여 Pod가 과도한 자원을 사용하지 않도록 합니다. 안정적인 클러스터 운영에 필수적입니다.

코드 예제

containers:
- name: my-app
  image: nginx:latest
  resources:
    requests:
      memory: "128Mi"
      cpu: "250m"
    limits:
      memory: "256Mi"
      cpu: "500m"

설명

requests는 Pod가 보장받는 최소 리소스이고, limits는 최대 사용 가능한 리소스입니다. limits를 초과하면 Pod가 재시작될 수 있습니다.


7. Health Check 설정

개요

Liveness와 Readiness Probe로 Pod의 상태를 체크하고 문제가 있으면 자동으로 재시작하거나 트래픽을 차단합니다.

코드 예제

containers:
- name: my-app
  image: my-app:latest
  livenessProbe:
    httpGet:
      path: /health
      port: 8080
    initialDelaySeconds: 30
    periodSeconds: 10
  readinessProbe:
    httpGet:
      path: /ready
      port: 8080
    periodSeconds: 5

설명

livenessProbe는 컨테이너가 살아있는지 체크하고, readinessProbe는 트래픽을 받을 준비가 됐는지 확인합니다. 실패 시 자동으로 처리됩니다.


8. Namespace로 환경 분리

개요

Namespace는 클러스터 내에서 리소스를 논리적으로 분리하는 방법입니다. 개발, 스테이징, 프로덕션 환경을 나눌 수 있습니다.

코드 예제

apiVersion: v1
kind: Namespace
metadata:
  name: development
---
# 특정 Namespace에 리소스 생성
kubectl apply -f deployment.yaml -n development

# NamespacePod 조회
kubectl get pods -n development

설명

Namespace를 생성하고 -n 옵션으로 특정 Namespace에 리소스를 배포합니다. 환경별로 격리하여 관리할 수 있습니다.


9. 자주 사용하는 kubectl 명령어

개요

실무에서 매일 사용하는 필수 kubectl 명령어들입니다. 로그 확인, Pod 상태 조회, 디버깅에 활용됩니다.

코드 예제

# Pod 목록 조회
kubectl get pods

# Pod 로그 확인
kubectl logs my-app-pod

# Pod 내부 접속
kubectl exec -it my-app-pod -- /bin/bash

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

설명

get으로 리소스 목록을 보고, logs로 로그를 확인하며, exec로 컨테이너 내부에 접속합니다. describe로 상세한 이벤트와 상태를 확인할 수 있습니다.


10. Rolling Update와 Rollback

개요

애플리케이션을 무중단으로 업데이트하고, 문제가 생기면 이전 버전으로 되돌릴 수 있습니다. 안전한 배포를 위한 필수 기능입니다.

코드 예제

# 이미지 업데이트
kubectl set image deployment/my-app nginx=nginx:1.22

# Rollout 상태 확인
kubectl rollout status deployment/my-app

# 이전 버전으로 롤백
kubectl rollout undo deployment/my-app

설명

set image로 새 버전을 배포하면 자동으로 Rolling Update가 진행됩니다. rollout status로 진행 상황을 확인하고, 문제 시 undo로 즉시 롤백할 수 있습니다.


마치며

이번 글에서는 Kubernetes 실무 활용 팁에 대해 알아보았습니다. 총 10가지 개념을 다루었으며, 각각의 사용법과 예제를 살펴보았습니다.

관련 태그

#Kubernetes #Pod #Deployment #Service #ConfigMap

#Kubernetes#Pod#Deployment#Service#ConfigMap#TypeScript

댓글 (0)

댓글을 작성하려면 로그인이 필요합니다.