เทคนิคการสอบ Certified Kubernetes Administrator (CKA) ให้ผ่าน
ข้อมูลเบื้องต้น สำหรับการสอบ Certified Kubernetes Administrator
- Certified Kubernetes Administrator เป็นขององค์กรมูลนิธิ Clound native Computing Foundation (CNCF) ที่เป็นองค์กรที่อยู่ภายใต้ Linux Foundation
- ราคาในการสอบ 300 เหรียญ ประมาณ 15000 บาท ตามอัตราค่าแลกเปลี่ยน ซึ่งถ้าเราสอบตก เราสามารถสอบได้อีก 1 ครั้ง ฟรี แล้วถ้ารู้ว่าเราสอบตกวันนั้น สามารถขอสอบอีกครั้งได้เลย
- การสอบออนไลน์ เป็นการสอบปฏิบัติ พิมพ์ command line อย่างเดียว จะมีผู้คุมสอบดูเราสอบผ่านกล้อง webcam
- ใช้ Kubernetes (k8s) version 1.6.2 on Ubuntu 16.04
- ใช้เวลาสอบประมาณ 3-4 ชั่วโมง
- คะแนนที่สอบผ่าน คือ 74%
- อายุของ certificate คือ 2 ปี
- สามารถลงทะเบียนได้ที่ https://www.cncf.io/certification/expert/
สิ่งที่ต้องเตรียมก่อนสอบ
- ต้องมี PC หรือ Laptop
- ใช้ได้ทั้ง Windows, MacOS หรือ Linux
- ต้องใช้ Chrome or Chromium Browser เท่านั้น
- พื้นที่การสอบต้องสะอาด โต๊ะไม่รก โดยผู้คุมสอบจะให้ถือ webcam เพื่อส่องรอบๆห้อง ว่ามีใครอยู่บ้าง ต้องเป็น private space เพื่อความเป็นส่วนตัวในการสอบ จะต้องไม่มีใครในห้อง ห้ามเปิดประตู ประตูกระจกที่เห็นคนข้างนอกเดินไปเดินมา ให้เป็นห้องแบบปิด แต่สามารถมีกระจกได้
- อินเทอร์เนตต้องมีความเร็วพอสมควร เพราะว่า ต้องมีการบันทึกหน้าจอขณะการทำข้อสอบ เผื่อเราทุจริตหรือมีปัญหากันในภายหลัง
- ต้องมีไมโครโฟน บันทึกเสียงรอบข้าง
- ต้องมี passport หรือ ID Card ที่ยืนยันตัวตนความเป็นเราที่ใช้สมัคร
- ในการจองสอบ เตรียมเวลาในการสอบประมาณ 1-3 วันถึงจะได้สอบ
ตัวอย่างหน้าจอการสอบ
หน้าจอการสอบประกอบด้วย 2 ฝั่ง ด้านซ้ายเป็นโจทย์ ด้านขวาเป็น terminal อย่างเดียว ไม่มี GUI ให้ใช้ เป็นการพิมพ์ command line ล้วนๆ ซึ่งเราสามารถกด back หรือ next ไปเรื่อยๆ เพื่อแสดงโจทย์ข้อถัดไปหรือโจทย์ข้อก่อนหน้า
ระหว่างการสอบ
- เป็นการสอบแบบ Open book ไม่สามารถ copy เอาโจทย์ปัญหาไป search เพื่อหาคำตอบ
- ไม่มี dashboard ให้ใช้แต่ command line อย่างเดียว
- ห้ามเปิด notepad ของตัวเองเพื่อจดอะไรลงไปเด็ดขาด เพราะว่า จะมี notepad ที่อยู่ในหน้าจอสอบให้ อยู่ประมาณขวาบนของจอ ที่ใช้ในการบันทึกข้อความ
- ตัวนับเวลาการสอบที่อยู่ที่ผู้คุมสอบ เมื่ออินเทอร์เนตตัด หน้าจอก็จะดับตาม แต่เวลาจะนับเรื่อยๆ ไม่ต้องกังวลไป เพราะ ผู้คุมสอบได้ทดเวลาการเราเพิ่มแล้ว
- สามารถ reboot server เองได้
- ความคุ้นชินในการใช้ Crtl+Alt+W ในหน้า terminal จะมาใช้ในการสอบในหน้าเบราเซอร์ไม่ได้ เพราะ การใช้ Ctrl+W เป็นคำสั่งในการปิดเบราเซอร์ ทำให้ต้องมานั่งกดเปิดใหม่ จะให้เสียเวลาในการสอบ
- การใช้ Copy & Paste ในแต่ละ os (ไม่แนะนำในการใช้ window ในการสอบ เพราะ ยากกว่า OS อื่นๆ)
- Linux ให้เลือก text และทำการวางคลิกปุ่มตรงกลางของเม้าท์เพื่อทำการวางข้อความ
- Mac command + C
- Windows ใช้ Ctrl+insert หรือ shift insert เพื่อทำการวาง
- สามารถใช้ screen หรือ tmux ก็ได้ เพราะมี terminal หน้าจอเดียว จะเปิด terminal หลายๆหน้า เพื่อทำงานพร้อมกันไม่ได้
CKA Exam Environment
Environment ที่ใช้ในการสอบมีทั้งหมด 8 cluster ซึ่งเราสามารถเดาข้อสอบได้จากคำอธิบายได้ ซึ่งอยู่ในเอกสารก่อนสอบ
Cluster | Members | CNI | Description |
k8s | 1 CA, 1 etcd, 1 master, 2 worker | flannel | non-HA k8s cluster |
Hk8s | 1 CA, 3 etcd, 3 master, 1 load balancer, 2 worker | calico | HA k8s cluster |
bk8s | 1 CA, 1 etcd, 1 master, 1 worker | flannel | non-HA k8s cluster |
wk8s | 1 CA, 1 etcd, 1 master, 2 worker | flannel | non-HA k8s cluster |
ek8s | 1 CA, 1 etcd, 1 master, 2 worker | flannel | non-HA k8s cluster |
fk8s | 1 CA, 1 etcd, 1 based node none k8s cluster | none | Missing master node |
ik8s | 1 CA, 1 etcd, 1 master, 1 based | flannel | k8s cluster – missing worker node |
tk8s | 1 CA, 1 etcd, 1 master, 1 worker | flannel | non-HA k8s cluster |
คำถามในการสอบ Certified Kubernetes Administrator (CKA)
- 5% Scheduling
- 5% Logging/Monitoring
- 8% Application Lifecycle Management
- 11% Cluster Maintenance
- 12% Security
- 7% Storage
- 10% Troubleshooting
- 19% Core Concepts
- 11% Networking
- 12% Installation, Configuration & Validation
Core Concept
Core Concept ประกอบด้วย 2 ฝั่ง คือ Component กับ Objects คุณต้องเข้าใจในเรื่องของ Master Components ซึ่งประกอบไปด้วย api-server, controller, scheduler ข้างในแต่ละ service run ยังไง ทำงานแบบไหน
Master Components
- Kube-api-server
- Kube-controller-manager
- Kube-scheduler
Non-master components
- Kubelet ( เป็น api ที่ master จะติดต่อเข้ามา )
- Kube-proxy ( เป็น network ที่ putty เข้ามา )
Kubernetes Objects ( ต้องเข้าใจ Object พื้นฐานทั้งหมด )
- Pod
- Service
- Ingress
- Volume
- Namespace
- ReplicaSet
- Deployment
- Job
- [CronJob]
- [StatefulSet]
- [DaemonSet]
Core Concept (80% of score)
- ซึ่งในการสอบอย่างเช่น มี environment ทั้งหมด 8 cluster มี 1 cluster ที่ข้อสอบทั้งหมด 70% – 80% ที่ข้อสอบทั้งหมดอยู่ในนั้นทั้งหมด มี namespace มากกว่า 10 ซึ่งโจทย์แต่ละข้อจะเล่นกับ namespace เลยใช้ namespace เยอะมาก
- การใช้ Label และ Selector โจทย์จะไม่บอกหรอกว่า จงเขียน Label และ Selector แต่โจทย์จะบอกว่า จงเขียน Service ที่วิ่งเข้า Pod ตัวนี้ ลักษณะแบบนี้เราก็ต้องรู้ด้วยตัวเองว่าต้องใช้ Label กับ Selector
- init container คือ container ที่ต้อง start ก่อนตัวอื่น พอ complete เสร็จแล้ว จะ return zero แล้วถึง start container ตัวถัดไป มีโจทย์ที่ให้ทำแบบนี้ด้วย เพื่อแชร์ volume ด้วยกัน สามารถศึกษาเพิ่มเติมได้ที่ https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
- Control output ที่ให้พิมพ์ command เพื่อแสดง Output ที่โจทย์ต้องการ เช่น การ sorting ขนาดของ volume, การแสดงเฉพาะ field , การให้แสดงเฉพาะ ip address สามารถศึกษาเพิ่มเติมได้ที่ https://kubernetes.io/docs/user-guide/kubectl-overview/
- Job เป็นตัว run แบบ parallel เหมือนทำ worker run job พร้อมกันหลายๆตัว ซึ่งโจทย์จะบอกประมาณว่า จง run ตัวนี้ให้เสร็จ 10 ครั้ง โดยที่ run ครั้งละ 3 ตัว สามารถศึกษาเพิ่มเติมได้ที่ https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/
- Update and Scaling Deployment
- History and rollback Deployment เป็น command
Installation, Configuration and Validation (20% of score)
คุณต้องทำ manual การติดตั้งด้วยตัวเองทั้งหมด เป็นแบบ Hard Install ให้ไปที่ https://github.com/kelseyhightower/kubernetes-the-hard-way ซ้อมทำการติดตั้งจนกว่าจะจำได้ ว่าแต่ละขั้นตอนต้องทำยังไง โดยที่ไม่ต้องเปิดเอกสารในการติดตั้งอีก แล้วคุณจะสามารถทำคะแนน 20% ได้แน่นอน
- การสร้าง K8S cluster from binaries เป็นการ upzip ออกมาเอง แล้วทีละขั้นตอนในการติดตั้ง
- Must use token and certificates
- Configure to start K8S components with system
- ใช้ systemctl to enable/disable services
- Troubleshooting with k8s log files
- มี backup and restore etcd
Networking
- ต้องเข้าใจ concept ของ NodePort ใช้ทำการ expose port ออกมาเพื่อใช้ดู ว่าถูกไหม
หา IP address ของ service นี้ใช้ทำอะไร สามารถศึกษาเพิ่มเติมได้ที่ https://kubernetes.io/docs/concepts/services-networking/service/ - Configure Basic Ingress สามารถศึกษาเพิ่มเติมได้ที่ https://kubernetes.io/docs/concepts/services-networking/ingress/
Volume
Volume เป็น empty dir หรือ share disk ธรรมดา การสร้าง storage class ใหม่ มีข้อสอบประมาณ 1-2 ข้อ
- Volume สามารถศึกษาเพิ่มเติมได้ที่ https://kubernetes.io/docs/concepts/storage/volumes/
- Persistent Volume and Persistent Volume Claim สามารถศึกษาเพิ่มเติมได้ที่ https://kubernetes.io/docs/concepts/storage/persistent-volumes/
- Storage Class สามารถศึกษาเพิ่มเติมได้ที่ https://kubernetes.io/docs/concepts/storage/storage-classes/
Security
- Network Policy สามารถศึกษาเพิ่มเติมได้ที่ https://ahmet.im/blog/kubernetes-network-policy/
- Secret both file and environment ต้องเขียน mount ลงไฟล์ กับลง environment variable สามารถศึกษาเพิ่มเติมได้ที่ https://kubernetes.io/docs/concepts/configuration/secret/
Troubleshooting, Monitoring/Logging
ซึ่งจะสอดแทรกตามที่ต้องทำการติดตั้งอยู่แล้ว มีการ recovery ดู log ดูว่าทำไม service ไม่ start? ทำไม reboot แล้วมีปัญหา? ทำไมตัวนี้ start ไม่ขึ้น? cluster ตัวนี้ขาดอะไรไป? เราต้องใช้คำสั่งในการดูปัญหาที่เกิดขึ้น ซึงมีคำสั่ง kubectl และ kubectl logs ในการแสดง output ของปัญหา
- Debug with kubectl describe สามารถศึกษาเพิ่มเติมได้ที่ https://kubernetes.io/docs/tasks/debug-application-cluster/debug-application-introspection/
- Logging with kubectl logs
Tips
- ควรฝึกการติดตั้งแบบ command line อย่างเดียว อย่างน้อย 6 เดือน เพื่อความคุ้นชินในการติดตั้ง kubernetes
- โจทย์ 60% สำหรับ developer และอีก 40% เป็นของ administrator
- Kubernetes Version ที่ใช้ คือ 6.2
- Kubectl explain จะมีคำอธิบายว่าขาดอะไรไปบ้าง มีคำอธิบายให้เราเข้าใจ
- สามารถเลือกทำโจทย์คำถามได้ เพื่อประหยัดเวลาในการทำข้อสอบ แล้วค่อยกลับวนมาทำใหม่ได้ ไม่ควรติดอยู่กับข้อใดข้อหนึ่งนานจนเกินไป จะเป็นการเสียเวลา
- แนะนำให้สร้าง manifest เพราะ แต่ละข้อสามารถนำมาใช้ซ้ำกันได้ เพื่อประหยัดเวลาในการทำข้อสอบ
- จงทำทีละ step ด้วยมือทั้งหมด ลงจนกว่าจะจำได้ ด้วยการทำตาม https://github.com/kelseyhightower/kubernetes-the-hard-way
หลังจากทำข้อสอบเสร็จแล้ว จะประกาศผลภายใน 72 ชั่วโมง และจะจัดส่งใบ Certified Kubernetes Administrator (CKA) เป็นไฟล์ pdf ให้ และมีลำดับของการเป็น Certified Kubernetes Administrator (CKA) คนที่เท่าไหร่ของโลก
การทำข้อสอบนี้เป็นการวัดความรู้ของเราจริงๆ ไม่สามารถจำคำตอบแล้วไปสอบได้ ขอให้ทุกคนประสบความสำเร็จในการสอบ Certified Kubernetes Administrator (CKA) นะคะ
เนื้อหาโดย
คุณจิรายุส นิ่มแสง
Founder & CEO at Opsta (Thailand) Co.,Ltd.
จากหัวข้อ “Tips & Techniques to pass Certified Kubernetes Administrator”
by Jirayut Nimsaeng, Founder at Opsta ในงาน GDG Cloud Bangkok 2nd Meetup
สำหรับผู้ที่สนใจรายละเอียดเพิ่มเติมเกี่ยวกับ OpenLandscape Cloud based on OpenStack สามารถทดสอบฟรีได้ที่ https://gate.openlandscape.cloud/ ค่ะ
The most level of happiness is being able to feel like you are giving back to this world.
Happiness 🙂