본문 바로가기

Server Infra/Kubernetes

Certified Kubernetes Administrator(CKA) 합격 후기

728x90

2021-09-14 그렇게 오래 준비하던 CKA 시험을 응시후 2021-09-15 84점 합격결과를 받았다.


2018년도부터 관심이 있던 쿠버네티스...스터디만 1년 넘게 하고 강의도 무수히 많이 보았지만 악명 높은 진입 장벽으로 인해 초창기 컨트롤 플레인 이해하는 시간에도 한참 걸렸다.

사실 개발자 입장으로 개발후 도커 이미지만 넥서스에 밀어 넣으면 자동으로 배포되는 환경에서 개발했기에 기본적인 개념을 익히는데 매우 오래 걸렸다. 도커 자체는 너무 많이 사용하고 컴포즈와 ECS를 주로 사용했던 지라 기본적인 도커 지식은 충분 했던것 같다. 하지만 인프라, 네트워크, 리눅스 지식 베이스가 낮았던 지라...알아야 하는 정보들은 너무도 많았기에 쿠버네티스를 익히기 위하여 많은 투자를 했다.

우선 생각보다 많이 샀지만 완독한 책은 몇 없는 도서들

그리고 모르는 부분만 찝어서 반복 학습한 인프런 강의들

이해가 안되는 부분만 중점적으로 반복해서 보았는데 대부분 서비스 네트워크 부분이다.

그리고 나의 학습을 도와준 만 5세의 HP MicroServer Gen8(8Core 16Gb에 듀얼랜카드까지 작업해준 고통받는 아이...) 참고로 인프런 강의 실습과 컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커 실습, 그리고 대망의 Cloud@Net에서 진행한 DKOS 스터디에 엄청나게 도움 되었다.(가시다님에게 감사를...)

아래처럼 KVM으로 구성한 마스터 노드 한개와 3개의 워커 노드가 있다.

[root@mateon01-home-server ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 10    k8s-master                     running
 21    k8s-node2                      running
 22    k8s-node3                      running
 23    k8s-node1                      running

그리고 k8s-node3은 최근에 새롭게 추가한 노드라 Age가 제일 어리다. 저 클러스터가 사실 1.15버전 부터 시작했는데 중간에 VM의 os를 변경하면서 초기화 되었다.(기존에는 Centos7이었는데 Ubuntu 20.04로 변경했다)

(kube:default) [root@mateon01-home-server ~]$ kubectl get nodes
NAME         STATUS   ROLES                  AGE   VERSION
k8s-master   Ready    control-plane,master   99d   v1.21.1
k8s-node1    Ready    <none>                 99d   v1.21.1
k8s-node2    Ready    <none>                 99d   v1.21.1
k8s-node3    Ready    <none>                 16d   v1.21.1

💡 위 작업 때문에 문제에 출제된 Cluster Upgrade나 ETCD백업 복구, 그리고 Node Join과 같은 문제는 정말 쉽게 느껴졌다

사실 쿠버네티스 내부 구조(API, Scheduler, ETCD등등) 는 대부분 책으로 도움을 많이 받았다. 저 책들의 기본 개념부분을 읽어 본 결과 결국 저자들이 의도 하는 의미는 다 비슷했다. 사실 저 책들을 보다가 다시 강의로 롤백했는데 개인적으로 책 보다는 강의 체질인듯하다

기본적인 컨트롤 플레인 내의 구성이나 네트워크 구성은 대부분 비슷하다. 개인적으로 대세는 쿠버네티스라는 강의가 생각보다 설명이 상세했고 간단 명료했다.

각각 하는 역할들은 대부분 알고 있었지만 어떤 플로우로 각각의 동작들 및 cli 명령을 수행하는지는 잘 몰랐다. 그걸 엄청난 에니메이션으로 설명해준 Udemy 강의가 있다

https://www.udemy.com/course/certified-kubernetes-administrator-with-practice-tests/

CKA 시험을 준비하는 이들이라면 무조건 봐야 하는 바이블 같은 강의다. 위 강의에서의 내용으로는 API를 호출하면 우선 ETCD에 저장부터 되고 내부 스케쥴러를 호출하여 API를통해 각 Node의 Kubelet에 명령을 전달하는 형태다.

그리고 각 강의들과 도서 스터디들이 굉장히 도움됬던 것 중 하나가 Kubectl 명령어나 Yaml에 익숙해 지도록 실습 형태였다는점. 사실 개발하면서 저런 설정 파일을 디테일 하게 만질 일이 드물었고 Kubectl을 직접 호출 하는 일은 더더욱 없었다. 그러다 보니 명령어 자체도 생소했는데 여러 실습들이 명령어에 굉장히 익숙하게 만들어 주었다.

사실 저 위의 kubectl 명령어에 익숙해 지는것이 굉장히 중요한게 CKA 시험에서 Yaml 파일을 하나하나 만들 시간이 없다.(있긴 해도 아깝다) 참 다행인게 자동 완성 스크립트를 사용할 수 있다는 점과 kubernetes.io를 볼 수 있다는점.

특히 시험볼때 많이 참고했던게

Kubectl Reference Docs

 

Kubectl Reference Docs

 

kubernetes.io

이 도큐먼트 이다. create, run, expose 명령어로 엄청난 시간을 단축하였다.

💡 —dry-run=client -o yaml은 정말 혁신이다

위처럼 필요한 yaml은 셈플로 생성하고 요구사항에 맞춰서 도큐먼트를 찾던가 뇌를 뒤져서 작성했다. 만약 도큐먼트를 찾는게 귀찮고 뭔지는 알것같은데 정확하게 뭔지 확신이 안 선다면

kubectl explain pods --recursive

위 명령어를 사용하자

해당 Resource의 기본적인 포멧을 알 수 있기 때문에 대부분 유추하여 생성이 가능했다.

저 명령어 덕분인지 내가 귀찮아서인지 시험 자체는 5시 30분부터 시작해서 6시 40분에 끝내고 검토도 안하고 종료 해 버렸다. 그리고 그날 밤에 이불을 걷어 차며 잠들지 못했다.(결과 발표에 딱 23시간 걸렸다)

시간 남으면 검토는 꼭 합시다 여러분.

시험준비는 Udemy 강의를 시작으로 제공해주는 바우처를 이용하여 kodekloud 의 테스트를 중심으로 공부했다. 환경이 정말 속 뒤집어 질 정도로 답답했던것을 제외 한다면 전반적으로 만족스러운 테스트 였다.

하지만 저 시험도 나의 꼼꼼하지 못한 성격 탓인지 아니면 속 터지는 콘솔 작업 환경 때문인지 오타나 env를 달라는 것을 label로 다는등의 실수로 단 한번도 만점을 받은적이 없다. ㅋㅋㅋ

시험을 예약하면 Killer.sh의 테스트 모의고사를 2벌 제공해준다. 이게 모의고사 풀기전 문구를 꼭 보고 풀기 바란다. 안보고 풀었다가 시간 대비 점수보고 대 환장 하며 난 쓰레기야 라고 좌절할 수도 있다.

저 시험을 두번 반복후 정답 체크 및 왜 이게 답인가에 대한 고민에 고민 그리고 이해를 한후 실제 시험에 임하면 된다.

여기까지가 내가 이렇게 열심히 준비했다라는 자랑이었고 이제 본격적인 팁을 전한다.


  1. 자동완성은 시작하자 마자 진행하자.
    echo 'source <(kubectl completion bash)' >>~/.bashrc
    echo 'alias k=kubectl' >>~/.bashrc
    echo 'complete -F __start_kubectl k' >>~/.bashrc
    ​
  2. 북마크를 미리 해 놓는다면 시험볼때 검색하는 시간을 좀 줄일 수 있다.
  3. kubectl use-context에 익숙해 지자. 이상한 클러스터에서 작업하면 눈물난다.
  4. 시험관이 영어 쓴다고 쫄지 말자. 네이티브 코리안이라 하면 알아서 구글 번역기 돌려서 말해준다.
  5. (매우 중요)Yaml 직접 만들 시간에 인라인 코드로 해결할 수 있는건 코드로 해결하자
  6. 일일이 타이핑 하지 말고 시험에서 제공한 키워드는 복사 붙여넣기 하자(오타 내고 울지 말라는 의미에서 기능을 제공해 준것 같다)
  7. 제발 빨리 마무리 되면 검토 하자. 안 그러면 나처럼 불안해서 이불킥 한다.

CKA 시험 응시 결과 이 시험은 완벽함을 원하지 않는다. 다만 응시자가 어떤것을 모르고 어떤것을 찾아봐야 하는지 확실히 알고 있는지. 그리고 그것을 찾아서 해결할 수 있는지 그 능력을 시험하는것 같다.

노드 별로 파드를 하나씩 띄우는것을 보장해야 한다 라면 데몬셋이면 해결 되겠군!

파드에 몇가지 권한이 필요하다니 Security Context를 사용하면 되겠네!

라는 질의와 답볍을 원하는것. 그것을 뇌에서 꺼내서 만들든 도큐먼트를 찾아서 만들든 요구사항 파악과 원하는 기능이 무엇인지만 안다면 얼마든지 통과가 가능해 보인다.

 

이상으로 자격증 취득에 도움되었던 모든 분들에게 감사를 표합니다.

DKOS, AKOS 운영해주신 가시다

양질의 강의와 도서를 만들어 주신 조훈님

자격증 취득까지 많은 조언을 해주신 리눅서

728x90