본문으로 건너뛰기
Kubernetes 로고

생성 수정

Kubernetes · 3장

핵심 객체와 배포 자동화

Pod·Deployment·Service·Namespace부터 설정, 확장, 자가 복구와 무중단 배포까지, 원문 PDF 7~14쪽을 읽는다.

3장 · 총 8개 절 · 전체 9개 장 중 3번째

Pod — 가장 작은 배포 단위

3장 · 01

    P O D · 파드 쿠버네티스의가장작은배포단위

    P o d 구조
    P O D
    Main Container

    주 애플리케이션

    Sidecar

    보조 컨테이너(옵션)

    공유자원

    같은 IP / Network 같은 Volume

    최소 배포 단위

    K8s가 만들고 관리하는 가장 작은 단위. 한 개 이상의 컨테이너를 묶어 같은 네트워크와 볼륨을 공유합니다.

    Ephemeral · 일시적

    수명 주기가 짧음. 죽으면 새 IP의 새 파드가 생겨서 desired count가 유지됩니다.

    사이드카 패턴

    주 컨테이너 옆에 로깅 · 프록시 · 동기화 같은 보조 컨테이너를 함께 두는 구조.

    출처: JunHo Lee · 『쿠버네티스 종합 개요』 · 원문 PDF 7쪽

    Deployment — 선언적 배포와 업데이트

    3장 · 02

      D E P L O Y M E N T · 디플로이먼트 선언적배포와무중단업데이트

      배포(Deploy)를 관리하는 K8s 오브젝트

      의도된 상태(예: replicas=5)를 선언하면, 컨트롤러가 현재 상태를 desired state로 맞추도록 파드를 생성/제거합니다.

      선언적 관리

      의도된 상태를 YAML로 선언하면 컨트롤러가 그 상태를 자동으로 유지합니다.

      롤링 업데이트

      기존 파드를 한 개씩 교체해 무중단으로 새 버전을 배포합니다.

      자동 롤백

      배포 도중 문제가 감지되면 이전 버전으로 자동 롤백할 수 있습니다.

      R O L L I N G U P D A T E · 단계적 교체

      현재v1 × 4

      1개교체

      절반교체

      거의완료

      v2 × 4 완료

      출처: JunHo Lee · 『쿠버네티스 종합 개요』 · 원문 PDF 8쪽

      Service — 변하지 않는 접근점

      3장 · 03

        S E R V I C E · 서비스 변하는파드위에변하지않는접근점

        파드들의 동적 변화를 가려주는 안정적인 IP·DNS 추상화. kube-proxy가 트래픽을 파드들에게 분산합니다.

        안정적인 접근점

        변하지 않는 IP/포트를 통해 파드 그룹을 대표.

        레이블 셀렉터

        label로 어떤 파드가 서비스 뒷단인지 결정.

        다양한유형

        ClusterIP · NodePort · LoadBalancer · ExternalName.

        로드밸런싱

        kube-proxy + iptables/IPVS로 부하 분산.

        S e r v i c e T y p e s

        원문 PDF 9쪽 비교표
        ClusterIP클러스터 내부 통신(기본값)
        NodePort노드 포트로 외부 노출
        LoadBalancer클라우드 LB와 연동
        ExternalName외부 DNS로 매핑

        출처: JunHo Lee · 『쿠버네티스 종합 개요』 · 원문 PDF 9쪽

        Namespace — 논리적 분리

        3장 · 04

          N A M E S P A C E · 네임스페이스 하나의클러스터를여러개의가상클러스터처럼

          논리적 분리 모델
          C l u s t e r
          namespace: dev

          Pod Pod Pod Pod

          namespace: staging

          Pod Pod Pod Pod

          namespace: prod

          Pod Pod Pod Pod

          논리적 구분

          클러스터 자원을 프로젝트/팀/환경별로 가상 분리. 같은 이름의 리소스도 네임스페이스가 다르면 공존.

          환경 분리

          dev · staging · prod를 한 클러스터에서 운영하면서 충돌을 방지. RBAC와 ResourceQuota도 NS 단위로.

          보안 한계

          기본적으로 네트워크는 공유. 강한 격리가 필요하면 NetworkPolicy · 멀티클러스터 · 멀티테넌시 도구 검토.

          출처: JunHo Lee · 『쿠버네티스 종합 개요』 · 원문 PDF 10쪽

          ConfigMap과 Secret

          3장 · 05

            C O N F I G · 환경 설정 분리 ConfigMap 과Secret

            ConfigMap

            애플리케이션 설정값(키-값) 저장

            이미지를 다시 빌드하지 않고 환경별 설정을 외부에서 주입할 수 있어 이식성과 재사용성이 높아집니다.

            주입 방식

            환경변수로 주입(env 또는 envFrom)

            볼륨 마운트로 파일 형태 주입

            Pod 매니페스트의 command/args 인자

            Secret

            민감정보(비밀번호 · 토큰 · 인증서) 저장

            Pod와 독립적으로 생성·관리되어 노출 위험을 줄이고, 매니페스트에 암호를 직접 넣지 않게 해줍니다.

            주의 · 기본은 base64 인코딩일 뿐

            etcd 저장 시 암호화 옵션 활성화, KMS 연동, 또는 Sealed Secrets · External Secrets · HashiCorp Vault 같은 도구 사용을 권장합니다.

            출처: JunHo Lee · 『쿠버네티스 종합 개요』 · 원문 PDF 11쪽

            확장성 — HPA·VPA·노드 자동 확장

            3장 · 06

              S C A L A B I L I T Y · 확장성 부하에따라자동으로늘었다줄었다

              C A S E S T U D Y · P o k é m o n G O

              출시 직후 예상의 50배 트래픽 폭주 → GKE 기반 인프라가 자동 확장으로 서비스 유지 × 50

              H o r i z o n t a l P o d A u t o s c a l e r

              수평 자동 확장(HPA)

              CPU · Memory · 커스텀 메트릭 기반으로 파드 개수를 자동 증감.

              V e r t i c a l P o d A u t o s c a l e r

              수직 확장(VPA)

              Pod의 CPU/메모리 요청·제한값을 자동으로 조정하여 자원 활용을 최적화.

              C l u s t e r A u t o s c a l e r

              노드 자동 확장

              파드를 띄울 자리가 부족하면 노드 자체를 추가. 클라우드 환경에서 특히 강력.

              출처: JunHo Lee · 『쿠버네티스 종합 개요』 · 원문 PDF 12쪽

              자가 복구

              3장 · 07

                S E L F - H E A L I N G · 자가 복구 사람이깨어있지않아도클러스터는깨어있다

                01 S T E P 0 1

                상태모니터링

                kubelet과컨트롤러가파드·노드의

                상태를지속점검

                02 S T E P 0 2

                장애감지

                파드크래시· 노드다운· liveness

                실패등을감지

                03 S T E P 0 3

                자동복구

                새파드생성또는다른노드에재

                스케줄링

                04 S T E P 0 4

                가용성보장

                별도복구스크립트없이도

                desired state 회복

                “쿠버네티스오케스트레이션을도입하면서버파드가죽어도K8s가감지해자동으로다시실행하므로, 과거레거시환경에서필요했던복잡한 장애복구설정이더이상필요없어졌습니다.”

                — 데브시스터즈(국내게임사)

                출처: JunHo Lee · 『쿠버네티스 종합 개요』 · 원문 PDF 13쪽

                무중단 배포 전략

                3장 · 08

                  Z E R O D O W N T I M E · 무중단 배포 서비스를끊지않고새버전으로

                  Rolling Update

                  기본 전략. 기존 파드를 한 개씩 교체.

                  장점 리소스 효율적, 점진적 배포

                  유의 두 버전이 잠시 공존

                  Blue / Green

                  새 환경(Green)에 통째로 배포 후 트래픽 전환.

                  장점 빠른 롤백, 단순한 검증

                  유의 리소스 2배 필요

                  Canary

                  일부 트래픽만 신버전으로 보내 검증.

                  장점 위험 최소화, 점진 전환

                  유의 서비스 메시 등 도구 필요

                  쿠버네티스 기본기

                  Rolling Update + 자동롤백

                  Deployment 컨트롤러가 maxSurge · maxUnavailable 설정으로 점진 교체 속도를 제어합니다. readinessProbe가 통과해야 다음 파드를 교체하므로 트래픽이 끊기지 않습니다.

                  실패 감지 시

                  kubectl rollout undo deployment/<name>

                  이전 ReplicaSet으로 즉시 복귀하여 장애 영향을 최소화합니다.

                  출처: JunHo Lee · 『쿠버네티스 종합 개요』 · 원문 PDF 14쪽