<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>K8s on CharmingGroot</title>
    <link>https://charminggroot.github.io/tags/k8s/</link>
    <description>Recent content in K8s on CharmingGroot</description>
    <generator>Hugo</generator>
    <language>ko-kr</language>
    <lastBuildDate>Sun, 14 Jun 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://charminggroot.github.io/tags/k8s/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>063. k8s 부하 테스트 — k6, Grafana, 비동기 구조</title>
      <link>https://charminggroot.github.io/posts/063-k8s-load-testing/</link>
      <pubDate>Sun, 14 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://charminggroot.github.io/posts/063-k8s-load-testing/</guid>
      <description>k8s 환경에서 부하 테스트는 애플리케이션 성능과 인프라 반응을 동시에 검증한다. k6를 Pod으로 실행해 클러스터 내부에서 트래픽을 발생시키고, Prometheus와 Grafana로 실시간 메트릭을 수집한다. 동기 API뿐 아니라 큐 기반 비동기 구조도 측정 포인트를 나누면 테스트 가능하다.</description>
    </item>
    <item>
      <title>011. Kubernetes — 클러스터 구조와 선언적 모델</title>
      <link>https://charminggroot.github.io/posts/011-k8s-cluster-architecture/</link>
      <pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://charminggroot.github.io/posts/011-k8s-cluster-architecture/</guid>
      <description>Kubernetes가 무엇인지, 클러스터가 마스터(control plane)와 워커 노드로 어떻게 나뉘는지, 각 컴포넌트가 어떤 역할을 하는지, 그리고 k8s 전체를 관통하는 핵심 개념인 선언적 모델이 무엇인지를 설명한다. 이후 리소스 시리즈의 기반이 되는 글이다.</description>
    </item>
    <item>
      <title>012. Kubernetes Pod — 컨테이너를 감싸는 가장 작은 실행 단위</title>
      <link>https://charminggroot.github.io/posts/012-k8s-pod/</link>
      <pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://charminggroot.github.io/posts/012-k8s-pod/</guid>
      <description>Pod는 k8s에서 배포되는 가장 작은 단위다. 컨테이너가 하나 이상 묶인 실행 단위이고, 같은 파드 안의 컨테이너들은 네트워크와 볼륨을 공유한다. 파드의 라이프사이클, 리소스 요청과 제한, 사이드카 패턴, 초기화 컨테이너가 무엇인지, 그리고 파드를 직접 만들어 쓰지 않는 이유를 설명한다.</description>
    </item>
    <item>
      <title>013. Kubernetes Deployment — 파드 배포와 업데이트를 관리하는 오브젝트</title>
      <link>https://charminggroot.github.io/posts/013-k8s-deployment/</link>
      <pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://charminggroot.github.io/posts/013-k8s-deployment/</guid>
      <description>Deployment는 파드를 직접 만드는 대신 &amp;lsquo;몇 개를 유지할지, 어떻게 업데이트할지&amp;rsquo;를 선언하는 오브젝트다. 내부적으로 ReplicaSet을 통해 파드를 관리하고, 롤링 업데이트로 무중단 배포를 하며, 문제가 생기면 이전 버전으로 롤백한다. 이 과정이 어떻게 동작하는지, 전략 파라미터를 어떻게 조절하는지를 설명한다.</description>
    </item>
    <item>
      <title>014. Kubernetes Service — 파드 앞에 세우는 고정 엔드포인트</title>
      <link>https://charminggroot.github.io/posts/014-k8s-service/</link>
      <pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://charminggroot.github.io/posts/014-k8s-service/</guid>
      <description>파드는 죽었다 새로 만들어지면 IP가 바뀐다. Service는 파드 앞에 서서 항상 같은 주소로 트래픽을 받고, 뒤에 있는 파드들 사이에 로드밸런싱한다. ClusterIP, NodePort, LoadBalancer 세 타입의 차이, Ingress와의 관계, k8s 내부 DNS가 어떻게 동작하는지를 설명한다.</description>
    </item>
    <item>
      <title>015. Kubernetes ConfigMap &amp; Secret — 설정과 민감한 값을 파드와 분리하는 방법</title>
      <link>https://charminggroot.github.io/posts/015-k8s-configmap-secret/</link>
      <pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://charminggroot.github.io/posts/015-k8s-configmap-secret/</guid>
      <description>설정값을 컨테이너 이미지에 박으면 환경마다 이미지를 다시 빌드해야 한다. ConfigMap은 일반 설정을, Secret은 민감한 값을 파드와 분리해 관리한다. 주입 방식(환경변수, 볼륨), Secret의 base64가 암호화가 아닌 이유, 프로덕션에서 실제로 안전하게 관리하는 방법을 설명한다.</description>
    </item>
    <item>
      <title>016. Kubernetes ServiceAccount &amp; RBAC — 파드의 신원과 권한 제어</title>
      <link>https://charminggroot.github.io/posts/016-k8s-serviceaccount/</link>
      <pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://charminggroot.github.io/posts/016-k8s-serviceaccount/</guid>
      <description>ServiceAccount는 파드가 k8s API를 호출할 때 쓰는 신원(identity)이다. RBAC은 그 신원에 어떤 리소스에 어떤 작업을 허용할지 정하는 권한 체계다. Role, ClusterRole, RoleBinding, ClusterRoleBinding이 어떻게 조합되는지, 최소 권한 원칙을 어떻게 적용하는지를 설명한다.</description>
    </item>
    <item>
      <title>017. Kubernetes DaemonSet — 모든 노드에 하나씩 실행되는 파드</title>
      <link>https://charminggroot.github.io/posts/017-k8s-daemonset/</link>
      <pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://charminggroot.github.io/posts/017-k8s-daemonset/</guid>
      <description>DaemonSet은 클러스터의 모든 노드(또는 선택한 노드)에 파드를 정확히 하나씩 실행한다. 노드가 추가되면 자동으로 파드가 생기고, 노드가 제거되면 파드도 사라진다. 로그 수집, 메트릭 수집, 네트워크 플러그인처럼 노드 단위로 실행돼야 하는 인프라 컴포넌트에 쓰인다.</description>
    </item>
    <item>
      <title>018. Kubernetes HPA — 트래픽에 따라 파드 수를 자동으로 조절하기</title>
      <link>https://charminggroot.github.io/posts/018-k8s-hpa/</link>
      <pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://charminggroot.github.io/posts/018-k8s-hpa/</guid>
      <description>HPA(Horizontal Pod Autoscaler)는 CPU·메모리 사용률이나 커스텀 메트릭을 보고 Deployment의 파드 수를 자동으로 늘리고 줄인다. 스케일 계산이 어떻게 이뤄지는지, 실무에서 자주 만나는 함정(requests 미설정, 스케일 다운 지연, 파드 준비 시간)이 무엇인지, 커스텀 메트릭으로 어떻게 확장하는지를 설명한다.</description>
    </item>
    <item>
      <title>019. Kubernetes 셀프힐링 — 파드가 스스로 회복하는 구조</title>
      <link>https://charminggroot.github.io/posts/019-k8s-self-healing/</link>
      <pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://charminggroot.github.io/posts/019-k8s-self-healing/</guid>
      <description>k8s의 셀프힐링은 선언적 모델과 세 가지 프로브로 구현된다. Liveness probe가 죽은 컨테이너를 재시작하고, Readiness probe가 준비 안 된 파드를 트래픽에서 제외하며, Startup probe가 시작이 느린 앱을 보호한다. 각 프로브가 언제 무엇을 해야 하는지, 잘못 설정했을 때 어떤 문제가 생기는지를 설명한다.</description>
    </item>
    <item>
      <title>020. Kubernetes 관측성 — TPS 측정, 분산 추적, 로그 수집</title>
      <link>https://charminggroot.github.io/posts/020-k8s-observability/</link>
      <pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://charminggroot.github.io/posts/020-k8s-observability/</guid>
      <description>k8s에서 서비스를 운영하려면 무슨 일이 일어나는지 볼 수 있어야 한다. 관측성의 세 기둥인 메트릭·트레이스·로그가 k8s에서 어떻게 구성되는지, TPS를 어떻게 측정하는지, 분산 추적이 어떻게 여러 서비스를 하나의 흐름으로 잇는지, 로그는 어떻게 중앙에서 수집하는지를 설명한다.</description>
    </item>
    <item>
      <title>021. Kubernetes PV &amp; PVC — 파드가 죽어도 데이터가 살아남는 구조</title>
      <link>https://charminggroot.github.io/posts/021-k8s-pv-pvc/</link>
      <pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://charminggroot.github.io/posts/021-k8s-pv-pvc/</guid>
      <description>파드는 일시적이라 로컬 파일시스템도 파드와 함께 사라진다. PersistentVolume(PV)은 파드 수명과 분리된 저장소를 추상화하고, PersistentVolumeClaim(PVC)은 파드가 그 저장소를 요청하는 방식이다. 정적 프로비저닝과 동적 프로비저닝, StorageClass, 접근 모드, 반환 정책이 무엇인지, 실제 운영에서 어떻게 쓰이는지를 설명한다.</description>
    </item>
    <item>
      <title>022. Kubernetes StatefulSet — 순서와 신원이 필요한 파드를 위한 오브젝트</title>
      <link>https://charminggroot.github.io/posts/022-k8s-statefulset/</link>
      <pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://charminggroot.github.io/posts/022-k8s-statefulset/</guid>
      <description>Deployment는 파드를 교환 가능한 존재로 다루지만, DB나 메시지 큐처럼 파드마다 고유한 신원과 안정적인 스토리지가 필요한 경우가 있다. StatefulSet이 무엇인지, Deployment와 어떻게 다른지, 안정적인 네트워크 신원과 영구 스토리지를 어떻게 보장하는지, 언제 써야 하는지를 설명한다.</description>
    </item>
    <item>
      <title>023. Kubernetes Ingress — HTTP(S) 트래픽의 단일 진입점</title>
      <link>https://charminggroot.github.io/posts/023-k8s-ingress/</link>
      <pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://charminggroot.github.io/posts/023-k8s-ingress/</guid>
      <description>Service를 LoadBalancer 타입으로 노출하면 서비스마다 로드밸런서가 하나씩 생겨 비용이 선형으로 늘어난다. Ingress는 하나의 진입점에서 호스트 이름과 URL 경로로 트래픽을 여러 Service로 분배한다. Ingress 오브젝트와 Ingress Controller의 관계, 경로 기반·호스트 기반 라우팅, TLS 종료, cert-manager 자동 인증서 갱신을 설명한다.</description>
    </item>
    <item>
      <title>024. Kubernetes NetworkPolicy — 파드 간 트래픽을 제어하는 방화벽</title>
      <link>https://charminggroot.github.io/posts/024-k8s-networkpolicy/</link>
      <pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://charminggroot.github.io/posts/024-k8s-networkpolicy/</guid>
      <description>k8s에서 기본적으로 모든 파드는 서로 통신할 수 있다. NetworkPolicy는 파드 단위의 방화벽 규칙으로, 어떤 파드가 어떤 파드에 접근할 수 있는지 제어한다. 인그레스·이그레스 규칙 작성 방법, 기본 차단 정책, 네임스페이스 간 트래픽 제어, 그리고 CNI 플러그인이 실제로 규칙을 집행하는 구조를 설명한다.</description>
    </item>
    <item>
      <title>025. Kubernetes Namespace — 클러스터 안의 논리적 격리 단위</title>
      <link>https://charminggroot.github.io/posts/025-k8s-namespace/</link>
      <pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://charminggroot.github.io/posts/025-k8s-namespace/</guid>
      <description>Namespace는 하나의 클러스터를 여러 논리적 공간으로 나누는 메커니즘이다. 팀별, 환경별, 서비스 도메인별로 나눌 수 있고, RBAC과 NetworkPolicy, ResourceQuota와 결합해 진짜 격리를 구현한다. 언제 Namespace로 나누고 언제 클러스터를 아예 분리해야 하는지, 기본 Namespace들이 어떤 역할인지를 설명한다.</description>
    </item>
    <item>
      <title>026. Kubernetes Job &amp; CronJob — 일회성 작업과 주기적 작업</title>
      <link>https://charminggroot.github.io/posts/026-k8s-job-cronjob/</link>
      <pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://charminggroot.github.io/posts/026-k8s-job-cronjob/</guid>
      <description>Deployment는 파드를 계속 실행 상태로 유지하지만, 데이터 마이그레이션이나 리포트 생성처럼 한 번 실행하고 끝나는 작업도 있다. Job은 파드가 성공적으로 완료될 때까지 실행을 보장하고, CronJob은 Job을 cron 표현식으로 주기적으로 실행한다. 완료 보장 메커니즘, 병렬 실행, 실패 처리, 그리고 CronJob의 주의사항을 설명한다.</description>
    </item>
    <item>
      <title>027. Kubernetes Cluster Autoscaler — 파드가 올라갈 노드를 자동으로 늘리고 줄이기</title>
      <link>https://charminggroot.github.io/posts/027-k8s-cluster-autoscaler/</link>
      <pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://charminggroot.github.io/posts/027-k8s-cluster-autoscaler/</guid>
      <description>HPA가 파드 수를 조절하면, 새 파드를 올릴 노드가 부족해지는 상황이 생긴다. Cluster Autoscaler는 Pending 상태인 파드를 감지해 노드를 추가하고, 유휴 노드를 제거해 비용을 절감한다. HPA와 어떻게 협력하는지, 노드를 어떻게 선택하는지, 스케일 인 중 파드 안전성을 어떻게 보장하는지, 그리고 차세대 도구인 Karpenter와의 차이를 설명한다.</description>
    </item>
    <item>
      <title>028. Kubernetes Taint, Toleration, Affinity — 파드가 어떤 노드에 올라갈지 제어하기</title>
      <link>https://charminggroot.github.io/posts/028-k8s-taint-affinity/</link>
      <pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://charminggroot.github.io/posts/028-k8s-taint-affinity/</guid>
      <description>기본적으로 스케줄러는 자원이 충분한 노드에 파드를 자유롭게 배치한다. Taint와 Toleration은 노드를 특수 목적으로 예약하고, Affinity는 파드가 특정 노드에 또는 특정 파드 근처에 배치되도록 유도한다. GPU 노드 예약, 파드 고가용성 분산, 같이 실행해야 하는 파드 모으기를 어떻게 구현하는지 설명한다.</description>
    </item>
    <item>
      <title>029. Helm — Kubernetes 패키지 매니저</title>
      <link>https://charminggroot.github.io/posts/029-k8s-helm/</link>
      <pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://charminggroot.github.io/posts/029-k8s-helm/</guid>
      <description>하나의 서비스를 k8s에 배포하려면 Deployment, Service, ConfigMap, Ingress, ServiceAccount 등 여러 YAML 파일이 필요하다. Helm은 이 파일들을 하나의 패키지(Chart)로 묶고, 환경마다 다른 값을 변수로 분리해 관리하는 k8s 패키지 매니저다. Chart 구조, values 오버라이드, Release 관리, 그리고 Kustomize와의 차이를 설명한다.</description>
    </item>
    <item>
      <title>030. KEDA — 이벤트 드리븐 오토스케일러</title>
      <link>https://charminggroot.github.io/posts/030-k8s-keda/</link>
      <pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://charminggroot.github.io/posts/030-k8s-keda/</guid>
      <description>HPA는 CPU와 메모리 사용률을 기준으로 파드를 스케일한다. 하지만 Kafka 큐에 메시지가 쌓이거나 SQS 대기열이 늘어나는 경우처럼 외부 이벤트 소스를 기준으로 스케일하고 싶을 때 HPA만으로는 한계가 있다. KEDA는 70개 이상의 외부 스케일러를 지원하는 이벤트 드리븐 오토스케일러로, 0개에서 N개까지 스케일하는 것도 지원한다.</description>
    </item>
    <item>
      <title>031. Kubernetes CRD &amp; Operator 패턴 — k8s를 플랫폼으로 확장하기</title>
      <link>https://charminggroot.github.io/posts/031-k8s-crd-operator/</link>
      <pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://charminggroot.github.io/posts/031-k8s-crd-operator/</guid>
      <description>k8s는 Deployment, Service, ConfigMap 같은 기본 리소스 외에 사용자 정의 리소스(CRD)를 추가할 수 있다. Operator 패턴은 CRD로 새 리소스를 정의하고, 컨트롤러가 그 리소스의 desired state를 실현하는 구조다. cert-manager, Postgres Operator처럼 복잡한 운영 지식을 자동화하는 데 쓰인다.</description>
    </item>
    <item>
      <title>032. Kubernetes Security Context &amp; Pod Security Admission — 컨테이너를 안전하게 실행하기</title>
      <link>https://charminggroot.github.io/posts/032-k8s-security-context/</link>
      <pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://charminggroot.github.io/posts/032-k8s-security-context/</guid>
      <description>컨테이너를 root로 실행하면 컨테이너 탈출 시 호스트 노드도 위험해진다. Security Context는 파드·컨테이너 수준에서 실행 권한을 제한하고, Pod Security Admission은 클러스터 수준에서 보안 기준선을 강제한다. 실무에서 자주 쓰는 설정과 각 제약의 의미를 설명한다.</description>
    </item>
    <item>
      <title>033. Kubernetes RBAC 미비 공격 시나리오 — 파드 침투에서 클러스터 장악까지</title>
      <link>https://charminggroot.github.io/posts/033-k8s-rbac-attack-scenario/</link>
      <pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://charminggroot.github.io/posts/033-k8s-rbac-attack-scenario/</guid>
      <description>RBAC이 제대로 설정되지 않은 클러스터에서 파드 하나를 침투한 공격자가 전체 클러스터를 장악하는 과정을 단계별로 설명한다. 각 단계에서 공격이 성립하는 조건과 이를 차단하는 방어 포인트를 함께 정리한다.</description>
    </item>
  </channel>
</rss>
