형식
2시간, 원격 감독(웹캠 필수). 15~20개의 수행형 과제. 합격선 66%. 문제는 순서 무관. 재응시 1회 무료 포함.
무엇이 나오고, 어떻게 채점되는가
형식
2시간, 원격 감독(웹캠 필수). 15~20개의 수행형 과제. 합격선 66%. 문제는 순서 무관. 재응시 1회 무료 포함.
환경
브라우저 안의 리눅스 데스크톱 + 터미널.
진짜 클러스터 여러 개를 준다.
문제마다 kubectl config use-context ... 를 먼저 실행.
노드 접속은 ssh <노드이름>, 권한은 sudo -i.
flowchart LR
T["Troubleshooting<br/>30%<br/>18장"]
C["Cluster Architecture<br/>25%<br/>14~17장"]
N["Services & Networking<br/>20%<br/>9~12장"]
W["Workloads & Scheduling<br/>15%<br/>4~8장"]
S["Storage<br/>10%<br/>13장"]
T --- C
C --- N
N --- W
W --- S
SUM["T + C = 55%<br/>여기가 승부처다"] -.- T
SUM -.- C
classDef big fill:#fee2e2,stroke:#dc2626,color:#7f1d1d
classDef mid fill:#fef3c7,stroke:#d97706,color:#78350f
classDef small fill:#dbeafe,stroke:#2563eb,color:#1e3a8a
classDef note fill:#dcfce7,stroke:#16a34a,color:#14532d
class T,C big
class N,W mid
class S small
class SUM note
| 비중 | 도메인 | 이 덱의 장 |
|---|---|---|
| 30% | Troubleshooting | 18장 |
| 25% | Cluster Architecture, Installation and Configuration | 14~17장 |
| 20% | Servicing and Networking | 9~12장 |
| 15% | Workloads and Scheduling | 4~8장 |
| 10% | Storage | 13장 |
Workloads and Scheduling (15%)
Storage (10%)
굵게 표시한 항목들이 최근 개정에서 들어오거나 강조된 것들이다.
flowchart LR
NEW["최근 개정에서 강조된 것"]
NEW --> G["Gateway API<br/>Ingress 만 알면 안 된다 · 11장"]
NEW --> H["Helm / Kustomize<br/>설치·값 오버라이드 · 16장"]
NEW --> C["CRD와 오퍼레이터<br/>설치하고 상태 확인 · 17장"]
NEW --> A["워크로드 오토스케일링<br/>HPA + metrics-server · 8장"]
NEW --> L["컨테이너 출력 스트림<br/>로그 전반 · 18장"]
OLD["오래된 자료의 함정"] -.->|"Docker · PodSecurityPolicy 를 다루고<br/>Gateway API 가 없다 ❌"| NEW
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 NEW key
class OLD bad
class G,H,C,A,L mute
kubectl logs 옵션 전부 + 노드의 로그 파일 위치 (18장)| 항목 | 상태 |
|---|---|
k alias |
kubectl로 설정되어 있다 |
| bash 자동완성 | 켜져 있다 |
yq |
설치되어 있다 (YAML 편집에 유용) |
curl / wget |
있다 — Service 연결 확인용 |
man |
있다 |
| 편집기 | vim, nano 등 |
Ctrl+Shift+C / Ctrl+Shift+V — 터미널 안에서는 Ctrl+C가 안 된다Insert 키가 막혀 있다 — vim에서 삽입 모드는 i, 빠져나오기는 Escexit 해서 원래 셸로 돌아올 것flowchart LR
Q1["문제 N"] --> SSH["ssh node01"] --> WORK["노드에서 작업"]
WORK -->|"exit 했다 ✅"| BACK["원래 셸<br/>다음 문제 정상"]
WORK -->|"exit 을 잊었다 ❌"| STUCK["노드 셸에 남는다<br/>kubectl 이 다른 kubeconfig 를 보거나 아예 없다"]
STUCK --> WHY["'갑자기 명령이 안 먹는다' 의 90%"]
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 BACK ok
class STUCK,WHY bad
class Q1,SSH,WORK mute
YAML을 손으로 고쳐야 하는 순간은 반드시 온다.
" ~/.vimrc — 시험 시작하자마자 만들어도 좋다set expandtabset tabstop=2set shiftwidth=2set number이동
gg / G — 처음 / 끝
:42 — 42번 줄로
/문자열 + n — 검색
편집
dd / 3dd — 줄 삭제
yy + p — 줄 복사·붙여넣기
u / Ctrl+r — 실행 취소 / 되돌리기
V + > — 블록 들여쓰기
시험 중 브라우저에서 아래만 열 수 있다.
flowchart LR
OK["열 수 있다 ✅"] --> O1["kubernetes.io/docs/<br/>검색 기능 포함"]
OK --> O2["kubernetes.io/blog/"]
OK --> O3["helm.sh/docs/"]
OK --> O4["gateway-api.sigs.k8s.io/"]
OK --> O5["문제의 Quick Reference 링크"]
NG["열면 안 된다 ❌"] --> N1["GitHub"]
NG --> N2["StackOverflow"]
NG --> N3["블로그 전부"]
NOTE["검색은 되지만<br/>외부 사이트 클릭에 주의"] -.- NG
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 OK,O1,O2,O3,O4,O5 ok
class NG,N1,N2,N3 bad
class NOTE mute
그래서 “공식 문서 어디에 뭐가 있는지” 자체가 실력이다. 평소 연습할 때부터 다른 사이트를 끊고 kubernetes.io만 보자.
외우는 게 아니라 검색어를 외운다.
| 필요한 것 | 검색어 | 얻는 것 |
|---|---|---|
| PV/PVC YAML | persistent volume |
완성된 매니페스트 |
| NetworkPolicy | network policies |
예제 5종 (deny-all 포함) |
| Ingress | ingress |
규칙·TLS 예제 |
| Gateway API | (Gateway API 사이트) http routing |
Gateway + HTTPRoute 짝 |
| RBAC | rbac |
Role/RoleBinding 예제 |
| etcd 백업 | operating etcd |
etcdctl snapshot 전체 명령 |
| 업그레이드 | upgrade kubeadm clusters |
단계별 명령 |
| Pod 스케줄링 | assign pods nodes |
affinity 문법 |
flowchart LR
M1["kubectl create 로 만들었다"] --> R["클러스터의 최종 상태"]
M2["YAML 파일로 만들었다"] --> R
M3["kubectl edit 으로 고쳤다"] --> R
R --> SCORE["자동 검증 스크립트가 채점<br/>어떻게 만들었는지는 상관없다"]
SCORE --> PART["부분 점수가 있다<br/>맞춘 요구만큼 받는다"]
classDef key fill:#dbeafe,stroke:#2563eb,color:#1e3a8a
classDef ok fill:#dcfce7,stroke:#16a34a,color:#14532d
classDef mute fill:#f1f5f9,stroke:#94a3b8,color:#334155
class R key
class PART ok
class M1,M2,M3,SCORE mute
kubectl create든 YAML 파일이든 동일2시간 / 17문제 ≈ 문제당 7분. 그런데 난이도가 균일하지 않다.
전체를 한 번 훑으며 쉬운 것부터 처리
배점이 문제마다 표시된다. 3분 안에 풀리는 것을 먼저 끝낸다.
막히면 플래그 걸고 즉시 넘어간다 — 5분 룰
남은 시간에 플래그로 돌아온다
마지막 10분은 검산
컨텍스트 실수, 네임스페이스 실수를 확인한다.
| 시기 | 할 일 |
|---|---|
| 1~2주차 | 아키텍처·kubectl·Pod·워크로드 (2~6장). kind로 손에 익히기 |
| 3~4주차 | 스케줄링·Service·DNS·Ingress·NetworkPolicy (7~12장) |
| 5주차 | 스토리지·RBAC (13~14장). 여기는 문제 유형이 좁으니 확실히 |
| 6~7주차 | 클러스터 라이프사이클 (15장) — killercoda에서 업그레이드·etcd 10회 이상 반복 |
| 8주차 | 트러블슈팅(18장) 집중 + killer.sh 1세션 |
| 시험 직전 | killer.sh 2세션, 틀린 것만 복습, 치트시트 손에 붙이기 (19장) |
15장(라이프사이클)에 가장 많은 시간을 써야 한다. 평소에 안 하는 작업이라 반복 말고는 방법이 없다.
exit, vim은 expandtab