ลองเล่น Kubernetes แบบ localhost ด้วย Minikube

Krittamate Khamkom
Nextzy
Published in
2 min readApr 23, 2020
Photo by Maria Teneva on Unsplash

Minikube คืออะไร

Minikube คือ tools ที่ใช้จำลองสร้าง cluster สำหรับ Kubernetes ภายในเครื่อง โดย cluster ที่ถูกสร้างมานี้จะมีเพียงแค่ node เดียวเท่านั้น โดย Minikube รองรับทั้ง Linux, macOS และ Windows

และในวันนี้เราจะมาสอนวิธีใช้งานผ่าน macOS กัน สำหรับระบบปฏิบัติการอื่น ๆ สามารถเข้าไปอ่านในเว็ปของ Minikube ได้เช่นกัน

ติดตั้ง package ที่สำคัญ

Kubectl

kubectl คือ ชุดคำสั่งสำหรับจัดการ Kubernetes

ติดตั้งด้วยคำสั่ง

brew install kubernetes-cli

ทดสอบว่าติดตั้งเสร็จเรียบร้อยด้วยคำสั่ง

kubectl version --client

Hyperkit

Hyperkit คือ VM ตัวหนึ่ง ที่เอาไว้สำหรับรัน Minikube

ติดตั้งด้วยคำสั่ง

brew install hyperkit

ทดสอบว่าติดตั้งเสร็จเรียบร้อยด้วยคำสั่ง

hyperkit -v

Minikube

ติดตั้งด้วยคำสั่ง

brew install minikube

(หากยังไม่ได้ติดตั้ง kubectl จะถูกติดตั้งให้อัตโนมัติ)

ทดสอบว่าติดตั้งเสร็จเรียบร้อยด้วยคำสั่ง

minikube version

สร้าง Kubernetes cluster ด้วยคำสั่ง

minikube start

ตรวจสอบว่าทำงานได้เรียบร้อยด้วยคำสั่ง

minikube status

Deploy application ผ่าน YAML file

สร้าง deployment

ทำการสร้างไฟล์ deployment.yaml ขึ้นมา

  • metadata.name คือชื่อสำหรับ deployment
  • spec.selector.matchLabels คือ label ที่ใช้บอกว่า pods ไหนจะอยู่ใน deployment นี้บ้าง
  • spec.replicas คือจำนวน pods ที่จะถูกสร้าง
  • spec.template คือคุณสมบัติของ pods ที่จะถูก deployment นี้สร้าง

สั่ง deploy ด้วยคำสั่ง

$ kubectl apply -f deployment.yamldeployment.apps/hello-minikube created

เรียกดูการ deploy ด้วยคำสั่งตามนี้ โดยผลลัพธ์จะแสดงตามสิ่งที่คาดหวังที่เขียนไว้ในไฟล์ deployment.yaml

$ kubectl get deploymentNAME            READY  UP-TO-DATE  AVAILABLE  AGE
hello-minikube 2/2 2 2 2m50s

สร้าง Service เพื่อการเข้าถึง application

เพิ่ม service เข้าไปที่ไฟล์ deployment.yaml

apiVersion: v1
kind: Service
metadata:
name: hello-minikube
spec:
type: LoadBalancer
selector:
app: hello-minikube
ports:
- protocol: TCP
port: 8080
targetPort: 8080

จะได้ไฟล์ deployment.yaml ดังนี้

สั่ง deploy ด้วยคำสั่ง

$ kubectl apply -f deployment.yamlservice/hello-minikube created
deployment.apps/hello-minikube unchanged

เรียกดู service ด้วยคำสั่งตามนี้ โดยผลลัพธ์จะแสดงให้เห็นตาม service ที่คาดหวังที่เขียนไว้ในไฟล์ deployment.yaml

$ kubectl get services

จะสังเกตเห็นว่า EXTERNAL-IP ที่ service ที่เราสร้างขึ้นมาแสดง <pending> นั่นหมายความว่า application ของเราพร้อมที่จะถูกเรียกใช้งานแล้ว

เรียกดู url สำหรับเข้าถึงด้วยคำสั่ง

$ minikube service hello-minikube — urlhttp://192.168.64.3:31963

เมื่อนำ url ที่ได้ เข้าผ่าน browser จะได้ผลลัพธ์ดังนี้

ผลลัพธ์แสดงให้เห็นว่า application ของเราทำงานถูกต้องแล้ว 🎉

ทดลอง scale application

แก้ไขไฟล์ deployment.yaml โดยเพิ่ม replicas เป็น 3

replicas: 3

จะได้ไฟล์ deployment.yaml ดังนี้

สั่งให้ update ด้วยคำสั่ง

$ kubectl apply -f deployment.yamlservice/hello-minikube unchanged
deployment.apps/hello-minikube configured

เรียกดูผลลัพธ์การ update ด้วยคำสั่งตามนี้ โดยผลลัพธ์จะแสดงให้เห็นว่า application ของเราได้รับการ scale เรียบร้อยแล้ว

$ kubectl get deploymentNAME            READY  UP-TO-DATE  AVAILABLE  AGE
hello-minikube 3/3 3 3 27m

Clean up

เมื่อทำการทดสอบเสร็จเรียบร้อยทุกอย่างแล้ว ให้ใช้ชุดคำสั่งดังนี้ เพื่อ clear การ deploy ที่เราทดสอบไป

$ kubectl delete deployment hello-minikube
$ kubectl delete service hello-minikube
$ minikube stop
$ minikube delete

เพียงเท่านี้ก็ถือว่าเราได้ทำการทดลองเป็นอันเสร็จสมบูรณ์แล้ว 🎉

และนี่ก็เป็นเพียงการใช้งาน Kubernetes แบบง่าย ๆ เท่านั้น ซึ่งยังมี feature อีกหลายอย่างของ Kubernetes ที่จะช่วยทำให้ application ของเรามีประสิทธิภาพมากยิ่งขึ้น โดยหากใครมีความสนใจ สามารถหาอ่านได้ที่ doc ของ Kubernetes เลยครับ

สำหรับวันนี้ต้องลาไปก่อน ไว้พบกันใหม่ สวัสดีครับ 👏

--

--