
CKAD Sınav Tavsiyeleri ve İpuçları
Kısa süre önce Certified Kubernetes Application Developer (CKAD) sınavına girerek sertifikaya hak kazandım. Bu makalemde Cloud Native Computing Foundation (CNCF) tarafından verilen Certified Kubernetes Application Developer (CKAD) sertifika sınavı tecrübelerimi ve sınava dair faydalı ipuçlarını sizlerle paylaşmak istiyorum.
Sınav Hakkında
Kağıt üzerinde/çoktan seçmeli olan klasik sertifika sınavlarından farklı olarak CKAD sınavı, pratik bilgiye dayalı ve tamamen Kubernetes Cluster’ı kurulu sistemler üzerinde problem çözmeye yönelik bir sınav. 300$‘lık bir kayıt ücreti olan sınavın toplam süresi 2 saat. Tarayıcı üzerinden bağlandığınız uzak bir sistem terminalinde Kubernetes komutları ve yaml dosyaları ile test ediliyorsunuz. Sınav ile ilgili aşağıda detaylarını paylaştığım bilgilerin güncelliğini CNCF web sitesinden temin edebileceğiniz Exam Tips for Certified Kubernetes Administrator (CKA) and Certified Kubernetes Application Developer (CKAD) dokümanından teyit etmenizde fayda var.
Sınav 19 pratik sorusundan oluşmakta. Bu 19 soruyu aşağıda detaylarını bulabileceğiniz 4 farklı Kubernetes Cluster’ı üzerinde çözmelisiniz.
Cluster Adı | Cluster Üyeleri | Kurulu CNI |
---|---|---|
k8s | 1 Master ve 2 Worker Node | Flannel |
dk8s | 1 Master ve 1 Worker Node | Flannel |
nk8s | 1 Master ve 2 Worker Node | Calico |
sk8s | 1 Master ve 1 Worker Node | Flannel |
Burası önemli; her sorunun başında çözümün hangi Kubernetes Cluster’ında olması gerektiği belirtilmekte. Ek olarak; ilgili Kubernetes Cluster’ına geçiş yapmak için gerekli kubectl config set-context ...
komutu verilmekte. Soruyu doğru yapmak kadar doğru Kubernetes Cluster’ında yapmak da önemli.
Sınavda sorulan 19 sorunun puanları eşit değil. Toplamda %100 olacak şekilde konularına göre her birinin farklı bir yüzdelik puanı bulunuyor. Sınavı geçerek CKAD sertifikasına hak kazanmanız için %66 ve üzeri bir puana sahip olmalısınız. Sınavda her bir sorunun yanında yüzdelik değeri de verilmekte. Aşağıda konulara göre yüzdelik dağılımını bulabilirsiniz;
Konu | Yüzdelik Ağırlığı |
---|---|
Core Concepts | %13 |
Configuration | %18 |
Multi-Container Pods | %10 |
Observability | %18 |
Pod Design | %20 |
Services & Networking | %13 |
State Persistence | %8 |
Sınav online olarak yapılmakta. Herhangi bir zaman aralığı için randevu olarak dünyanın herhangi bir yerinden sınava katılabilirsiniz. Sınav gereksinimlerini aşağıdaki şekilde sıralayabiliriz;
- İnternet erişimi
- Chrome ya da Chromium tarayıcı
- Tarayıcı üzeri kurulan eklenti
- Mikrofon
- Web kamerası
- Kimlik
- Sizden başka kimsenin olmadığı, sessiz ve sakin bir oda
Sınav sırasından tarayıcıda maksimum 2 adet segme açmanıza izin verilmekte. İlk segmenin sınav için rezerve olduğunu düşünürsek, ek olarak sadece 1 adet segme açma hakkınız bulunuyor. Önceki yıllarda internet üzerindeki herhangi bir kaynağı kullanmanıza izin veriliyorken, artık sadece aşağıda sıraladığım web sitelerini kullanmanıza izin veriliyor;
- https://kubernetes.io/docs/ ve alt alan adları
- https://github.com/kubernetes/ ve alt alan adları
- https://kubernetes.io/blog/
Sınav süresince bir gözetmen sizi devamlı olarak web kamerası üzerinden izlemekte. Sınav süresice konuşmanıza, yemek yemenize v.s. izin verilmemekte. Kısa süreliğine sınava ara verebiliyorsunuz; ama bu sırada sınav süresi ilerlemeye devam etmekte. Bu sebeple molalara dikkat. Su içmenize müsade veriliyor. Sınav alanında elektronik herhangi bir şey (telefon, tablet, akıllı saat, ikinci bilgisayar v.s.) bulunmasına izin verilmiyor. Masanızın temiz olması, üzerinde kağıt v.b. bulunmaması gerekmekte.
Sınav, aldığınız randevu saatinden en erken 15 dakika önce, en geç 15 dakika sonra başlayabilir. Bu zaman aralığı dışına taşarsanız sınavı alamıyorsunuz.
Son olarak sınav sonucu... Sonuç, sınavın ardından geçen 24 ile 36 saat içerisinde belli olmakta. Sonucu size mail ile bildirmekteler. Ek olarak portal üzerinden de sonucu görüntüleyebilirsiniz.
Sınava Dair İpuçları
Certified Kubernetes Application Developer (CKAD) sertifika sınavı ile ilgili öncelikle içinizi rahatlatayım; Kubernetes üzerinden yeterince pratiğiniz var ise sınavı rahatlıkla geçerek sertifikaya hak kazanacağınızı düşünüyorum.
CKAD sınavına dair bir eğitim arıyorsanız size kesinlikle Linux Academy’nin CKAD eğitimini tavsiye ediyorum. Videolu olan bu eğitim aynı zamanda etkileşimli lab’ları sayesinde size gerçeğe yakın bir sınav deneyimi yaşatacaktır.
Bu eğitime ek olarak; web sitem üzerinde aktarmaya çalıştığım Kubernetes ile ilgili makalelerimi takip edebilirsiniz.
Sınavın en önemli zorluğu bence zaman yönetimi. Pratiğinizin olması bu nedenle önemli. Hazırlık sürecinde başvurduğum herkes zamanının yetmediğinden bahsetti. 5 soru boş bıraktığından bahsedenler dahi oldu. Bu durumu göz önüne aldığımızda ilk tavsiyem zamanınızı doğru yönetmeniz olacaktır. Soruları çözerken yüzdelik puanlarına dikkat edin. Önceliği yüzdelik puanı yüksek soruları vermeniz avantajınıza olacaktır.
İkinci tavsiyem, notepad’i verimli kullanın. Tabi burada bahsettim işletim sistemiyle birlikte gelen notepad değil. Onu kullanamıyorsunuz. Sınav penceresinde size kullanabilmeniz adına bir not olanı verilmekte. Bu alan notlar, hazırlıklar v.s. için kullanabilirsiniz. Es geçtiğiniz soruları ve soruların yüzdelik puanlarını buraya not alabilirsiniz. Kalan zamanınıza göre bu sorulardan görece puanı daha yüksek olanlar üzerinden ilermenizi tavsiye ederim.
Üçüncü tavsiyem; kubectl bir nimet, onu kullanın. Sınavda bir iki soru dışında sizden yaml formatında dosya istenmemekte. Dolayısıyla yaml üzerinden ilerlemek yerine kubectl komutlarını kullanmanız size zaman kazandıracaktır. Kaldı ki kubectl yardımıyla yaml dosyaları oluşturabilirsiniz.
Dördüncü tavsiyem; kubernetes web sitesini detaylı inceleyin. Sınavda bu siteyi açmanıza izin var. Bunu kullanın.
Beşinci tavsiyem; bookmark’ları kullanın. Çalışırken takıldığınız konular varsa bunları bookmark olarak kaydedin. Sınav sırasında bu bookmarkları kullanabilirsiniz. Kubernetes web sitesinde anchor tanımları da olduğu için sayfalarda doğrudan takıldığınız konuya bookmark atabilirsiniz. Örneğin;
- https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#define-a-tcp-liveness-probe
- https://kubernetes.io/docs/concepts/services-networking/network-policies/#the-networkpolicy-resource
- https://kubernetes.io/docs/concepts/configuration/secret/#using-secrets-as-files-from-a-pod
- https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistent-volumes
- https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims
- https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/#concepts
- https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod
Altıncı tavsiyem; Linux, vim ve diğer komut satırlarına hakim olun. Linux shell’i ve vim’e hakim değilseniz zaman kaybedebilirsiniz. Açığınızı kapatmaya odaklanın.
Yedinci tavsiyem web bazlı terminal olan GateOne‘ı kullanmaya alışın. Web sitesine gidin, online olarak deneyin. GateOne ile ilgili önemli bir tavsiye kopyalama ve yapıştırma işlemleri ile ilgili. Kopyalama için Ctrl + Insert
, yapıştırma için ise Shift + Insert
tuş kombinasyonunu kullanabilirsiniz.
Sekizinci tavsiyem; kubectl explain
sizin gücünüz, kullanmayı öğrenin. kubernetes nesneleri için hızlıca açıklama bulabileceğiniz komut satırıdır. Bu komut yardımıyla örneğin aşağıdaki şekilde pod.spec bölümü hakkında bilgi bulabilirsiniz;
kubectl explain pod.spec
Alternatif olarak aşağıdaki komutla tüm ağaç kırılımını görebilirsiniz;
kubectl explain pod.spec --recursive
Dokuzuncu tavsiyem; hızlı silme işlemini uygulayın. Sınav sırasında zamana karşı da yarıştığınızı unutmayın. Kubernetes nesnelerini silmeyi beklerken kaybettiğiniz her bir saniye değerli. Bu nedenle aşağıdaki parametreleri kullanarak bu zamanı kazanmaya çalışın;
--grace-period=0 --force
Örneğin;
kubectl delete pod hello --grace-period=0 --force
Onuncu tavsiyem; shell alias’ları kullanın. Sık kullandığınız komutlar için sınava başlarken alias tanımlayın. Örneğin;
alias k=kubectl alias kx="kubectl explain" alias kdr="kubectl run --dry-run -o yaml" alias kns="kubectl config set-context --current --namespace" alias kd="kubectl delete --grace-period=0 --force"
kubectl üzerinden ilerliyorsanız en sık kullanacağınız komut kubectl run ... -o yaml --dry-run
olacaktır. Bu komut size gerekli temel yaml şablonunu verecektir. Komut satırından belirtemediğiniz detayları daha sonra bu çıktıya kolaylıkla ekleyebilirsiniz.
Faydalı kubectl komutları
kubectl ile ilgili işinize yarabilecek komut kalıplarını aşağıda sıralamaya çalıştım;
Bir pod oluşturma (örnek; hello adıyla busybox imajlı bir pod oluşturma):
kubectl run hello --image=busybox --restart=Never
Yukarıdaki komut çıktısını bir dosyaya yazma;
kubectl run hello --image=busybox --restart=Never > busybox.yaml
Bir pod şablo yaml’ı oluşturma ( örnek; hello adıyla busybox imajlı bir pod ):
kubectl run hello --image=busybox --restart=Never --dry-run -o yaml
yukarıdaki örneklerin komut çalıştıran versiyonu;
kubectl run hello --image=busybox --restart=Never --dry-run -o yaml --command -- echo Enterprisecoding
cronjob oluşturma ( örnek; hello adıyla busybox imajlı bir pod’da ekrana çıktı yazan job’ı her dakika çalıştırma ):
kubectl run hello --image=busybox --restart=OnFailure --schedule="*/1 * * * *" --dry-run -o yaml --command -- echo Enterprisecoding
Servis açma (örnek; nginx-deployment adlı deployment’ı nginx-service adıyla 4444 portundan ClusterIP türü ile açma):
kubectl expose deployment nginx-deployment --name=nginx-service --port=4444 --target-port=80
Pod cpu ve memory talebi (örnek; busybox container’ı bulunan pod’da talep tanımlama):
kubectl run hello --image=busybox --restart=Never --requests='cpu=200m,memory=512Mi' --dry-run -o yaml --command -- echo aa
Pod cpu ve memory limiti (örnek; busybox container’ı bulunan pod’da limit tanımlama):
kubectl run hello --image=busybox --restart=Never --limits='cpu=200m,memory=512Mi' --dry-run -o yaml --command -- echo aa
Secret oluşturma (örnek; anahtarim=degerim ikilisinden secret oluşturma):
kubectl create secret generic my-secret --from-literal=anahtarim=degerim
Pod içerisindeki container imajını değiştirme (örnek; nginx-deployment adlı deployment’ı nginx container imajını 1.17.6 tag’li hali ile değiştirme):
kubectl set image deployment nginx-deployment nginx=nginx:1.17.6 --record
Son olarak…
Certified Kubernetes Application Developer (CKAD) sınavı bir geliştirici olarak Kubernetes hakimiyetinizi sınayabileceğiniz güzel bir pratik sınavıdır. Yeterince pratik yapmanız ardından sınavı geçebileceğiniz konusunda kendinize güvenin. Özellikle komut satırına hakim olun. Pratik yapın.
Pratik yapmak için aşağıdaki kaynaklar size faydalı olacaktır;
- Kubernetes for Developers (LFD259) eğitimi
- Github üzerindeki CKAD egzersizleri
- Vim kopya kağıdı
Bonus: KUBERNETES15
kupon kodu ile sınavı satın alarak %15 indirimden faydalanabilirsiniz.
Başarılar…
Merhabalar,
Faydalı bilgileriniz için çok çok teşekkürler. Yazınızda “GateOne‘ı kullanmaya alışın” demişsiniz. Bunu windows makinamda kullanabilir miyim? Nasıl kullanabileceğimi anlayamadım. Yardımcı olabilirseniz sevinirim.
Çok teşekkürler.
Elif
Merhaba Elif,
GateOne’ı deneyimlemek için Docker konteynerını kullanabilirsin. Konteynerı sayesinden Docker for Windows ile kullanılabilir. Github sayfasında kullanımına dair bilgi alabilirsin.