[CKA] Certified Kubernetes Administrator 자격 취득 후기
서론
쿠버네티스를 처음 접했던 것은 대학교 3학년(2019) 졸업작품 때이다. 당시에는 app, db, svc, ing 서비스를 올리고 프로메테우스/그라파나를 통해 클라우드 모니터링부분을 다뤘었다. 이 후 취업을 하고 본격적으로 쿠버네티스 프로젝트를 진행하게 된건 2021년3월부터인데 벌써 2년4개월의 시간이 흘렀고 CKA 자격증이라는 것을 알게 되었다.(회사에서도 클라우드 사업을 위해 어느정도 CKA자격을 가진 인력이 필요로 했음)
무튼, 시험을 본 자로써 어디에 초점을 두고 공부해야하는지 글을 남기려한다.
준비기간
실제 자격증 준비 시간은 약 2.5일
필자는 그동안 프로젝트에서 쿠버네티스를 경험해왔기에 짧은 시간 준비를 하고 시험을 쳤다.
(실제 시험 수준은 너무 쉬웠다는거...+영어질문 해석에 오류가..좀)
검색해보니 유데미교육이 엄청많던데...사람들 2달,3주 준비한다길래 Pass...
CKA 신청을 하면 Killer.sh 이라는곳에서 무료로 2번 세션을 받아 실제 시험과 비슷한 환경에서 테스트를 할 수 있다고해서 Killer.sh을 이용하였다.
CKA 시험 핵심
요즘은 누구나 쿠버네티스에 컨테이너를 올리고, 서비스를 노출시키고, 볼륨을 마운트한다는 등의 액션은 충분히 할 수 있을 텐데, 이 시험에서 더 부각되었던 것은 Cluster Administrator로써의 더 상세한 통신관리라고 생각된다. (필자가 지금 껏 해오던 것은 CKA 보다는 CKAD(Kubernetes Certified Application Developer)로써의 Role이 상당히 일치했던 것)
그리고 시험시간은 총 120분인데 필자는 90분에 끝났으니 난이도는 쉬운편이였다.
아무튼 이 시험을 보고 나니 요구하는 내용을 좀 알겠다.
- Multi Container Volume Shared
- NetworkPolicy
- TroublesShooting(K8S)
- Cluster Upgrade & Worker Node Join
- Etcd Backup&Restore
- Scale In&Out
- Static-Pod
- Certificate
- RBAC(Role Based Access Control)
- Basic (Pod, Deploy, DaemonSet, StatefulSet, Secret, ConfigMap, PersistentVolume, PersistentVolumeClaim, Ingress, Service)
Killer.sh
필자는 Killer.sh로 준비하였는데, 문제를 딱 보면 말문이 막힌다(영어)
다행히 정답과 풀이과정을 모두 정리한 사이트가 있다.(크롬 번역기 필수..ㅋㅋ) 다들 검색해보셨듯이 Killer.sh에서 말하는 시험의 난이도는 상당하다.... 하지만 겁먹지말라.. 필자도 해냇으니..!!!
먼저 이 테스트 세션에서 배울 수 있는 내용을 보면(편하게 문제 순서대로^^)
- Cluster 정보를 추출할 수 있는가? (kubectl 사용/미사용)
- Master Node에 파드를 기동할 수 있는가? (Tolerations)
- pod 스케일 조정 (kubectl scale)
- readiness, liveness 활용
- pod 상태 정렬 (kubectl --sort-by)
- 스토리지를 mount 해라 (Deploy, Pvc, PV)
- 리소스 모니터링 (kubectl top)
- 클러스터 상태 체크 (Process, static-pod, pod 구분 및 dns 종류)
- 마스터노드의 스케줄링 서비스가 중단되었을 때 마스터노드에서 Pod 기동하기 (Static-pod 개념을 알자)
- RBAC 서비스계정 역할 부여 (k auth can-i 로 검증하기)
- DaemonSet 생성
- 파드를 모든 워커노드에 1개만 분배하기 (podAntiAffinity)
- 다중 컨테이너 / 파드 공유 볼륨 (emptyDir)
- 클러스터 정보 체크 (서비스 CIDR, 네트워크 컨피그 파일 경로)
- 이벤트 로깅 (kubectl get events, 컨테이너 죽이기:crictl stop [containerId])
- API Resources (kubectl api-resources)
- 컨테이너 RuntimeType 찾기 (crictl inspect [containerId])
- 트러블슈팅 kubelet 장애 (confing 경로를 잘 찾아서 해야함)
- Secret 생성 및 마운트 (+마스터노드에 띄우기)
- 클러스터 버전 업그레이드 및 클러스터 가입 (apt-get / kubectl token create --print-join-command, 여기문제에는 kubeadm은 없어서 따로 해봐야함 drain/uncordon)
- Static-pod (마스터노드 manifests에 yaml을 두어 올리는 것, expose 로 서비스 생성)
- 인증서 유효기간 확인 및 업데이트 (마스터 노드에서 인증서를 추출 : openssl x509 -in [파일.crt] -noout -text, 인증서 업데이트 : kubeadm certs renew)
- kubelet 클라이언트/서버 인증서 정보 (/var/lib/kubelet/pki)
- NetworkPolicy (Egress 구간 제어)
- ETCD backup&restore
내용이.. 많다..ㅎㅎㅎㅎㅎㅎㅎㅎㅎ하하핳핳ㅎㅎ
하지만 그만큼 재밌는 경험을 하게 되었고, 무엇보다 다양한 영어질문을 읽고 해석하는 훈련이...되어간다. 그리고 120분이 지나면 세션을 재시작하여 시간을 체크 할 수 있다.(필자는 이걸 늦게 알아서 두번째 세션에서 120분 테스트해봄)
+CKA는 17문제고 killer.sh는 25문제이기 때문에 당연히 다 풀 수는 없었다.
하지만 겁먹지말고 시험보라!
KillerCoda
killercoda는 killer.sh 사이트에서 돌아다니다가 우연히 알게되었는데, 약 12케이스의 CKA 문제가 준비되어있다. 간단히 워밍업 정도의 내용으로 쉬운 편이고 여기서 새로 알게된건 priorityclass(우선순위)에 대해 알게 되었다. 옵션이 있는 건 알았는데 class로 정의하고 쓴다니....ㅎ
---잠시 시간을 내어 풀어보면 좋다---
마치며
만약 이 시험을 한 단어로 요약해보자면 스케줄링이라고 말하고 싶다.
항해를 떠나는 선장(Kubelet)님들에게 내 짐을 맡겨주세요... 라고