ทำความรู้จักกับ Kubernetes (K8s) เครื่องมือที่ DevOps พลาดไม่ได้

         Kubenetes (K8s) เป็นเครื่องมือที่จะมาช่วยให้การมองโลกของ infrastructure เปลี่ยนไป จริง ๆ บางคนมองว่า Kubenetes เป็นการต่อยอดจาก Docker ต้องเป็น Docker ก่อนถึงจะเข้าใจ Kubenetes ได้ สำหรับคำตอบของคำถามนี้คงจะตอบได้ทั้ง ใช่ และ ไม่ใช่ ครับ 




         หากใครคุ้นเคยกับการมีแผนก Infrastructure (Operation) เตรียมของเตรียม Tools ให้ เช่น การติดตั้ง application server, การตั้งค่า load balance, การเปิด-ปิด port หรืออื่น ๆ สิ่งเหล่านี้จะมีการขยับเข้ามาใกล้ฝั่ง Developer มากขึ้น เพื่อใช้งานในลักษณะ Infrastructure-as-a-Code (IaaS) ซึ่งเป็นการรวมกันของฝั่ง Developer และ Operation หรือที่เรียกกันว่า ​DevOps นั่นเอง

         Virtualization คงจะเป็นคำที่เหมาะสมสำหรับโครงสร้างแบบนี้ ซึ่งเราไม่ได้รู้จักกับมันเป็นครั้งแรก ไม่ว่าจะ Cloud ที่สามารถสร้างเลือกสร้างเครื่องเสมือน หรือ Docker ที่เป็น containerize platform อย่างชัดเจน ก็ล้วนแต่ไม่ใช่ physical hardware ทั้งสิ้น


มาลองใช้งานกันเลยดีกว่า


1. ติดตั้ง Kubenetes

         สำหรับการทดสอบ ถ้าเราติดตั้ง Docker Desktop อยู่แล้ว เราสามารถเปิด Kubernetes เพื่อลองใช้งานได้ ส่วนการติดตั้งบนเครื่องจริงนั้น ลองดูที่ Kubernetes Doc.

Kubernetes on docker desktop


2. เตรียม image ให้พร้อม

         image คือแม่แบบของการสร้าง container จริง ๆ แล้ว K8s รองรับ image หลายรูปแบบ เช่น containerd หรือ CRI-O แต่สำหรับวันนี้ เราสามารถใช้ docker image ได้


3. รู้จักไฟล์​ yaml

         การติดตั้ง resource ใด ๆ บน K8s เราจะใช้ไฟล์นามสกุล *.yml เป็นตัว setup

การใช้งานคือต้องใช้ command-line ดังนี้ ติดตั้ง
$ kubectl apply -f kube-starter.yml
service/discov-svc created
deployment.apps/discov-deploy created

ลบ
$ kubectl delete -f kube-starter.yml
service "discov-svc" deleted
deployment.apps "discov-deploy" deleted

         K8s จะมีการเช็คเองว่า resource ที่เราเขียนใน yml มีการเปลี่ยนแปลงหรือไม่ ถ้ามีก็จะเป็นการ update resource นั้น ๆ ทันที โดยเราสามารถรวมหลาย ๆ resource ไว้ใน yml ไฟล์เดียวหรือแยกก็ได้ ขึ้นอยู่กับการใช้งาน ลองเบิ้ล apply ให้ดูตัวอย่าง
$ kubectl apply -f kube-starter.yml
service/discov-svc created
deployment.apps/discov-deploy created

$ kubectl apply -f kube-starter.yml
service/discov-svc unchanged
deployment.apps/discov-deploy unchanged


4. ลองใช้คำสั่ง 

ดูสถานะของ pod
$ kubectl get pod
NAME                             READY   STATUS             RESTARTS   AGE
discov-deploy-74f444bfc7-s876r   1/1     Running            0          59s
ดูสถานะของ service
$ kubectl get service
NAME         TYPE        CLUSTER-IP    EXTERNAL-IP       PORT(S)    AGE
discov-svc   ClusterIP   10.96.73.23   <none>            8888/TCP   59s
ดูสถานะของ deployment
$ kubectl get deployment
NAME            READY   UP-TO-DATE   AVAILABLE   AGE
discov-deploy   1/1     1            1           59s
ดู log ของแอปฯ
$ kubectl logs pod_name -f
shell เข้าไปภายใน container
$ kubectl exec -it pod_name sh
         นอกจากนี้ยังมี resource อื่น ๆ ให้ใช้งานอีกมาก https://kubernetes.io/docs/home/ ซึ่งหากเข้าใจในเบื้องต้นแล้ว ก็จะสามารถต่อยอดได้หลากหลาย สะดวก และสามารถเก็บไว้ใช้หลาย ๆ งานด้วยครับ

Facebook Comment

Recent Posts

Popular post of 7 days

ลืมรหัสปลดล็อค Android เข้าเครื่องไม่ได้ มีทางออกครับ

[Android] เปิดเครื่องไม่ได้ โลโก้ค้าง (Boot Loop)

ความเร็วเน็ตที่แท้จริง Mbps MBps ???

Popular

ลืมรหัสปลดล็อค Android เข้าเครื่องไม่ได้ มีทางออกครับ

ความเร็วเน็ตที่แท้จริง Mbps MBps ???

[Android] เปิดเครื่องไม่ได้ โลโก้ค้าง (Boot Loop)

Portal คืออะไรกันนะ???

พิมพ์ซองจากรายชื่อ excel ด้วยวิธี Mail Merge

[Java] ความแตกต่างระหว่าง Overloading กับ Overriding

Push Notification คืออะไร มีวิธีทำอย่างไร (No Code)

[Java] Java Static Variable และ Static Method

[Android] Download Mode & Recovery Mode

เรื่องของ ++i กับ i++