본문으로 건너뛰기
인프라 · infra/kubernetes/Kubernetes 스터디 홈

Kubernetes Study · 스터디 홈

인프라 0부터 쿠버네티스까지

스터디를 하면서 개념을 그림으로 정리하는 스터디 노트예요. 스터디 과정 하나가 파일 하나이고, 입문에서 시작해 단계별로 깊이를 더해 갑니다.

2026.10.28 시작 · 마지막 업데이트 2026.10.30

학습 단계

01입문 완료
쿠버네티스 입문
이게 무엇이고 왜 필요한가 — 비유와 큰 그림 중심
  1. 1부
    컨테이너와 오케스트레이션
  2. 2부
    쿠버네티스 시작하기노드 · GKE · kubectl · YAML
  3. 3부
    Pod라벨 · 사이드카 · 상태 · 프로브 · 리소스
  4. 4부
    워크로드 컨트롤러레플리카 · ReplicaSet · Deployment · DaemonSet · Job · StatefulSet
  5. 5부
    네트워킹Service · ClusterIP · NodePort · LoadBalancer · DNS · Ingress
  6. 6부
    설정과 저장소ConfigMap · Secret · Volume · PV · PVC · StorageClass
  7. 7부
    운영 기초Namespace · HPA · 로그 · 처음부터 끝까지 배포
열기 →
02전반 완료
쿠버네티스 전반
실제로 어떻게 쓰고 내부에서 어떻게 도는가 — YAML · 명령어 · 장애 상황 중심
  1. 1부
    클러스터 아키텍처etcd · API 서버 · 스케줄러 · 컨트롤러 · kubelet
  2. 2부
    리소스 기본기 다시 보기Pod · ReplicaSet · Deployment · Service · Namespace
  3. 3부
    스케줄링Taint · Affinity · 리소스 · Static Pod · Priority
  4. 4부
    로깅과 모니터링metrics-server · 컴포넌트 · 로그 · Events
  5. 5부
    애플리케이션 라이프사이클롤링 업데이트 · ConfigMap · Secret · 멀티 컨테이너 · 오토스케일링
  6. 6부
    클러스터 유지보수drain · 업그레이드 · etcd 백업과 복구
  7. 7부
    보안 ① 인증과 인가TLS · kubeconfig · RBAC · ServiceAccount · Admission
  8. 8부
    보안 ② 워크로드와 네트워크이미지 보안 · SecurityContext · Network Policy
  9. 9부
    스토리지CSI · PV · PVC · StorageClass
  10. 10부
    네트워크 기초라우팅 · DNS · 네트워크 네임스페이스 · CNI
  11. 11부
    쿠버네티스 네트워킹Pod 네트워킹 · Service · CoreDNS · Ingress · Gateway API
  12. 12부
    클러스터 설계와 설치HA · etcd HA · kubeadm
  13. 13부
    HelmChart · Release · 라이프사이클
  14. 14부
    KustomizeTransformer · Patch · Overlay
  15. 15부
    쿠버네티스 확장하기CRD · Custom Controller · Operator
  16. 16부
    트러블슈팅애플리케이션 · 컨트롤 플레인 · 워커 노드 · 네트워크
  17. 17부
    kubectl 실전 도구JSON Path · custom-columns
열기 →

정리 원칙

01 입문02 전반
질문이게 뭐고, 왜 필요한가?어떻게 쓰고, 안에서 어떻게 도나?
설명 방식비유 · 큰 그림 · 낯선 단어는 풀어 쓰기YAML 필드 · kubectl · 동작 순서 · 장애 대응
목차학습 순서를 그대로 따라 부(部) 단위로 추가. 각 부는 01 · 02 … 절과 소제목으로 구성
중복같은 개념이 다시 나오면 기초는 반복하지 않고 앞 파일로 링크, 새 깊이만 추가

지금까지의 개념 흐름

정리한 개념이 어떤 순서로 이어지는지 보여 줘요. 스터디가 진행되면 오른쪽으로 계속 이어 붙입니다.

서버 · 프로세스→ VM vs 컨테이너→ 네임스페이스 · cgroup→ 이미지 · 레이어→ 원하는 상태 · 제어 루프→ 클러스터 구조→ 마스터 · 워커 노드→ 노드 구성 요소→ GCP · GKE→ kubectl→ YAML 매니페스트→ Pod→ 라벨 · 셀렉터→ 상태 · 재시작 · 프로브→ requests · limits→ 레플리카→ ReplicaSet · Deployment→ DaemonSet · Job · StatefulSet→ Service→ ClusterIP · NodePort · LoadBalancer→ DNS→ Ingress→ ConfigMap · Secret→ Volume→ PV · PVC · StorageClass→ Namespace→ HPA→ 로그 · 문제 해결→ 처음부터 끝까지 배포→ 컨트롤 플레인 해부→ 리소스 기본기 · apply→ 스케줄링 규칙→ 로그 · 지표 · 이벤트→ 배포 · 설정 · 확장→ 점검 · 업그레이드 · 백업→ 인증 · 인가 · 어드미션→ 이미지 · Pod 권한 · 네트워크 보안→ CSI · PV · PVC · StorageClass→ 라우팅 · DNS · netns · CNI→ Pod · Service · DNS · Ingress · Gateway→ HA · etcd 쿼럼 · kubeadm→ chart · release · values→ base · overlay · patch→ CRD · 컨트롤러 · Operator→ 앱 · 컨트롤 플레인 · 노드 · 네트워크 장애→ JSON Path · custom-columns · 손버릇

용어 사전

정리하면서 나온 용어를 모아 둬요. 오른쪽 링크를 누르면 처음 설명한 곳으로 이동합니다.

용어한 줄 뜻어디서
컨테이너이미지를 실행한 것. 리눅스 커널 기능으로 격리된 프로세스입문 1부 · 01
이미지앱 + 실행 환경을 굳힌 읽기 전용 꾸러미. 레이어를 쌓아 만듦입문 1부 · 04
레이어Dockerfile 명령 하나가 만든 변경분. 바뀌지 않으면 캐시 재사용입문 1부 · 04
레지스트리이미지를 올리고 받는 저장소 (Docker Hub, ECR)입문 1부 · 04
컨테이너 런타임이미지를 받아 컨테이너로 실행하는 프로그램 (containerd, Docker)입문 1부 · 01
가상 머신 (VM)하드웨어를 흉내 내 OS를 통째로 하나씩 갖는 가짜 컴퓨터입문 1부 · 02
하이퍼바이저하드웨어를 쪼개 VM 여러 대를 만들어 주는 소프트웨어입문 1부 · 02
커널OS의 핵심. 하드웨어를 직접 다루고 앱의 요청(시스템 콜)을 처리입문 1부 · 02
네임스페이스 (리눅스)프로세스가 볼 수 있는 범위를 나누는 칸막이 (pid, mnt, net, uts …)입문 1부 · 03
cgroup프로세스가 쓸 수 있는 CPU · 메모리 양을 제한입문 1부 · 03
OOMKilled메모리 한도를 넘어 강제 종료됨. 종료 코드 137입문 1부 · 03
오케스트레이션여러 서버의 컨테이너 배치 · 복구 · 확장 · 배포를 자동으로 맞추는 일입문 1부 · 05
원하는 상태 · 제어 루프선언한 상태와 현재 상태를 계속 비교해 차이를 없애는 반복입문 1부 · 05
선언형과정이 아니라 결과(어떤 상태여야 하는지)를 적는 방식입문 1부 · 05
롤링 업데이트새 버전을 하나씩 띄우고 옛 버전을 하나씩 내려 중단 없이 교체입문 1부 · 05
클러스터마스터 노드 + 워커 노드로 묶인 서버 집합입문 2부 · 01
노드쿠버네티스에 등록된 서버 한 대 (클라우드에선 보통 VM)입문 2부 · 01
마스터 노드 (= 컨트롤 플레인)API 서버 · etcd · 스케줄러 · 컨트롤러 매니저. 결정하고 관리하는 두뇌입문 2부 · 01
워커 노드kubelet · kube-proxy · 런타임이 있어 실제로 Pod를 실행하는 서버입문 2부 · 01
kubelet노드마다 있는 관리인. 배정된 Pod를 런타임에 실행시키고 상태를 보고입문 2부 · 02
kube-proxyService로 온 요청이 알맞은 Pod로 가도록 노드의 네트워크 규칙 관리입문 2부 · 02
Capacity · Allocatable노드 전체 자원 · 그중 Pod에 내줄 수 있는 양입문 2부 · 02
GCPGoogle Cloud Platform. 구글의 클라우드. 자원은 프로젝트 단위로 관리입문 2부 · 03
GKEGoogle Kubernetes Engine. 마스터 노드를 구글이 운영하는 관리형 쿠버네티스입문 2부 · 03
노드 풀같은 설정의 워커 노드(VM) 묶음입문 2부 · 03
kubectl명령을 API 서버 요청으로 바꿔 보내는 CLI입문 2부 · 04
kubeconfig · contextkubectl이 읽는 접속 설정 파일(~/.kube/config) · 클러스터와 사용자 묶음입문 2부 · 04
YAML 매니페스트원하는 상태를 적은 파일. apiVersion · kind · metadata · spec입문 2부 · 05
spec · status원하는 상태(내가 씀) · 현재 상태(쿠버네티스가 채움)입문 2부 · 05
Pod쿠버네티스가 컨테이너를 감싸 다루는 가장 작은 단위. IP 하나, 일회용입문 3부 · 01
라벨 · 셀렉터객체에 붙이는 키=값 꼬리표 · 그 꼬리표로 대상을 고르는 조건입문 3부 · 02
사이드카주 컨테이너를 돕는 보조 컨테이너를 같은 Pod에 넣는 패턴입문 3부 · 03
init 컨테이너본 컨테이너보다 먼저 실행되고 끝나야 하는 준비용 컨테이너입문 3부 · 03
restartPolicy컨테이너가 끝났을 때 다시 띄울지 (Always · OnFailure · Never)입문 3부 · 04
CrashLoopBackOff컨테이너가 계속 죽어서 재시작 사이에 점점 길게 기다리는 상태입문 3부 · 04
ImagePullBackOff이미지를 받지 못해 재시도를 기다리는 상태 (이름 · 태그 오타 등)입문 3부 · 04
readinessProbe요청 받을 준비 확인. 실패하면 트래픽에서 빠짐입문 3부 · 05
livenessProbe멈추지 않았는지 확인. 실패하면 컨테이너 재시작입문 3부 · 05
requests · limits자원 예약(스케줄링 기준) · 상한(CPU는 느려짐, 메모리는 OOMKilled)입문 3부 · 06
레플리카 · replicas똑같은 Pod의 복제본 · 그 개수. 가용성 · 부하 분산 · 무중단 배포입문 4부 · 01
statelessPod 안에 남아야 할 상태를 두지 않는 앱. 상태는 DB 등 바깥에입문 4부 · 01
ReplicaSet셀렉터로 Pod를 세고 replicas만큼 template으로 찍어 유지하는 컨트롤러입문 4부 · 02
DeploymentReplicaSet을 관리하며 롤링 업데이트 · 롤백을 하는 컨트롤러입문 4부 · 03
rollout · revision버전 교체 과정 · 버전 기록. rollout undo로 되돌림입문 4부 · 03
maxSurge · maxUnavailable교체 중 더 띄울 수 있는 수 · 빠져도 되는 수입문 4부 · 03
DaemonSet노드마다 Pod를 하나씩 띄우는 컨트롤러입문 4부 · 04
Job · CronJob끝나면 완료되는 작업 · 시간표대로 Job을 만드는 것입문 4부 · 05
StatefulSet고정 이름 · 순서 · Pod별 디스크가 필요한 앱(DB 등)용 컨트롤러입문 4부 · 06
Service셀렉터로 묶은 Pod들 앞의 고정 주소 · 이름. 요청을 나눠 보냄입문 5부 · 01
port · targetPortService가 받는 포트 · Pod로 넘기는 포트입문 5부 · 01
EndpointSliceService 뒤의 준비된 Pod IP 목록. 자동으로 갱신입문 5부 · 01
ClusterIP클러스터 안에서만 쓰는 Service 고정 IP · 기본 종류입문 5부 · 02
NodePort모든 노드의 같은 포트(30000~32767)로 Service를 여는 종류입문 5부 · 02
LoadBalancer클라우드 로드밸런서와 외부 IP로 Service를 공개하는 종류입문 5부 · 02
CoreDNS · 서비스 디스커버리Service 이름을 ClusterIP로 바꿔 주는 클러스터 DNS · 이름으로 상대를 찾는 것입문 5부 · 03
headless ServiceclusterIP: None. DNS가 Pod IP 목록을 그대로 돌려줌입문 5부 · 03
Ingress · Ingress 컨트롤러호스트 · 경로 규칙으로 여러 Service에 나누는 입구 · 그 규칙을 실제로 처리하는 프로그램입문 5부 · 04
Gateway APIIngress의 후속 표준입문 5부 · 04
ConfigMap설정을 이미지 밖으로 뺀 객체. 환경 변수나 파일로 넣음입문 6부 · 01
Secret비밀값용 객체. base64는 암호화가 아님 — 권한 · 암호화로 보호입문 6부 · 02
Volume · emptyDir컨테이너 밖 저장 공간 · Pod와 수명이 같은 빈 폴더입문 6부 · 03
PVC · PV디스크 요청서 · 실제 디스크. 짝지어지면 Bound입문 6부 · 04
StorageClassPVC 요청이 오면 디스크와 PV를 자동으로 만드는 규칙 (GKE: standard-rwo 등)입문 6부 · 04
accessModesRWO(한 노드) · ROX(여러 노드 읽기) · RWX(여러 노드 읽기·쓰기)입문 6부 · 04
reclaimPolicyPVC를 지울 때 디스크를 지울지(Delete) 남길지(Retain)입문 6부 · 04
Namespace (쿠버네티스)클러스터 안의 논리적인 칸. 이름 · 권한 · 자원 한도를 나눔입문 7부 · 01
ResourceQuota네임스페이스별 CPU · 메모리 등 총량 한도입문 7부 · 01
HPA평균 지표(CPU 등)를 목표에 맞추도록 replicas를 자동 조절입문 7부 · 02
metrics-serverPod · 노드의 CPU · 메모리 사용량을 모아 HPA와 kubectl top에 제공입문 7부 · 02
클러스터 오토스케일러Pending Pod가 생기면 노드를 자동으로 늘리는 기능입문 7부 · 02
Eventsdescribe 맨 아래의 사건 기록. 문제 해결의 첫 단서입문 7부 · 03
Artifact RegistryGCP의 컨테이너 이미지 저장소 (LOCATION-docker.pkg.dev)입문 7부 · 04
QoS 등급Guaranteed · Burstable · BestEffort. 자원 부족 시 쫓겨나는 순서입문 3부 · 06
컨트롤 플레인클러스터를 결정 · 기록 · 감시하는 부품 묶음. 마스터 노드의 공식 이름전반 1부 · 01
kube-apiserver모든 요청의 정문. 인증 → 인가 → 어드미션을 거쳐 etcd에 저장전반 1부 · 04
etcd클러스터의 모든 상태를 저장하는 키-값 저장소. API 서버만 접근전반 1부 · 03
kube-scheduler새 Pod를 둘 노드를 필터링 · 점수 매기기로 결정 (실행은 kubelet)전반 1부 · 06
kube-controller-managerDeployment · ReplicaSet · Node 등 컨트롤러(제어 루프)를 묶어 실행전반 1부 · 05
CRI · OCICRI = kubelet과 런타임의 연결 규격, OCI = 이미지 · 실행 방식 표준전반 1부 · 02
containerd · runccontainerd = 노드의 기본 컨테이너 런타임, runc = 실제로 프로세스를 띄우는 저수준 런타임전반 1부 · 02
dockershimkubelet 안의 Docker용 통역기. 1.24에서 제거전반 1부 · 02
crictlCRI 런타임을 보는 노드 디버깅 도구 (crictl ps · pods · logs)전반 1부 · 02
인증 · 인가 · 어드미션API 서버의 관문: 누구인가(401) → 해도 되나(403) → 규칙에 맞나전반 1부 · 04
watch변화를 구독하는 방식. 부품들은 API 서버를 지켜보다 자기 일을 한다전반 1부 · 01
하트비트 · Leasekubelet이 약 10초마다 “살아 있다”고 알리는 신호. 끊기면 NotReady전반 1부 · 05
kube-proxy 모드Service 규칙을 만드는 방식: iptables · ipvs(지원 중단 예고) · nftables전반 1부 · 07
kubectl explain클러스터가 아는 필드 이름 · 타입 · 설명을 점(.)으로 따라가며 보기전반 2부 · 01
kubectl api-resources리소스 이름 · 줄임말 · apiVersion · Namespace 소속 여부 목록전반 2부 · 01
API 그룹apiVersion의 / 앞부분. core(v1) · apps · batch · networking.k8s.io 등전반 2부 · 01
ownerReferences만든 쪽(주인)을 기록한 칸. 주인을 지우면 아래가 같이 지워짐전반 2부 · 02
pod-template-hashPod 템플릿의 해시. ReplicaSet · Pod 이름에 붙고, 템플릿이 바뀌면 새 ReplicaSet전반 2부 · 02
nodePortNodePort Service가 모든 노드에 여는 포트 (30000-32767)전반 2부 · 03
--dry-run=client -o yaml만들지 않고 YAML만 출력. 명령형으로 뼈대를 뽑는 방법전반 2부 · 05
kubectl expose대상의 라벨을 셀렉터로 가져와 Service를 만드는 명령전반 2부 · 05
last-applied-configuration지난번 apply 내용을 담은 어노테이션. 지운 필드를 알아내는 데 사용전반 2부 · 05
Server-Side ApplyAPI 서버가 비교 · 병합하고 필드 관리자를 managedFields에 기록하는 apply전반 2부 · 05
nodeName · Binding스케줄러를 건너뛰고 노드를 직접 지정 (만들 때 nodeName, 이미 있으면 Binding)전반 3부 · 01
어노테이션고르는 데 쓰지 않는 부가 정보 키-값 (빌드 번호 · 도구 설정 등)전반 3부 · 02
Taint · Toleration노드의 “접근 금지” 표시와 Pod의 “견딜 수 있음” 허가. 밀어낼 뿐 끌어당기지 않음전반 3부 · 03
NoSchedule · NoExecuteTaint 효과: 새 Pod만 막기 / 이미 돌던 Pod까지 쫓아내기전반 3부 · 03
nodeSelector · Node AffinityPod가 라벨로 노드를 고르는 방법. required(반드시) · preferred(가능하면)전반 3부 · 04
Pod Anti-Affinity같은 라벨의 Pod와 같은 노드 · 영역에 가지 않게 하는 규칙전반 3부 · 05
Topology Spread Constraints영역 사이 Pod 개수 차이를 maxSkew 이하로 유지해 고르게 퍼뜨림전반 3부 · 05
LimitRangeNamespace에서 컨테이너당 requests · limits 기본값 · 최소 · 최대전반 3부 · 06
Static Pod · 거울 Podkubelet이 폴더의 YAML로 직접 띄우는 Pod와, API에 보이는 읽기 전용 복사본전반 3부 · 07
PriorityClass · 선점Pod 우선순위. 자리가 없으면 낮은 Pod를 축출해 자리를 만듦전반 3부 · 08
스케줄러 프로필 · schedulerName플러그인 조합이 다른 스케줄링 규칙과, Pod가 그걸 고르는 칸전반 3부 · 09
cAdvisorkubelet 안에서 컨테이너별 CPU · 메모리 사용량을 재는 부품전반 4부 · 01
kubectl topmetrics-server가 모은 최신 사용량 보기 (과거 기록은 없음)전반 4부 · 01
/readyz · /livezAPI 서버의 자체 점검 주소. componentstatuses 대신 사용전반 4부 · 02
systemctl · journalctlsystemd 서비스(kubelet 등)의 상태 · 로그를 노드에서 보는 도구전반 4부 · 02
kubectl logs --previous재시작 직전 컨테이너의 로그 (하나만 남음)전반 4부 · 03
/var/log/pods노드에 컨테이너 로그가 저장되는 위치. Pod가 지워지면 함께 사라짐전반 4부 · 03
로그 수집기 (Fluent Bit)노드마다 DaemonSet으로 떠서 로그를 중앙 저장소로 보내는 도구전반 4부 · 03
Event TTLEvent는 기본 1시간만 보관 (API 서버 --event-ttl)전반 4부 · 03
Prometheus · Grafana/metrics를 가져와(pull) 시계열로 저장 · 조회하고, 대시보드로 그리는 표준 조합전반 4부 · 04
kube-state-metrics · node-exporter쿠버네티스 객체 상태 / 노드 자원을 Prometheus 지표로 내보내는 도구전반 4부 · 04
AlertmanagerPrometheus 경고를 묶어 메신저 · 메일로 알림전반 4부 · 04
Recreate 전략옛 Pod를 모두 지운 뒤 새 Pod를 띄우는 배포 방식. 중단 시간 발생전반 5부 · 01
change-causerollout history에 남는 변경 이유 어노테이션 (예전 --record 대신)전반 5부 · 01
command · argsPod에서 이미지의 ENTRYPOINT · CMD를 덮어쓰는 칸전반 5부 · 02
envFromConfigMap · Secret의 모든 키를 환경 변수로 넣기전반 5부 · 03
EncryptionConfigurationAPI 서버가 Secret을 etcd에 쓸 때 암호화하게 하는 설정 파일전반 5부 · 04
어댑터 · 앰배서더멀티 컨테이너 패턴: 출력 형식 변환 / 바깥 연결 중계전반 5부 · 05
네이티브 사이드카initContainers에 restartPolicy: Always를 단 사이드카 (1.33 GA)전반 5부 · 05
startupProbe시작이 느린 앱을 위해 성공할 때까지 liveness · readiness를 미루는 probe전반 5부 · 06
In-place Pod Resize실행 중인 Pod의 CPU · 메모리를 재시작 없이 바꾸기 (1.35 GA)전반 5부 · 07
VPA사용량을 보고 적정 requests를 추천 · 적용하는 별도 설치 도구전반 5부 · 07
backoffLimit · completionsJob의 실패 재시도 한도 / 필요한 성공 횟수전반 5부 · 08
concurrencyPolicyCronJob 실행이 겹칠 때: Allow · Forbid(건너뜀) · Replace전반 5부 · 08
cordon · drain · uncordon노드에 새 Pod 막기 / 기존 Pod 내보내기 / 다시 받기전반 6부 · 01
PodDisruptionBudget (PDB)drain 같은 자발적 중단 중에도 최소 몇 개는 유지하라는 약속전반 6부 · 01
버전 차이 규칙 (version skew)API 서버 기준: 컨트롤러 1 낮게, kubelet 3 낮게, kubectl ±1까지 허용전반 6부 · 02
kubeadm upgrade apply · node첫 컨트롤 플레인 노드 / 나머지 노드의 업그레이드 명령전반 6부 · 02
pkgs.k8s.io쿠버네티스 패키지 저장소. 주소에 마이너 버전이 들어감 (apt.kubernetes.io 대체)전반 6부 · 02
etcdctl snapshot save실행 중인 etcd의 상태를 파일로 백업전반 6부 · 03
etcdutl snapshot restore스냅샷 파일을 새 데이터 폴더로 복구 (etcd 3.6부터 etcdctl에서 이동)전반 6부 · 03
Velero리소스와 볼륨 스냅샷을 오브젝트 스토리지에 백업 · 복구하는 도구전반 6부 · 03
인증 · 인가 (Authentication · Authorization)누구인가를 확인 / 무엇을 해도 되는지 판단전반 7부 · 01
OIDC회사 로그인(IdP)이 발급한 토큰으로 사람 사용자를 인증하는 방식전반 7부 · 02
대칭키 · 비대칭키같은 키로 잠그고 열기 / 공개키로 잠그고 개인키로만 열기전반 7부 · 03
CA · 인증서공개키의 주인을 보증하는 서명 기관 / 그 서명이 붙은 공개키 문서전반 7부 · 03
mTLS서버와 클라이언트가 서로 인증서를 보여 주는 TLS전반 7부 · 03
/etc/kubernetes/pkikubeadm 클러스터의 CA · 컴포넌트 인증서가 모인 폴더전반 7부 · 04
kubeadm certs check-expiration클러스터 인증서 만료일 확인 (기본 1년)전반 7부 · 04
CertificateSigningRequest사용자 인증서 서명을 클러스터에 요청하는 객체 (approve로 승인)전반 7부 · 04
kubeconfig · context클러스터 · 사용자 · 둘을 묶은 context를 담은 접속 설정 파일전반 7부 · 05
core 그룹 · named 그룹/api/v1 아래 기본 리소스 / /apis/그룹/버전 아래 리소스전반 7부 · 06
Role · RoleBindingNamespace 안의 권한 규칙 / 그 규칙을 사용자 · 그룹 · SA에 연결전반 7부 · 07
ClusterRole · ClusterRoleBinding클러스터 범위 권한 규칙과 연결전반 7부 · 07
kubectl auth can-i특정 사용자가 어떤 동작을 할 수 있는지 확인전반 7부 · 07
ServiceAccount 토큰Pod에 자동으로 들어가는 시간 제한 토큰 (1.24부터 Secret 자동 생성 없음)전반 7부 · 08
Admission Controller인가 뒤 요청을 고치거나(Mutating) 검사하는(Validating) 관문전반 7부 · 09
Admission 웹훅외부 서버에 허용 · 거절 · 수정을 맡기는 어드미션전반 7부 · 09
ValidatingAdmissionPolicyCEL 식으로 API 서버 안에서 요청을 검사하는 정책 (1.30 GA)전반 7부 · 09
imagePullSecrets비공개 레지스트리 로그인 정보(docker-registry Secret)를 Pod · SA에 연결전반 8부 · 01
이미지 다이제스트태그 대신 @sha256:…로 이미지를 정확히 고정전반 8부 · 01
SecurityContext실행 사용자 · capabilities · 읽기 전용 등 Pod · 컨테이너 권한 설정전반 8부 · 02
capabilitiesroot 권한을 조각낸 것. drop ALL 후 필요한 것만 add전반 8부 · 02
Pod Security AdmissionNamespace 라벨로 privileged · baseline · restricted 수준을 강제 (PSP 대체)전반 8부 · 02
NetworkPolicy라벨로 고른 Pod의 ingress · egress 허용 목록 (CNI가 집행)전반 8부 · 03
default denypodSelector {} 로 Namespace 모든 트래픽을 먼저 막는 정책전반 8부 · 03
copy-on-write · 쓰기 레이어이미지는 읽기 전용, 컨테이너마다 얇은 쓰기 층. 고치면 위로 복사전반 9부 · 01
스토리지 드라이버 (overlay2)레이어를 하나로 겹쳐 보여 주는 장치 (containerd에서는 snapshotter)전반 9부 · 01
CSI저장소를 꽂는 규격. 컨트롤러 플러그인 + 노드 플러그인전반 9부 · 02
Volume ExpansionallowVolumeExpansion + PVC storage 증가로 디스크 확장 (축소 불가)전반 9부 · 02
hostPath노드 폴더를 Pod에 연결. 다른 노드에선 안 보이고 보안 위험전반 9부 · 03
ReadWriteOncePod (RWOP)Pod 하나만 읽기 · 쓰기 가능한 접근 모드 (1.29 GA)전반 9부 · 04
Retain · DeletePVC 삭제 후 PV · 디스크를 남김(Released) / 함께 삭제전반 9부 · 04
동적 프로비저닝PVC가 StorageClass를 지정하면 디스크 · PV를 자동 생성전반 9부 · 05
WaitForFirstConsumerPod가 스케줄될 때 그 영역에 디스크를 만드는 바인딩 모드전반 9부 · 05
volumeClaimTemplatesStatefulSet의 Pod마다 PVC를 하나씩 만드는 틀 (data-db-0 …)전반 9부 · 06
VolumeSnapshotCSI로 볼륨 스냅샷을 뜨고 dataSource로 새 PVC에 복원전반 9부 · 06
스위치 · 라우터 · 게이트웨이같은 네트워크 연결 / 다른 네트워크 연결 / 다른 네트워크로 가는 문전반 10부 · 01
ip_forward리눅스가 받은 패킷을 다른 인터페이스로 넘겨주게 하는 설정 (노드 필수)전반 10부 · 01
/etc/hosts · resolv.conf · nsswitch.conf로컬 이름표 / DNS 서버 · search 도메인 / 조회 순서전반 10부 · 02
network namespace인터페이스 · 라우팅 표가 분리된 방. Pod 하나 = 방 하나전반 10부 · 03
veth · bridge양 끝이 이어진 가상 랜선 / 가상 스위치전반 10부 · 03
MASQUERADE · DNAT나갈 때 출발지 주소 바꾸기 / 들어올 때 목적지 주소 바꾸기전반 10부 · 03
docker0Docker 기본 bridge 네트워크의 가상 스위치 (172.17.0.1)전반 10부 · 04
CNI 플러그인런타임이 ADD · DEL로 부르는 네트워크 연결 프로그램 (/opt/cni/bin, /etc/cni/net.d)전반 10부 · 05
6443 · 10250 · 30000-32767API 서버 / kubelet / NodePort 범위 — 방화벽에 열어야 하는 대표 포트전반 11부 · 01
Pod CIDR클러스터 Pod 대역(예: 10.244.0.0/16). 노드마다 /24씩 나눠 받음전반 11부 · 02
VXLAN · BGP노드 IP로 감싸 보내는 터널 방식 / 노드끼리 경로를 알려 주는 경로 방식전반 11부 · 02
IPAMCNI가 Pod에 IP를 나눠 주고 기록하는 부분 (host-local 등)전반 11부 · 03
Flannel · Calico · Cilium대표 CNI 플러그인 — 단순 오버레이 / BGP · NetworkPolicy / eBPF전반 11부 · 03
Service CIDRClusterIP를 나눠 주는 대역 (예: 10.96.0.0/12). Pod · 노드 대역과 겹치면 안 됨전반 11부 · 04
KUBE-SERVICES · KUBE-SVC · KUBE-SEPkube-proxy가 iptables에 쓰는 체인 — 입구 / Service별 선택 / Pod로 DNAT전반 11부 · 04
CoreDNS · kube-dns클러스터 DNS 서버 Pod / 그 앞의 Service (10.96.0.10)전반 11부 · 05
<svc>.<ns>.svc.cluster.localService의 전체 DNS 이름전반 11부 · 05
ndots:5점이 5개 미만인 이름은 search 도메인부터 붙여 보는 resolv.conf 옵션전반 11부 · 05
Ingress ControllerIngress 규칙을 실제로 처리하는 L7 프록시 Pod (NGINX · Traefik 등)전반 11부 · 06
defaultBackend어떤 Ingress 규칙에도 맞지 않는 요청을 받는 백엔드전반 11부 · 06
GatewayClass · Gateway · HTTPRouteGateway API의 역할별 리소스 — 구현 / 입구 / 경로 규칙전반 11부 · 07
minikube · kind · k3s노트북 학습용 단일 노드 / 컨테이너를 노드처럼 / 가벼운 배포판전반 12부 · 01
관리형 쿠버네티스 (EKS · GKE · AKS)컨트롤 플레인을 클라우드가 운영하고 워커만 관리하는 서비스전반 12부 · 01
maxPodskubelet이 노드에 올릴 수 있는 최대 Pod 수 (기본 110)전반 12부 · 01
고가용성 (HA)컨트롤 플레인 3대 이상 + 로드밸런서로 한 대가 죽어도 동작하는 구성전반 12부 · 02
--control-plane-endpoint모든 부품이 접속할 API 서버 공용 주소 (LB · 가상 IP · DNS)전반 12부 · 02
kube-vip컨트롤 플레인 노드에 Static Pod로 떠서 가상 IP를 제공하는 도구전반 12부 · 02
리더 선출 · Lease스케줄러 · 컨트롤러 매니저 중 Lease를 잡은 하나만 일하는 방식전반 12부 · 02
Raftetcd가 쓰는 합의 알고리즘 — 리더가 쓰고 과반이 복제하면 확정전반 12부 · 03
쿼럼 (quorum)확정에 필요한 과반 수 N/2 + 1. 3대면 2, 5대면 3전반 12부 · 03
stacked · external etcd컨트롤 플레인 노드에 etcd를 같이 / 전용 서버에 따로 두는 구성전반 12부 · 03
pkgs.k8s.io쿠버네티스 공식 패키지 저장소. 마이너 버전마다 주소가 다름전반 12부 · 04
SystemdCgroupcontainerd가 systemd cgroup 드라이버를 쓰게 하는 설정전반 12부 · 04
kubeadm init · join컨트롤 플레인 만들기 / 노드를 클러스터에 붙이기전반 12부 · 04
bootstrap tokenjoin할 때 처음 인증에 쓰는 임시 토큰 (기본 24시간)전반 12부 · 04
TLS 부트스트랩새 노드의 kubelet이 인증서를 신청해 받아 오는 과정전반 12부 · 04
HelmYAML 묶음을 앱 단위로 설치 · 업그레이드 · 롤백 · 삭제하는 패키지 관리자전반 13부 · 01
TillerHelm 2가 클러스터 안에 두던 서버 부품. 권한 문제로 Helm 3에서 제거전반 13부 · 02
3방향 병합 패치이전 차트 · 실제 상태 · 새 차트를 함께 비교해 변경을 계산 (Helm 3~)전반 13부 · 02
Helm 42025년 11월 출시. server-side apply 기본, --rollback-on-failure, WASM 플러그인전반 13부 · 02
chart · release · revision설치 묶음 / 설치된 인스턴스 / 바뀔 때마다 늘어나는 번호전반 13부 · 03
Artifact Hub공개 Helm chart를 찾는 사이트 (helm search hub)전반 13부 · 03
OCI 레지스트리 (chart)컨테이너 레지스트리에 chart를 저장 · 설치 (oci://…)전반 13부 · 03
Chart.yaml (version · appVersion)chart 자체 버전 / 안에 든 앱 버전전반 13부 · 04
values.yaml · --set · -f기본값 / 명령줄 덮어쓰기 / 파일 덮어쓰기 (나중 것이 이김)전반 13부 · 04
helm template템플릿을 채운 결과만 출력하고 클러스터에는 보내지 않음전반 13부 · 04
helm rollback예전 revision의 설정으로 새 revision을 만듦 (데이터는 그대로)전반 13부 · 05
chart hookpre-upgrade 등 설치 단계 사이에 Job을 끼워 넣는 어노테이션전반 13부 · 05
Kustomize템플릿 없이 평범한 YAML에 덮어쓰기를 적용하는 도구 (kubectl -k 내장)전반 14부 · 01
kustomization.yaml가져올 resources와 적용할 transformer · patch를 적는 설정 파일전반 14부 · 02
kubectl kustomize · apply -k결과 YAML 출력만 (= kustomize build) / 만들어서 바로 적용전반 14부 · 02
transformerlabels · namePrefix · namespace처럼 모든 리소스를 한꺼번에 바꾸는 규칙전반 14부 · 04
images transformer원본 image 값을 찾아 newName · newTag · digest로 바꿈전반 14부 · 04
configMapGenerator내용 해시를 이름에 붙인 ConfigMap을 만들어 변경 시 롤링 업데이트 유도전반 14부 · 04
JSON 6902 patchop · path · value로 정확한 위치를 바꾸는 patch전반 14부 · 05
strategic merge patch바꿀 부분만 남긴 YAML을 겹치는 patch. 리스트는 name으로 짝 맞춤전반 14부 · 05
$patch: deletestrategic merge patch에서 리스트 항목 · 필드를 지우는 표시전반 14부 · 05
base · overlay공통 YAML 한 벌 / 환경마다 base를 가져와 덧씌우는 폴더전반 14부 · 06
Component (Kustomize)여러 overlay가 골라서 가져다 쓰는 기능 묶음 (kind: Component)전반 14부 · 06
CRD (CustomResourceDefinition)새 리소스 종류를 API 서버에 등록하는 정의 (이름은 plural.group)전반 15부 · 01
Custom Resource (CR)CRD로 등록한 종류로 만든 객체 하나전반 15부 · 01
served · storage (CRD 버전)그 버전으로 요청을 받는지 / etcd 저장에 쓰는 버전(하나만)전반 15부 · 01
x-kubernetes-validationsCRD 스키마에 CEL 식으로 적는 검증 규칙 (1.29 GA)전반 15부 · 01
status subresourcespec(사용자)과 status(컨트롤러)를 따로 갱신하게 하는 CRD 설정전반 15부 · 01
조정 루프 (reconcile)watch → 원하는 상태와 실제 상태 비교 → 맞추기 → status 기록 반복전반 15부 · 02
informer · workqueueAPI 변경을 받아 캐시에 두는 부품 / 처리할 객체 이름을 줄 세우는 큐전반 15부 · 02
kubebuilderCRD · 컨트롤러 뼈대를 만드는 공식 도구 (controller-runtime)전반 15부 · 02
finalizer외부 정리가 끝날 때까지 객체 삭제를 붙잡아 두는 metadata 표시전반 15부 · 02
ownerReference하위 리소스에 적는 주인. 주인이 지워지면 가비지 컬렉터가 함께 삭제전반 15부 · 02
Operator특정 앱의 운영 지식을 CRD + 컨트롤러로 자동화한 것전반 15부 · 03
Operator SDK · OLM · OperatorHubOperator 제작 도구 / 설치 · 업그레이드 관리자 / 공개 Operator 목록전반 15부 · 03
CrashLoopBackOff컨테이너가 죽고 재시작하기를 반복해 재시작 간격을 늘리는 상태 (원인은 로그 · 종료 코드)전반 16부 · 02
종료 코드 137 · 143SIGKILL(OOMKilled · liveness 실패) / SIGTERM(정상 종료 요청)전반 16부 · 02
kubectl logs --previous직전에 죽은 컨테이너의 로그 보기전반 16부 · 01
kubectl events객체별 · 시간순 이벤트 조회 (1.28 GA). 이벤트는 기본 1시간 보관전반 16부 · 01
crictl ps -a · crictl logsAPI 서버 없이 노드에서 컨테이너 상태 · 로그 보기전반 16부 · 03
NotReady · Unknown노드 이상 / kubelet 보고가 끊겨 상태를 모름전반 16부 · 04
node.kubernetes.io/unreachable보고가 끊긴 노드에 붙는 taint. Pod는 기본 300초 뒤 다른 노드로전반 16부 · 04
journalctl -u kubeletkubelet 서비스 로그 — 노드 장애의 첫 단서전반 16부 · 04
CoreDNS loop노드 resolv.conf가 로컬 DNS를 가리켜 생기는 질의 루프 → CrashLoopBackOff전반 16부 · 05
임시 컨테이너 (ephemeral container)실행 중인 Pod에 디버깅 컨테이너를 붙이는 기능 (1.25 GA)전반 16부 · 06
kubectl debug임시 컨테이너(--target) · 복사본(--copy-to) · 노드(node/…) 디버깅전반 16부 · 06
JSON PathJSON 안의 값을 경로로 고르는 문법 ($ · .키 · [n] · [*] · [?(@…)])전반 17부 · 01
@ (JSON Path)조건식 안에서 지금 검사하는 리스트 항목전반 17부 · 01
-o jsonpathkubectl 결과에서 원하는 값만 출력. 목록은 .items[*]부터전반 17부 · 01
range … endjsonpath에서 항목마다 반복 출력 (\t · \n으로 줄 맞춤)전반 17부 · 01
-o custom-columns열이름:경로로 원하는 열만 골라 표 출력전반 17부 · 02
--sort-by지정한 경로의 값으로 오름차순 정렬전반 17부 · 02
--field-selectorstatus.phase · spec.nodeName 같은 정해진 필드로 거르기전반 17부 · 02
KYAML (-o kyaml)들여쓰기에 덜 민감한 YAML 방언 출력 (1.35 beta)전반 17부 · 02
--dry-run=client -o yaml만들지 않고 YAML 뼈대만 출력 — 파일로 저장해 고쳐 씀전반 17부 · 03
kubectl explain리소스 필드의 위치 · 형식 · 설명 보기 (--recursive)전반 17부 · 03
kuberckubectl alias · 기본 옵션을 담는 개인 설정 파일 ~/.kube/kuberc (1.34 beta)전반 17부 · 03
스터디를 하며 이어서 정리합니다 · 01 입문 → 02 전반