이미지 로딩 중...

Kubernetes 기본 개념 완벽 가이드 - 슬라이드 1/9
C

CodeDeck AI

2025. 11. 8. · 2 Views

Kubernetes 기본 개념 완벽 가이드

Kubernetes의 핵심 개념과 리소스를 실습 중심으로 학습합니다. Pod, Service, Deployment 등 필수 오브젝트를 YAML 예제로 쉽게 이해할 수 있습니다.


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

들어가며

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

목차

  1. Pod_기본_구조
  2. Deployment_생성
  3. Service_ClusterIP
  4. Service_LoadBalancer
  5. ConfigMap_설정관리
  6. Secret_민감정보관리
  7. Namespace_격리
  8. Volume_데이터저장

1. Pod_기본_구조

개요

Pod는 Kubernetes에서 배포할 수 있는 가장 작은 단위로, 하나 이상의 컨테이너를 포함합니다.

코드 예제

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

설명

nginx 웹서버를 실행하는 가장 간단한 Pod 정의입니다. 80 포트로 서비스를 제공합니다.


2. Deployment_생성

개요

Deployment는 Pod의 복제본을 관리하고 롤링 업데이트를 지원하는 핵심 리소스입니다.

코드 예제

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

설명

동일한 nginx Pod를 3개의 복제본으로 실행하여 고가용성을 제공합니다.


3. Service_ClusterIP

개요

Service는 Pod에 안정적인 네트워크 엔드포인트를 제공합니다. ClusterIP는 클러스터 내부 통신용입니다.

코드 예제

apiVersion: v1
kind: Service
metadata:
  name: web-service
spec:
  type: ClusterIP
  selector:
    app: web
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80

설명

app=web 레이블을 가진 Pod들에 대해 클러스터 내부에서 접근 가능한 서비스를 생성합니다.


4. Service_LoadBalancer

개요

LoadBalancer 타입은 클라우드 환경에서 외부 로드밸런서를 자동으로 프로비저닝합니다.

코드 예제

apiVersion: v1
kind: Service
metadata:
  name: web-external
spec:
  type: LoadBalancer
  selector:
    app: web
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80

설명

외부 인터넷에서 접근 가능한 공개 IP를 할당받아 애플리케이션을 노출합니다.


5. ConfigMap_설정관리

개요

ConfigMap은 컨테이너에 주입할 설정 데이터를 키-값 쌍으로 저장합니다.

코드 예제

apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
data:
  database_url: "mysql://db:3306"
  log_level: "info"
  max_connections: "100"

설명

애플리케이션 설정을 코드와 분리하여 환경별로 다른 값을 쉽게 적용할 수 있습니다.


6. Secret_민감정보관리

개요

Secret은 비밀번호, 토큰 등 민감한 정보를 Base64로 인코딩하여 안전하게 저장합니다.

코드 예제

apiVersion: v1
kind: Secret
metadata:
  name: db-secret
type: Opaque
data:
  username: YWRtaW4=
  password: cGFzc3dvcmQxMjM=

설명

데이터베이스 인증 정보를 암호화하여 저장하고, Pod에서 환경변수나 파일로 마운트할 수 있습니다.


7. Namespace_격리

개요

Namespace는 클러스터 내에서 리소스를 논리적으로 분리하는 가상 클러스터입니다.

코드 예제

apiVersion: v1
kind: Namespace
metadata:
  name: development
---
apiVersion: v1
kind: Pod
metadata:
  name: app-pod
  namespace: development
spec:
  containers:
  - name: app
    image: myapp:1.0

설명

개발/스테이징/프로덕션 환경을 분리하여 리소스 관리와 접근 제어를 독립적으로 할 수 있습니다.


8. Volume_데이터저장

개요

Volume은 Pod의 컨테이너가 재시작되어도 데이터를 유지할 수 있는 저장소입니다.

코드 예제

apiVersion: v1
kind: Pod
metadata:
  name: data-pod
spec:
  containers:
  - name: app
    image: nginx
    volumeMounts:
    - name: data
      mountPath: /data
  volumes:
  - name: data
    emptyDir: {}

설명

emptyDir 볼륨은 Pod가 실행되는 동안 임시 데이터를 저장하며, Pod 삭제 시 함께 삭제됩니다.


마치며

이번 글에서는 Kubernetes 기본 개념 완벽 가이드에 대해 알아보았습니다. 총 8가지 개념을 다루었으며, 각각의 사용법과 예제를 살펴보았습니다.

관련 태그

#Kubernetes #Pod #Service #Deployment #ConfigMap

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

댓글 (0)

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