Add 06-cka article
This commit is contained in:
parent
06e04b65cc
commit
4f8ffb5f45
1 changed files with 232 additions and 0 deletions
232
content/post/06-cka.md
Normal file
232
content/post/06-cka.md
Normal file
|
@ -0,0 +1,232 @@
|
|||
---
|
||||
title: "3 weeks, 1 CKA"
|
||||
subtitle: "How to rock the k8s certification in no time"
|
||||
date: 2022-10-29
|
||||
draft: false
|
||||
tags: [ops, containers, certifications, devops, kube]
|
||||
---
|
||||
|
||||
## Kube & the CKA
|
||||
|
||||
![k8s logo](https://upload.wikimedia.org/wikipedia/commons/6/67/Kubernetes_logo.svg)
|
||||
|
||||
[Kube](https://kubernetes.io/), **k8s** or Kubernetes is the industry leader
|
||||
when you need to orchestrate some containers at scale. The **containers war** is
|
||||
over : Swarm, Mesos and all other alternatives are dead (except
|
||||
[Nomad](https://nomadproject.io) under some circonstances).
|
||||
|
||||
The **Certified Kubernetes Administror** (CKA) is a certification delivered by
|
||||
the **Cloud Native Coputing Fundation** (CNCF) and the **Linux Fundation** that
|
||||
will ensure that the certified peoples have the skills and knowledge to operate
|
||||
as cluster administrators.
|
||||
|
||||
As a certified kube nerd, I can now confirm that this certification is much more
|
||||
than a _cool line_ on your CV.
|
||||
|
||||
## My CKA story
|
||||
|
||||
My certification was funded (price is around 300$) by my previous job (a year
|
||||
ago). At that time, I was working as a DevOps/CI guy on a SaaS product based on
|
||||
Gitlab, Gitlab-CI and Docker. Containers at a high or low-level was part of my
|
||||
day to day job [^1].
|
||||
|
||||
For various reasons I quit and I am now working as a fullstack dev (Rails/React)
|
||||
so I just use containers to spin up my dev env. Due to this change I did almost
|
||||
have no time to dig on kube and the deadline to pass my exam was getting closer
|
||||
and closer 🚨
|
||||
|
||||
On October I kicked myself in the ass to rush out the CKA and pass my exam ASAP.
|
||||
|
||||
**3 weeks later I am now certified ! YAY !** (with a 85% score)
|
||||
|
||||
Enough about me, now I will share with you everything you need to know to
|
||||
prepare and pass your's !
|
||||
|
||||
## Course Material
|
||||
|
||||
When looking for learning materials, I focused my search on courses labelled as
|
||||
**CKA courses** only (other ones do not go deep enough). The best one out
|
||||
there is _Certified Kubernetes Administrator (CKA) with Practice Tests_ by
|
||||
Mumshad Mannambeth on
|
||||
[Udemy](https://www.udemy.com/course/certified-kubernetes-administrator-with-practice-tests/)
|
||||
(reddit agrees with me so, it should the truth 🤷).
|
||||
|
||||
The awesomeness of this course comes from on how the content is balanced between
|
||||
videos on theory and concepts around kube (architectures, entities and so on)
|
||||
followed by hands on-labs. Directly from your browser, you will be able to
|
||||
practice and
|
||||
**get your hands dirty** by typing some "kube cuddle" commands on a multi-nodes
|
||||
cluster setup. Tasks in each labs is clear enough for you to get the solution
|
||||
by yourself or by the official kube docs. Of course, you can always take a look
|
||||
at the associated video if you are stuck or want to confirm that your way of
|
||||
doing things is the right one.
|
||||
|
||||
If you want to rush out, you should be able to finish the course by a week or
|
||||
two, the rest of the time will be labs, labs, labs and labs. This certification
|
||||
is a practical one and **you need to practice a lot**.
|
||||
|
||||
## Exam Prep Materials
|
||||
|
||||
When you starting to feel that you can control some **kube powers** with your
|
||||
hands it's time to go on practice tests. Starts with the one in the course by
|
||||
Mumshad. In order to pass the CKA you need to be efficient on a bunch of
|
||||
various tasks. Practice pratice practice in order to become fluent in a least :
|
||||
|
||||
- cluster upgrades using kubeadm
|
||||
- etcd back/restore
|
||||
- pods scheduling (with PV and PVC)
|
||||
- deployments and scheduling (with PV and PVC)
|
||||
- roles setup (users, Role/RoleBinding, ClusterRole/ClusterRoleBinding)
|
||||
- troubleshooting pods
|
||||
- troubleshooting cluster components
|
||||
|
||||
in order to sharpen your skills, use the labs on [killer.sh](https://killer.sh).
|
||||
You will have two "free sessions" attached to your Linux Fundation profile. Be
|
||||
careful, those exams are way more difficult that the real ones. Hopefully this
|
||||
will give you a very accurate feeling of your capabilities when times maters.
|
||||
Take time to review the answers as they will give you deep explanations on the
|
||||
how and why. Killer.sh interface is quite the same as the one you will use in
|
||||
the real exam so take time to check the setup and customize it the way you like.
|
||||
|
||||
Now you are ready, go for the exam day !
|
||||
|
||||
## Exam Day
|
||||
|
||||
On the exam day, prepare yourself and your environment well. You can access the
|
||||
session 30 minutes before the exam starts. Use this time to setup your desk and
|
||||
your room. You need to be a in quiet and empty room with nothing on your desk to
|
||||
speed up the check-in. The exam proctor will first ask you for your ID. After
|
||||
that you will go for a room tour, an usb connected webcam is prefered since your
|
||||
need to turn it in all directions for the proctor to verified you're not
|
||||
cheating.
|
||||
|
||||
During the exam, the only online resource accessible is the [kubernetes
|
||||
documentation](https://kubernetes.io/docs). No worry, this is the only thing you
|
||||
need. I can recommend enough to use it why you are learning to be very
|
||||
comfortable with it on the exam day.
|
||||
|
||||
Do not stress out, take your time, at least you have a free retake if you miss
|
||||
the first one !
|
||||
|
||||
## Tricks and Tips
|
||||
|
||||
CKA is about speed and efficiency, here are some usefull tips.
|
||||
|
||||
### UTFD : Use The Fucking Documentation
|
||||
|
||||
k8s documentation is a gem, everything is already there but you have to know
|
||||
some shortcuts to quckly access the examples or articles your need. **USE THE
|
||||
SEARCH** to quickly find yaml manifests for things like PV, PVC. Just type PV
|
||||
and rush the first link!
|
||||
|
||||
Another usefull page in the documentation is the [kubectl cheat
|
||||
sheet](https://kubernetes.io/docs/reference/kubectl/cheatsheet/), as usual, just
|
||||
type "cheat sheet" and you are good to go!
|
||||
|
||||
### kubectl : be imperative first
|
||||
|
||||
k8s is about carefully handcrafted yaml manifest, right ? That's too slow in our
|
||||
case. You need to be fast. Hopefully, `kubectl` can do 90% of the job for you.
|
||||
|
||||
Always use the **imperative approach** as a first intention. Let's imagine you
|
||||
need to run an ngnix POD:
|
||||
|
||||
```sh
|
||||
kubectl run nginx --image=nginx
|
||||
```
|
||||
|
||||
or if you need to create a service :
|
||||
|
||||
```sh
|
||||
kubectl create service clusterip my-service --tcp=5678:8080
|
||||
```
|
||||
|
||||
Sometimes, some of the options are not configurable using the cli, no worry,
|
||||
`kubectl` have your back too ! You can generate a yaml manifest directly from
|
||||
the cli :
|
||||
|
||||
```sh
|
||||
kubectl run nginx --image=nginx --labels tier=frontend --dry-run=client -o yaml > pod.yaml
|
||||
```
|
||||
|
||||
By redirecting it to a new text file, you will then be able to add the missing
|
||||
specs from a vim session followed by a `kubectl apply -f` to apply your changes.
|
||||
|
||||
There is also a lot of examples in help messages from the cli ! Before loosing
|
||||
time changing windows from terminal to browser, append `-h` to your command !
|
||||
[^2]
|
||||
|
||||
_Extra tip! If you need to generate a DaemonSet or StatefulSet, you can not do
|
||||
it directly from the cli but since thoose specs are similar to a deployment one,
|
||||
generate a deployment and edit it afterward._
|
||||
|
||||
Finally practice some `jsonpath` stuff and play with it to output data from
|
||||
pods, nodes, the way you want.
|
||||
|
||||
### Take the time to setup your env
|
||||
|
||||
The vitual machine you will be working on is a simple Ubuntu with a stock XFCE
|
||||
config. Base setup for the shell/ssh and VIM (colors etc) will be applied by
|
||||
default. Here is the things I think is worth it to add in the bash config :
|
||||
|
||||
```sh
|
||||
# optional, should already be setup
|
||||
alias k='kubectl'
|
||||
# for fast apply
|
||||
alias kaf='kubectl apply -f'
|
||||
# old habit..
|
||||
alias vi='vim'
|
||||
|
||||
# save tedious typos
|
||||
export do='--dry-run=client -o yaml'
|
||||
# we are in a hurry, we do not want to wait for things to terminate gracefully
|
||||
export now='--force --grace-period 0'
|
||||
|
||||
# just to organize things, useful while reviewing our answers
|
||||
function mkcd {
|
||||
cd $HOME && mkdir -p $1 && cd $1
|
||||
}
|
||||
```
|
||||
|
||||
### Known your VIM
|
||||
|
||||
Due to the time constraint, I did not recommend working outside the terminal,
|
||||
except for Firefox and navigating the docs (since you are in a remote desktop,
|
||||
everything feels a little bit slow).
|
||||
|
||||
Some efficiency with VIM will be a great plus for the overall exam. At least
|
||||
knowing the basic on how to edit/navigate/save the file is a must have. I also
|
||||
recommend getting confortable with :
|
||||
|
||||
- basic moves: h,j,k,l,b,w,e
|
||||
- visual mode
|
||||
- copy/paste
|
||||
- advanced moves : t/T, f/F
|
||||
- search/replace
|
||||
- :N to jump to line N
|
||||
|
||||
### Shell basics
|
||||
|
||||
Some shell basics are also a great plus, the most important one is `Ctrl+R` for
|
||||
reverse searching a command in your history. Add to that some stuff like `!$` to
|
||||
recall the last arg from your previous command, you should be able to have a
|
||||
flow like this :
|
||||
|
||||
```sh
|
||||
vi somestuff.yaml
|
||||
kaf !$
|
||||
```
|
||||
|
||||
Sometime, you may need to filter/modify output provided by a command, some shell
|
||||
basic like `grep`, `cut`, `tail`, `head` may help you. If you already know some
|
||||
shit about `AWK`, be sure to also review it a little bit, this tool is dope and
|
||||
can archive very impressive stuff.
|
||||
|
||||
Now, it's your turn.
|
||||
|
||||
```sh
|
||||
kubectl apply -f goodluck.yaml
|
||||
```
|
||||
|
||||
[^1]: Kudos @athoune
|
||||
[^2]: Another shell tip ! `!! -h` to recall your last command with the extra `-h`
|
Loading…
Reference in a new issue