Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Linux

วิธีตั้งค่า Kubernetes Local Instance ด้วย MicroK8s บน Ubuntu

DevOps เปลี่ยนแปลงอย่างมากวิธีที่วิศวกรซอฟต์แวร์และนักพัฒนาพัฒนาและปรับใช้แอปพลิเคชัน เทคโนโลยีหนึ่งที่อยู่ที่หัวใจของการปฏิวัตินี้คือ Kubernetes

มาสำรวจว่าคุณสามารถติดตั้งอินสแตนซ์ Kubernetes ท้องถิ่นบน Ubuntu ด้วย MicroK8s (MicroKates) ได้อย่างไร ด้วยการตั้งค่านี้ คุณสามารถโฮสต์แอปพลิเคชันคอนเทนเนอร์ได้อย่างปลอดภัย น่าเชื่อถือ และปรับขนาดสูง

ทำไมต้องใช้ MicroK8s?

Kubernetes เป็นแพลตฟอร์มโอเพนซอร์สที่ช่วยเพิ่มประสิทธิภาพการดำเนินงาน DevOps โดยทำให้การปรับใช้ การปรับขนาด และการจัดการแอปพลิเคชันที่บรรจุในคอนเทนเนอร์เป็นอัตโนมัติ Kubernetes ยังรู้จักกันในชื่อ K8s ชื่อที่มาจากการนับตัวอักษร 8 ตัวระหว่าง k และ s ในชื่อ Kubernetes คิดถึง MicroK8s ว่าเป็นอินสแตนซ์ Kubernetes ขนาดเล็ก

วิธีตั้งค่า Kubernetes Local Instance ด้วย MicroK8s บน Ubuntu

สภาพแวดล้อมคลาวด์ระดับการผลิตส่วนใหญ่ที่รัน 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
วิธีตั้งค่า Kubernetes Local Instance ด้วย MicroK8s บน Ubuntu

จากเอาต์พุตคำสั่งข้างต้น คุณจะสังเกตว่า 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
วิธีตั้งค่า Kubernetes Local Instance ด้วย MicroK8s บน Ubuntu

Dashboard นำเสนอภาพรวมของ Workloads, Services, Configuration, Clusters ฯลฯ ของ MicroK8s

วิธีตั้งค่า Kubernetes Local Instance ด้วย MicroK8s บน Ubuntu

ขั้นตอนที่ 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
วิธีตั้งค่า Kubernetes Local Instance ด้วย MicroK8s บน Ubuntu

คุณจะสังเกตว่า Microbot Service ทำงานบน NodePort ดังนั้น คุณเข้าถึงได้ผ่านเบราว์เซอร์บน PC ของคุณ ในกรณีนี้ บริการทำงานบนพอร์ตที่สุ่มสร้าง 30353

ในเบราว์เซอร์ ไปที่ URL https://localhost:30353 โดย 30353 คือหมายเลขพอร์ตที่แสดงในเอาต์พุตข้างต้น ตรวจสอบให้แน่ใจว่าคุณใช้หมายเลขพอร์ตที่ถูกต้อง

วิธีตั้งค่า Kubernetes Local Instance ด้วย MicroK8s บน Ubuntu

Kubernetes vs Docker: ควรเลือกอันไหน?

คู่มือนี้ดูที่วิธีติดตั้ง Kubernetes ขนาดเล็กบน PC หรืออุปกรณ์ Edge ของคุณ Kubernetes เป็นส่วนหนึ่งของเวิร์กโฟลว์ของนักพัฒนาหลายคน และใช้กันอย่างกว้างขวางสำหการปรับใช้แอปพลิเคชันคอนเทนเนอร์ขนาดใหญ่ในการผลิต

Kubernetes ใช้สำหจัดการหรือออร์เคสเตรตกลุ่มคอนเทนเนอร์ เช่น คอนเทนเนอร์ Docker ด้วยความสะดวก Docker แบบสแตนด์อโลน ในทางกลับกัน ใช้หลักสำหจัดการคอนเทนเนอร์เดี่ยว การเลือกว่าจะใช้ Docker หรือ Kubernetes จะขึ้นอยู่กับความสามารถของทีมและขนาดซอฟต์แวร์ที่ปรับใช้สู่การผลิต