DevOps เปลี่ยนแปลงอย่างมากวิธีที่วิศวกรซอฟต์แวร์และนักพัฒนาพัฒนาและปรับใช้แอปพลิเคชัน เทคโนโลยีหนึ่งที่อยู่ที่หัวใจของการปฏิวัตินี้คือ Kubernetes
มาสำรวจว่าคุณสามารถติดตั้งอินสแตนซ์ Kubernetes ท้องถิ่นบน Ubuntu ด้วย MicroK8s (MicroKates) ได้อย่างไร ด้วยการตั้งค่านี้ คุณสามารถโฮสต์แอปพลิเคชันคอนเทนเนอร์ได้อย่างปลอดภัย น่าเชื่อถือ และปรับขนาดสูง
ทำไมต้องใช้ MicroK8s?
Kubernetes เป็นแพลตฟอร์มโอเพนซอร์สที่ช่วยเพิ่มประสิทธิภาพการดำเนินงาน DevOps โดยทำให้การปรับใช้ การปรับขนาด และการจัดการแอปพลิเคชันที่บรรจุในคอนเทนเนอร์เป็นอัตโนมัติ Kubernetes ยังรู้จักกันในชื่อ K8s ชื่อที่มาจากการนับตัวอักษร 8 ตัวระหว่าง k และ s ในชื่อ Kubernetes คิดถึง MicroK8s ว่าเป็นอินสแตนซ์ Kubernetes ขนาดเล็ก
สภาพแวดล้อมคลาวด์ระดับการผลิตส่วนใหญ่ที่รัน Ubuntu ใช้ Charmed Kubernetes สำหจัดการแอปความท้าทายกับ Charmed Kubernetes คือ มันกินทรัพยากรมากและต้องการระดับความรู้ที่ดีเพื่อตั้งค่าอย่างถูกต้อง
นี่คือที่ที่ MicroK8s เข้ามา MicroK8s เป็น Kubernetes ขนาดเล็กและเบาที่ขึ้นทิศทางต้นน้ำ (upstream) ที่รันบน PC ของนักพัฒนา อุปกรณ์ IoT หรืออุปกรณ์ขอบ (edge) ได้โดยตรงโดยไม่ต้องการ Virtual Machine MicroK8s เป็น Cross-platform และรันบนสถาปัตยกรรม Intel และ ARM ได้ทั้งคู่
MicroK8s ให้คุณหนึ่งในวิธีที่ดีที่สุดในการคุ้นเคยกับ Kubernetes ด้วยการเสียดสีน้อยที่สุด มันเป็น Kubernetes upstream ที่ได้รับการรับรองจาก Cloud Native Computing Foundation (CNCF) ซึ่งรับรองว่าการนำ Kubernetes ไปใช้เป็นไปตามมาตรฐานอุตสาหกรรมที่ระบุ
ขั้นตอนที่ 1: ติดตั้ง MicroK8s บน Ubuntu
คุณติดตั้ง MicroK8s บน Ubuntu ได้ง่ายด้วยคำสั่ง snap
sudo snap install microk8s --classic
ทางเลือกอื่น คุณติดตั้ง MicroK8s จาก GUI ผ่าน Ubuntu Software Center ค้นหา microk8s แล้วคลิกปุ่ม Install
ขั้นตอนที่ 2: กำหนดค่า Firewall สำห MicroK8s
เพื่อให้การสื่อสารระหว่าง Pod และกับอินเทอร์เน็ตราบรื่น คุณควรเปิดการสื่อสารเข้าและออกบนอินเตอร์เฟซเครือข่ายคอนเทนเนอร์ของ Firewall
Pod เป็นหน่วยคอมพิวติ้งที่เล็กที่สุดที่ปรับใช้ได้ใน Kubernetes มันอาจเป็นคอนเทนเนอร์เดียวหรือกลุ่มคอนเทนเนอร์ที่มีพื้นที่จัดเก็บและทรัพยากรเครือข่ายร่วมกัน ฯลฯ
sudo ufw allow in on cni0 && sudo ufw allow out on cni0
จากนั้น รันคำสั่งต่อไปนี้:
sudo ufw default allow routed
เรียนรู้เพิ่มเติม: วิธีตั้งค่า Ubuntu Firewall ด้วย UFW
ขั้นตอนที่ 3: เพิ่มผู้ใช้ของคุณเข้า MicroK8s Group
ในขณะนี้ คุณจะต้องใช้คำสั่ง sudo เพื่อรันคำสั่ง MicroK8s ส่วนใหญ่ แม้จะเป็นมาตรการความปลอดภัยที่ดีบนเซิร์ฟเวอร์การผลิต อาจไม่จำเป็นบนเครื่องพัฒนา
เพิ่มผู้ใช้ของคุณเข้า MicroK8s group เพื่อไม่ต้องใช้ sudo
sudo usermod -aG microk8s $USER
เช่นกัน ทำให้ผู้ใช้ปัจจุบันเป็นเจ้าของไดเรกทอรี ~/.kube
sudo chown -f -R $USER ~/.kube
เพื่อให้การเปลี่ยนแปลงมีผล รีโหลดกลุ่มผู้ใช้โดยรันคำสั่งต่อไปนี้:
newgrp microk8s
เรียนรู้เพิ่มเติม: วิธีจัดการ User Groups บน Linux
ขั้นตอนที่ 4: เปิดใช้งาน Addons สำคัญ
โดยค่าเริ่มต้น MicroK8s มีเพียงขั้นต่ำเพื่อให้ทรงเท้าตัวเล็กบนอุปกรณ์ Edge และ IoT อย่างไรก็ตาม คุณติดตั้ง addons สำคัญบางอย่างได้เพื่อจัดการบริการ MicroK8s เปิดใช้งาน DNS, Dashboard และ Storage add-ons ด้วยคำสั่ง microk8s
microk8s enable dns dashboard storage
Add-on DNS อาจจำเป็นต่อบริการอื่นๆ จึงแนะนำให้เปิดใช้งานตลอดเวลา
Add-on Dashboard ให้ภาพรวมกราฟิกของบริการใน MicroK8s คุณยังใช้จัดการบริการได้
คุณดูรายการ MicroK8s add-ons ที่มีอยู่ได้โดยรันคำสั่ง:
microk8s status
ขั้นตอนที่ 5: ดู MicroK8s Dashboard
ตอนนี้คุณเปิดใช้งาน Dashboard add-on แล้ว คุณเข้าถึง MicroK8s Dashboard จากเว็บเบราว์เซอร์ได้ง่าย
ก่อนอื่น คุณต้องการ IP address ของ Dashboard Pod คุณได้มันโดยรันคำสั่ง:
microk8s kubectl get all --all-namespaces
จากเอาต์พุตคำสั่งข้างต้น คุณจะสังเกตว่า service kubernetes-dashboard ทำงานบน IP address 10.152.183.35 และฟังที่พอร์ต TCP 443 โปรดทราบว่า IP address นี้อาจแตกต่างจากที่ Dashboard service ของคุณใช้ เพราะมันสุ่มสร้าง
ในเบราว์เซอร์ ไปที่ IP address ที่แสดง ในกรณีนี้จะเป็น https://10.152.183.35:443 ตรวจสอบให้แน่ใจว่าคุณชี้ไปที่ URL ที่ถูกต้อง
เพื่อวัตถุประสงค์ด้านความปลอดภัย Kubernetes Dashboard จะขอรายละเอียดการยืนยันตัวตนเพื่อลงชื่อเข้าใช้ คุณเข้าถึง Default Dashboard Token ได้โดยรันคำสั่งต่อไปนี้ จากนั้นคัดลอก kubernetes.io/service-account-token ที่นำเสนอและวางในช่องป้อน Token
token=$(microk8s kubectl -n kube-system get secret | grep default-token | cut -d " " -f1)
microk8s kubectl -n kube-system describe secret $token
Dashboard นำเสนอภาพรวมของ Workloads, Services, Configuration, Clusters ฯลฯ ของ MicroK8s
ขั้นตอนที่ 6: สร้างบริการด้วย MicroK8s
เพื่อดู MicroK8s ในการทำงาน ให้สร้างการปรับใช้บริการ Microbot ที่มี 2 Pods สร้าง Pod ด้วยคำสั่ง kubectl:
microk8s kubectl create deployment microbot --image=dontrebootme/microbot:v1
ปรับขนาด Microbot Pod ด้วยคำสั่งด้านล่าง
microk8s kubectl scale deployment microbot --replicas=2
สร้างบริการเพื่อเผยแพร่การปรับใช้ Microbot
microk8s kubectl expose deployment microbot --type=NodePort --port=80 --name=microbot-service
ตอนนี้เราปรับใช้ Microbot Pods 2 ตัวภายใต้ชื่อ service/microbot-service คุณดูรายละเอียดของ Microbot Service และบริการอื่นๆ ได้โดยรันคำสั่งต่อไปนี้:
microk8s kubectl get all --all-namespaces
คุณจะสังเกตว่า Microbot Service ทำงานบน NodePort ดังนั้น คุณเข้าถึงได้ผ่านเบราว์เซอร์บน PC ของคุณ ในกรณีนี้ บริการทำงานบนพอร์ตที่สุ่มสร้าง 30353
ในเบราว์เซอร์ ไปที่ URL https://localhost:30353 โดย 30353 คือหมายเลขพอร์ตที่แสดงในเอาต์พุตข้างต้น ตรวจสอบให้แน่ใจว่าคุณใช้หมายเลขพอร์ตที่ถูกต้อง
Kubernetes vs Docker: ควรเลือกอันไหน?
คู่มือนี้ดูที่วิธีติดตั้ง Kubernetes ขนาดเล็กบน PC หรืออุปกรณ์ Edge ของคุณ Kubernetes เป็นส่วนหนึ่งของเวิร์กโฟลว์ของนักพัฒนาหลายคน และใช้กันอย่างกว้างขวางสำหการปรับใช้แอปพลิเคชันคอนเทนเนอร์ขนาดใหญ่ในการผลิต
Kubernetes ใช้สำหจัดการหรือออร์เคสเตรตกลุ่มคอนเทนเนอร์ เช่น คอนเทนเนอร์ Docker ด้วยความสะดวก Docker แบบสแตนด์อโลน ในทางกลับกัน ใช้หลักสำหจัดการคอนเทนเนอร์เดี่ยว การเลือกว่าจะใช้ Docker หรือ Kubernetes จะขึ้นอยู่กับความสามารถของทีมและขนาดซอฟต์แวร์ที่ปรับใช้สู่การผลิต