형식
2시간, 원격 감독(웹캠 필수). 15~20개의 수행형 과제. 합격선 66%. 문제는 순서 무관. 재응시 1회 무료 포함.
무엇이 나오고, 어떻게 채점되는가
형식
2시간, 원격 감독(웹캠 필수). 15~20개의 수행형 과제. 합격선 66%. 문제는 순서 무관. 재응시 1회 무료 포함.
환경
브라우저 안의 리눅스 데스크톱 + 터미널.
진짜 클러스터 여러 개를 준다.
문제마다 지정된 SSH 호스트·context를 먼저 확인.
노드 접속은 ssh <노드이름>, 권한은 sudo -i.
| 비중 | 도메인 | 이 덱의 장 |
|---|---|---|
| 30% | Troubleshooting | 트러블슈팅 |
| 25% | Cluster Architecture, Installation and Configuration | |
| 20% | Servicing and Networking | |
| 15% | Workloads and Scheduling | |
| 10% | Storage | 스토리지 |
Workloads and Scheduling (15%)
Storage (10%)
굵게 표시한 항목들이 최근 개정에서 들어오거나 강조된 것들이다.
kubectl logs 옵션 전부 + 노드의 로그 파일 위치 (트러블슈팅)내 컴퓨터의 PSI Secure Browser → 시험용 원격 Linux 데스크톱 → Firefox·터미널 구조다. PSI Secure Browser는 감독 플랫폼에 접속하는 전용 브라우저이고, 문서 열람과 문제 풀이는 그 안에 표시되는 원격 데스크톱에서 한다. 공식 ExamUI 안내에서 실제 화면도 볼 수 있다.
| 화면·도구 | 사용하는 곳 |
|---|---|
| 문제 패널 / ReadMe | 문제 조건과 시험 환경 지시 확인 |
| 원격 Firefox | 허용된 공식 문서 열람·검색 |
| Terminal Emulator | 지정 호스트에 SSH 접속해 작업 |
| VSCodium | 원격 GUI 편집기. 확장 설치는 금지 |
ExamUI Tour가 끝나거나 Hide를 누르면 시험 타이머가 시작된다. 문제 패널 경계와 창 크기를
조절할 수 있고, 설정 메뉴에서 원격 화면 해상도를 바꿀 수 있다. 휴식 요청이나 연결 끊김은
타이머를 멈추지 않는다.
미리 저장한 개인 브라우저 북마크는 시험 환경에서 사용할 수 없다. Linux Foundation의 PSI 전환 안내에 명시된 제한이다. 허용 문서는 원격 Firefox에서 열고, 문제에 제공된 Quick Reference 링크도 활용한다. 현재 허용 범위는 Resources Allowed와 아래 문서 활용에 정리했다.
연습할 때도 북마크 없이 공식 사이트 내부 검색 → Ctrl+F로 예제 찾기 → 복사·수정을 해 본다.
이 덱은 시험 전 학습용이며 시험 중 열람 자료가 아니다.
공식 기술 지침에 따르면
아래 명령 도구는 지정된 SSH 호스트에 준비되어 있다. 접속 출발점인 base에는 이 도구들이
사전 설치되어 있지 않다. 문제 지시대로 ssh <호스트> → 작업 → exit으로 돌아오며,
중첩 SSH는 지원하지 않는다. base를 재부팅해서는 안 된다.
| 항목 | 상태 |
|---|---|
k alias | kubectl로 설정되어 있다 |
| bash 자동완성 | 켜져 있다 |
yq | 설치되어 있다 (YAML 편집에 유용) |
curl / wget | 있다 — Service 연결 확인용 |
man | 있다 |
Ctrl+Shift+C / Ctrl+Shift+V — Ctrl+C는 실행 중인 명령을 중단한다Ctrl+C / Ctrl+V — Mac으로 응시해도 원격 화면은 Linux다Insert 키가 막혀 있다 — vim에서 삽입 모드는 i, 빠져나오기는 Escexit 해서 원래 셸로 돌아올 것YAML의 필드·경로를 고칠 때는 검색 → 필요한 부분만 편집 → 저장 → 검증을 반복한다.
Vim은 모드에 따라 같은 키의 의미가 달라진다. 조작이 꼬이면 먼저 Esc로 일반 모드로 돌아온다.
아래 이동·편집 키는 일반 모드 기준이며, : 명령과 검색은 입력 뒤 Enter를 누른다.
| 모드 | 들어가는 법 | 하는 일 |
|---|---|---|
| 일반 모드 | Esc | 이동·검색·삭제·복사 |
| 삽입 모드 | i | 문자 입력. 끝나면 Esc |
| 줄 선택 모드 | V | j·k로 여러 줄 선택 후 들여쓰기·복사 |
| 명령줄 모드 | : | 저장·종료·설정. 실행은 Enter |
기본 설정으로 편집하고, 들여쓰기 동작이 불편할 때만 보완한다. Tab 입력과 들여쓰기가
원하는 대로 동작하면 파일마다 설정을 조회하거나 .vimrc를 수정할 필요가 없다.
실습에서 별도 설정 없이 잘 동작했다면 그대로 사용한다. 다만 실습에서 본 설정값을
모든 시험 호스트의 보장된 기본값으로 가정하지는 않는다.
Tab·Backspace의 공백 처리나 >>·<<의 이동 폭이 예상과 다를 때는 YAML을 연 상태에서
아래 명령으로 확인하고 보완할 수 있다. ?는 값을 바꾸지 않고 조회한다.
:set et? ts? sts? sw? ai?:set et ts=2 sts=2 sw=2 ai첫 줄은 조회, 둘째 줄은 공백 2칸으로 편집하고 싶을 때 쓰는 설정 예다. 필요한 옵션만 골라 적용해도 된다.
Vim 안에서 직접 입력할 때는 약어를, .vimrc에 적을 때는 읽기 쉬운 풀 이름을 쓴다. 둘은 같은 옵션이다.
| 풀 이름 | 약어 | 효과 |
|---|---|---|
expandtab | et | Tab 입력을 공백으로 넣음 |
tabstop=2 | ts=2 | 기존 탭 문자의 표시 간격을 2칸으로 설정 |
softtabstop=2 | sts=2 | 삽입 중 Tab·Backspace의 공백 처리 단위를 2칸으로 설정 |
shiftwidth=2 | sw=2 | >>·<<로 옮기는 들여쓰기 단위를 2칸으로 설정 |
autoindent | ai | 새 줄에 이전 줄의 들여쓰기를 이어받음 |
number | nu | 줄 번호 표시 |
incsearch | is | 입력 중 검색 결과로 이동 |
hlsearch | hls | 검색 결과 강조 |
number·incsearch·hlsearch는 탐색 편의를 위한 선택 사항이다.
약어와 풀 이름은 Vim 옵션 도움말에 함께 명시되어 있다.
YAML 들여쓰기에는 탭 대신 공백을 사용한다. 2칸은 이 실습의 편집 기준이며 YAML이 모든 깊이에
반드시 2칸을 요구하는 것은 아니다. 기존 파일에서는 같은 계층의 정렬과 부모·자식 관계를 유지한다.
expandtab은 이미 파일 안에 들어간 탭을 자동으로 제거하지는 않는다.
설정 의미는 Vim 옵션 도움말에서 확인할 수 있다.
같은 설정을 반복해서 보완해야 한다면 기존 ~/.vimrc를 먼저 읽고 필요한 항목만 추가하거나 수정한다.
아래는 선택할 수 있는 설정 예이며, 기존 파일을 통째로 덮어쓰지 않는다.
저장한 설정은 다음에 Vim을 실행할 때 읽는다.
set expandtabset tabstop=2set softtabstop=2set shiftwidth=2set autoindentset numberset incsearchset hlsearch~/.vimrc를 고쳐도 이미 열려 있는 Vim에는 자동 반영되지 않는다. :source ~/.vimrc로 다시 읽는다.
설정은 그 호스트, 그 사용자에게 적용된다. base에서 만든 파일은 다른 호스트에 따라가지 않고,
sudo -i로 root가 되면 /root/.vimrc를 따로 본다. root에서도 편집이 잘 되면 추가 설정은 필요 없다.
실습에서 확인한 set sw=2, set et, set ts=2, set ai는 위 표의 옵션을 약어로 쓴 것이다.
같은 옵션·값이라면 풀 이름으로 바꿔 적을 필요가 없다.
해당 .vimrc에 sts가 없다고 Tab이 잘못 동작하는 것도 아니다. et와 ts=2로도
Tab을 공백으로 넣을 수 있고, 이 덱에서는 삽입·삭제 단위를 명확히 하기 위해 sts=2도 지정한다.
파일을 연 뒤의 실제 값은 플러그인 설정까지 반영된다. 동작이 예상과 다를 때만 위 조회 명령으로 확인한다.
나머지 줄은 다음 역할을 맡는다. 이 구성은 확인한 실습 환경의 사례이며 모든 랩의 기본값을 뜻하지 않는다.
| 설정 | 역할 |
|---|---|
set termguicolors | 터미널의 True Color 사용 |
syntax on | 코드 구문 강조 켜기 |
colorscheme dracula | 설치된 Dracula 색상 테마 적용 |
execute pathogen#infect() | Pathogen이 관리하는 플러그인을 Vim의 로딩 경로에 추가 |
filetype plugin indent on | 파일 형식을 감지하고 해당 형식의 플러그인·들여쓰기 규칙 로드 |
filetype plugin indent on은
이전 줄의 공백을 이어받는 ai보다 파일 형식에 맞춘 동작을 더한다.
Pathogen과 Dracula는
실습 환경에 설치된 구성 요소다. 기존 환경에서는 유지하고, 다른 노드의 .vimrc를 준비할 때는
이 줄들을 통째로 복사하지 않고 필요한 편집 옵션만 보완한다.
공식 예제에서 containers: 아래의 -가 같은 열에 있기도 하고, 두 칸 더 들어가 있기도 하다.
키의 값이 목록일 때는 두 표기 모두 유효하며 같은 데이터로 해석된다.
YAML 명세의 블록 컬렉션 규칙이 허용하는 문법이다.
# 부모 키와 같은 열에 놓기containers:- name: nginx image: nginx:alpine# 부모 키보다 두 칸 더 들여쓰기containers: - name: nginx image: nginx:alpinename과 image는 같은 컨테이너의 필드이므로 서로 정렬한다. 컨테이너를 더 추가하면
같은 목록 안의 항목들은 - 위치를 맞춘다. 반면 containers와 volumes처럼
서로 다른 목록은 한 파일에서 두 방식을 섞어도 된다. 이 허용 규칙은 목록에 관한 것이며,
metadata 아래의 name 같은 일반 자식 필드까지 부모와 같은 열에 놓아도 된다는 뜻은 아니다.
Kubernetes 공식 예제에도 두 방식이 있다.
기본 Pod 예제는 키와 -를 같은 열에 두고,
PV를 사용하는 Pod 예제는 두 칸 더 들여쓴다.
| 키 | 이동 위치 |
|---|---|
h / j / k / l | 왼쪽 / 아래 / 위 / 오른쪽. 방향키도 사용 가능 |
0 | 줄의 맨 처음, 들여쓰기 공백 앞. 숫자 0 |
^ | 줄의 첫 공백 아닌 문자. YAML 필드 이름으로 이동할 때 유용 |
$ | 줄의 마지막 문자 |
w / b | 다음 단어 시작 / 이전 단어 시작 |
gg / G | 파일 첫 줄 / 마지막 줄 |
:42 | 42번 줄 |
/server | 아래 방향으로 server 검색 후 Enter |
?server | 위 방향으로 검색 후 Enter |
n / N | 같은 검색 방향의 다음 결과 / 반대 방향 결과 |
:noh | 검색 강조만 지움. 검색어는 유지 |
예를 들어 server: https://controlplane:6553에서 0은 첫 공백으로, ^는 s로,
$는 마지막 3으로 이동한다. /server는 파일 내용 검색이며 셸에서 실행하는 명령이 아니다.
Vim 이동 도움말과 검색 도움말이 정본이다.
| 키 | 동작 |
|---|---|
i / a | 커서 앞 / 뒤에서 입력 시작 |
I | 첫 공백 아닌 문자 앞에서 입력 시작. 대문자 i |
A | 줄 끝에서 입력 시작 |
o / O | 아래 / 위에 새 줄을 만들고 입력 시작 |
x | 커서의 문자 하나 삭제 |
D | 커서부터 줄 끝까지 삭제. 줄 자체는 남는다 |
C | 커서부터 줄 끝까지 지우고 바로 입력 시작. 값 뒷부분 교체에 쓴다 |
cc | 줄 내용을 지우고 들여쓰기를 유지한 채 입력 시작 |
dd / 3dd | 현재 줄 / 현재 줄부터 3줄 삭제 |
yy → p | 현재 줄 복사 후 아래에 붙이기. P는 위에 붙이기 |
u / Ctrl+r | 실행 취소 / 취소한 변경 다시 실행 |
:w | 저장 |
:q | 종료. 저장하지 않은 변경이 있으면 거부 |
:wq | 저장 후 종료 |
:q! | 마지막 저장 이후 변경을 버리고 종료 |
Vim의 yy·p는 편집기 내부 복사·붙여넣기다. 브라우저에서 복사한 YAML을 터미널로 넣는 조작과 구분한다.
명령의 세부 동작은 Vim 빠른 참조에서 확인한다.
왼쪽 여백은 공백을 줄마다 지우기보다 같은 블록을 선택해 함께 이동한다.
>>는 일반 모드에서 > 키를 두 번 연속 누르라는 뜻이다. 첫 >는 들여쓰기할
범위를 기다리고, 두 번째 >로 현재 줄을 지정한다. V로 줄을 선택했다면 이미 범위가
정해져 있으므로 >를 한 번만 누른다. <<와 선택 후 <도 같은 방식으로 내어쓴다.
| 키 순서 | 동작 |
|---|---|
일반 모드에서 >> / << | 현재 줄을 오른쪽 / 왼쪽으로 한 단계 이동 |
일반 모드에서 3>> / 3<< | 현재 줄부터 3줄을 각각 한 단계 이동 |
V → j·k로 범위 선택 → > 또는 < | 선택한 줄 전체를 한 단계 이동 |
범위를 선택한 뒤 3> / 3< | 선택한 줄 전체를 세 단계 이동 |
gv → > 또는 < | 방금 선택했던 범위를 다시 선택해 한 단계 더 이동 |
Esc | 선택 취소 또는 일반 모드 복귀 |
shiftwidth=2이면 한 단계가 2칸이다. 일반 모드의 3>>는 줄 수, 선택 후 3>는
들여쓰기 횟수를 뜻한다. 따라서 3>>는 3줄을 각각 2칸, 선택 후 3>는 선택한 줄들을
각각 6칸 옮긴다 (Vim 들여쓰기 명령).
선택 후 >·<를 실행하면 일반 모드로 돌아온다. 한 번만 옮길 수 있는 것이 아니라,
조금씩 더 옮기려면 gv로 다시 선택한 뒤 >·<를 반복한다.
=는 설정된 들여쓰기 규칙에 따른 자동 정렬이며, YAML의 의도한
부모·자식 관계를 복구해 주는 기능이 아니다. 파일 전체를 자동 정렬하기 전에 필요한 블록만 고친다.
Vim 들여쓰기 설명도 선택 범위에 대한 이동과 자동 정렬을 구분한다.
시험 중 브라우저에서 아래만 열 수 있다.
그래서 “공식 문서 어디에 뭐가 있는지” 자체가 실력이다. 평소 연습할 때부터 다른 사이트를 끊고 kubernetes.io만 보자.
외우는 게 아니라 검색어를 외운다. kubectl 옵션이 가물가물할 때는 검색보다 kubectl Quick Reference 한 페이지를 열어 두고 훑는 쪽이 빠르다.
| 필요한 것 | 검색어 | 얻는 것 |
|---|---|---|
| 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 문법 |
kubectl create든 YAML 파일이든 동일2시간 / 17문제 ≈ 문제당 7분. 그런데 난이도가 균일하지 않다.
전체를 한 번 훑으며 쉬운 것부터 처리
배점이 문제마다 표시된다. 3분 안에 풀리는 것을 먼저 끝낸다.
막히면 플래그 걸고 즉시 넘어간다 — 5분 룰
남은 시간에 플래그로 돌아온다
마지막 10분은 검산
컨텍스트 실수, 네임스페이스 실수를 확인한다.
| 시기 | 할 일 |
|---|---|
| 1~2주차 | 아키텍처·kubectl·Pod·워크로드. kind로 손에 익히기 |
| 3~4주차 | 스케줄링·Service·DNS·Ingress·NetworkPolicy |
| 5주차 | 스토리지·RBAC. 여기는 문제 유형이 좁으니 확실히 |
| 6~7주차 | 클러스터 라이프사이클 (클러스터 업그레이드) — killercoda에서 업그레이드·etcd 10회 이상 반복 |
| 8주차 | 트러블슈팅(트러블슈팅) 집중 + killer.sh 1세션 |
| 시험 직전 | killer.sh 2세션, 틀린 것만 복습, 치트시트 손에 붙이기 (시험 전략) |
클러스터 업그레이드(라이프사이클)에 가장 많은 시간을 써야 한다. 평소에 안 하는 작업이라 반복 말고는 방법이 없다.
exit, vim은 expandtab