2025년 목표를 Kubestronaut로 정하고 1월 안에 완료하는 것을 목표로 했습니다.
따라서 전략적으로 시험을 스케줄링하고 준비하는 과정을 기록하였습니다.
시험 스케줄링
Kubestronaut은 총 5개의 자격증으로 이루어져 있습니다.
이 중에서 CKA, CKAD, CKS는 부분점수가 존재하는 실습형 시험이며,
그 외의 KCNA, KCSA는 부분점수가 존재하지 않는 객관식 시험입니다.
CKA, CKAD, CKS : 부분점수가 존재하는 실습형 시험
KCNA, KCSA : 부분점수가 존재하지 않는 객관식 시험
시험의 난이도나 커리큘럼을 고려했을때 아래의 순서로 취득하기로 결정했습니다.
시험 주제나 유형이 비슷한 경우 가급적 같은 주차에 시험을 응시해야 효율적입니다.
CKA, CKAD → KNCA, KCSA → CKS
따라서 CKA를 제대로 준비하고 CKA, CKAD를 연달아 보는 방식으로 계획했습니다.
CNCF 엠서버더이신 조훈님께서 안내해주신 난이도는 아래와 같습니다.
다만 Linux, Network, Kubeadm, PKI 등의 지식이 없으면 CKA가 더 어려울 것 같습니다.
작년 말 (24.11.)에 개정되어서 그런걸까요?
아니면 업무 특성상 Helm을 비롯한 부분에 능숙해서 쉬웠던 걸수도 있겠습니다…
시험 준비전략
문제를 빠르게 푸록 이해 안되는 부분을 집중적으로 공부했습니다.
특히 문제를 푸는 동안 모르는 문제는 더이상 풀지 않고 오답을 맞도록했습니다.
CKA 준비 과정
CKA 취득 이후에 바로 CKAD를 응시할 수 있도록 준비합니다.
이때 쌓은 지식을 기반으로 1~2일 정도만 준비하고 바로 CKAD를 응시하려고 합니다.
KodeKloud CKA Practice Tests[1]를 전체적으로 3번 풀고 오답 체크했습니다.
Udemy Mumshad CKA Practice Tests 강의[2]를 오답위주로 먼저 듣고 이동 시간 동안 전체적으로 들었습니다. (문제풀이 부분은 듣지 않았습니다.)
KodeKloud CKA Practice Tests[1] 를 오답 위주로 3번 이상 풀었습니다.
주로 Kubeadm, ETCD, NetworkPolicy, SVC Expose 쪽이었던 것 같습니다.Killer CKA Simulator[3]를 2개 세션을 다른 전략으로 각 1일 간 풀었습니다.
기본적으로 유료지만 CKA 시험을 접수하고 스케줄창을 열면 무료로 2개 줍니다.
2개 다 같은 시험이고 36시간 동안 사용할 수 있기에 잘 활용해야 합니다.첫 번째 세션 : 모르는 문제를 빠르게 넘어가면서 지식 검증 반복
두 번째 세션 : 실제 시험을 보는 것처럼 제한 시간을 두고 문제 풀이
Killer에서 점수 75~80 점 정도가 균일하게 나오고 있어서 CKA를 접수했습니다.
이후 87점으로 CKA를 합격했습니다.
CKAD 준비 과정
두 시험은 주제 범위가 약간 다르지만 CKA를 제대로 준비했다면 시험이 매우 쉽습니다. 주의할 부분은 오직 Admission Controllers, Validating & Mutating Admission Controllers, Helm 쪽입니다.
KodeKloud CKAD Practice Tests[4]를 전체적으로 1번 풀고 오답체크했습니다.
Udemy Munshad CKAD Practice Tests강의[5]를 오답위주로만 들었습니다.
KodeKloud CKAD Practice Tests[4]를 오답 위주로 2번 이상 풀었습니다.
Killer CKAD Simulator[6]을 1개 세션만 6시간 풀었습니다.
기본적으로 CKA보다 쉬험이 엄청 쉽다고 느낄만큼 재밌었습니다.단일 세션 : 모르는 문제를 빠르게 넘어가면서 지식 검증 반복
시험 회고
무조건 단 한번에 붙는다라는 마음으로 준비했습니다.
개인적으로 약간 안일한 면이 있는 것 같아서 시험 시간 전부 사용했습니다.
CKA 후기
개인적으로 KodeKloud, Killer를 제대로 풀어왔다면 바로 합격이 가능합니다.
KodeKloud에서 Lightning Labs, Mock Exams는 시험보다 약간 쉬웠으며,
Killer는 시험보다 약간 어려웠으나 문제의 20% 정도는 억지스럽다는 느낌을 받았습니다.
(예를 들어 sed, cut -d ‘ ‘ -f 2 이런 명렁어 등이 필요한 경우가 있긴 한데, 이번 기회에 알아두어서 좋았습니다.)
시험 문제나 출제 경향을 말하는 것이 금지되어있기 때문에 몇가지 팁만 공유합니다.
--dry-run -o yaml > <문제번호>.yaml을 적극 활용하기
저는 가급적 모든 오브젝트를 yaml 파일로 별도로 남겨두었습니다.
따라서 검토 단계에서 이 yaml 파일을 이용하여 손쉽게 히스토리를 추적했습니다.
이 파일이 없으면 수십 유형의 리소스 중에 뭘 건드렸는지 기억이 나지 않습니다.몇 가지 테크닉은 암기하고 활용하기
curl -kL <ip>:<port>, curl -vL <ip>:<port>
파드를 노출시키거나 파드간 통신 등의 문제에서는 실제 통신이 되는 지확인해야 합니다. 임시 파드를 만들어서 통신하는 방법도 있으나 동일한 네트워크망에 있다면 curl로도 요청이 가능합니다.
kubectl get pods -o wide -A kubectl get pods -o wide -A | grep <identifier> curl -kL <pod_ip>:<pod_port> # 더 간략한 정보가 나옴 curl -vL <pod_ip>:<pod_port> # 더 자세한 정보가 나옴
순서에 맞춰서 풀기
간혹 kubeadm upgrade 문제를 마지막에 풀라는 내용이 있었습니다.
하지만 저는 아래의 이유로 kubeadm upgrade를 먼저했습니다.
이 과정 중에 kubectl drain node <node_name>이 필요합니다.
만약 해당 노드에 스케줄링된 파드가 있다면 사라지게 됩니다.
Deployment, Statefulset, ReplicaSet 등의 워크로드 리소스로 배포되지 않은 경우 복구되지 않습니다. 따라서 순서에 맞춰 풀거나 단일 파드가 있는지 기억해두는게 좋습니다.kubectl auth can-i 적극 활용하기
Role, RoleBinding, ClusterRole, ClusterRoleBinding, User, ServiceAccount, Pod 등의 문제는 반드시 kubectl auth can-i 등으로 그 권한을 확인했습니다.
kubectl auth can-i create pod --as=system:serviceaccount:dev:role-sa -n dev kubectl auth can-i create pod --as=system:serviceaccount:stg:clusterrole-sa
CKAD 후기
개인적으로 CKA를 제대로 준비한 상태에서 KodeKloud, Killer를 1~2회만 제대로 풀어도 바로 합격할 수 있습니다. Helm 사용법만 익혀서 보면 추가적인 팁이 필요 없습니다.