이 정도는 안다
kubectl get pod은 쳐봤고,
Deployment가 뭔지는 안다.
이 덱을 어떻게 읽을 것인가
“이 명령을 외운다”가 아니라 **“이 명령을 쳤을 때 클러스터 안에서 무슨 일이 벌어지는가”**를 남긴다.
flowchart LR
C["개념<br/>무엇인가"] --> A["실제 동작<br/>안에서 무슨 일이"] --> CMD["명령<br/>어떻게 하나"] --> P["함정<br/>어디서 틀리나"]
P -.->|"다음 주제에서 반복"| C
classDef key fill:#dbeafe,stroke:#2563eb,color:#1e3a8a
classDef bad fill:#fee2e2,stroke:#dc2626,color:#7f1d1d
classDef mute fill:#f1f5f9,stroke:#94a3b8,color:#334155
class A key
class P bad
class C,CMD mute
이 정도는 안다
kubectl get pod은 쳐봤고,
Deployment가 뭔지는 안다.
그런데 여기서 막힌다
“Pod이 Pending인데 왜 그런지” 를 30초 안에 못 짚는다.
이건 불안하다
etcd 백업·복구, kubeadm 업그레이드처럼 평소에 안 하는 작업.
이게 가장 큰 문제
실무는 EKS/GKE 같은 관리형이라 컨트롤 플레인을 만져본 적이 없다.
전부 해당된다면 정확히 이 덱의 대상이다. 특히 마지막 항목 — CKA 배점의 25%가 관리형에서 못 만지는 영역이다.
| 장 | 주제 | CKA 도메인 |
|---|---|---|
| 1 | 시험 자체 | — |
| 2~3 | 아키텍처 · kubectl | 기초 |
| 4~8 | Pod · 워크로드 · 설정 · 스케줄링 · 오토스케일링 | Workloads & Scheduling (15%) |
| 9~12 | Service · DNS · Ingress/Gateway · NetworkPolicy | Services & Networking (20%) |
| 13 | 스토리지 | Storage (10%) |
| 14~17 | RBAC · 클러스터 라이프사이클 · Helm/Kustomize · 확장 | Cluster Architecture (25%) |
| 18 | 트러블슈팅 | Troubleshooting (30%) |
| 19~20 | 시험 전략 · 마무리 | — |
배점 순서와 학습 순서는 다르다.
flowchart LR
B["기초<br/>2~3장"] --> W["워크로드<br/>4~8장"] --> N["네트워크<br/>9~12장"] --> S["스토리지<br/>13장"] --> C["클러스터<br/>14~17장"] --> T["트러블슈팅<br/>18장 · 30%"]
T -.->|"앞의 전부가 재료다<br/>그래서 마지막"| B
classDef key fill:#fee2e2,stroke:#dc2626,color:#7f1d1d
classDef mute fill:#f1f5f9,stroke:#94a3b8,color:#334155
class T key
class B,W,N,S,C mute
트러블슈팅이 30%지만 마지막에 있는 이유는, 앞의 전부를 알아야 진단이 되기 때문이다.
Kubernetes의 모든 것은 “선언된 상태”와 “실제 상태”의 차이를 줄이는 루프다.
flowchart LR
SPEC["spec<br/>당신이 쓴 원하는 상태"] --> CTRL["컨트롤러<br/>차이를 관찰한다"]
CTRL -->|"차이만큼 행동"| REAL["실제 클러스터"]
REAL --> STATUS["status<br/>실제 상태"]
STATUS --> CTRL
STUCK["문제가 생겼다<br/>= 루프가 어딘가에서 막혔다"] -.-> CTRL
classDef key fill:#dbeafe,stroke:#2563eb,color:#1e3a8a
classDef ok fill:#dcfce7,stroke:#16a34a,color:#14532d
classDef bad fill:#fee2e2,stroke:#dc2626,color:#7f1d1d
classDef mute fill:#f1f5f9,stroke:#94a3b8,color:#334155
class SPEC key
class STATUS ok
class STUCK bad
class CTRL,REAL mute
트러블슈팅 30%가 결국 이 한 문장이다. **“어느 루프가 어디서 멈췄나”**를 찾는 것.
명령 표기
k = kubectl (시험 환경에 alias가 걸려 있다)-n <ns> 는 대부분 생략해서 적었다. 실제 시험에서는 거의 항상 필요하다sudo 를 붙여 표기YAML은 시험에서 그대로 쓸 수 있게 축약 없이 적었다.
이 덱은 읽는 자료다. 손은 클러스터에서 움직여야 한다.
| 용도 | 도구 | 비고 |
|---|---|---|
| 로컬 멀티노드 | kind (+ Docker/colima) | 가장 빠르게 뜬다. 컨트롤 플레인이 컨테이너 |
| 업그레이드·etcd 연습 | killercoda | 무료. 진짜 kubeadm 노드를 준다 |
| 0→1 클러스터 구축 | VM 2대 (Multipass/UTM 등) | kubeadm init 을 한 번은 직접 해봐야 한다 |
| 시험 직전 모의고사 | killer.sh | 시험 등록 시 2세션 포함. 실제보다 어렵다 |
flowchart LR
Q{"무엇을 연습하나"}
Q -->|"워크로드 · 네트워크 · RBAC"| KIND["kind<br/>빠르게 뜬다 ✅"]
Q -->|"업그레이드 · etcd · 컨트롤 플레인"| KC["killercoda<br/>진짜 kubeadm 노드 ✅"]
Q -->|"0에서 클러스터 만들기"| VM["VM 2대<br/>kubeadm init 직접"]
KIND -.->|"노드가 컨테이너라<br/>apt install kubeadm 흐름이 다르다 ❌"| KC
classDef ok fill:#dcfce7,stroke:#16a34a,color:#14532d
classDef bad fill:#fee2e2,stroke:#dc2626,color:#7f1d1d
classDef mute fill:#f1f5f9,stroke:#94a3b8,color:#334155
class KIND,KC ok
class VM mute
class Q mute
버전이 올라가도 이 덱의 개념 부분은 거의 그대로다. 바뀌는 건 주로 API 버전 표기와 새로 GA된 기능 몇 개다.