วิธีติดตั้ง Minikube บน Ubuntu 24.04|22.04|20.04
คุณพร้อมที่จะค้นพบพลังของ Kubernetes หรือยัง? ในบทแนะนำทีละขั้นตอนนี้ เราจะแสดงวิธีติดตั้ง Minikube บนระบบ Ubuntu Linux โดยใช้ hypervisor พื้นฐานเป็น Libvirt(KVM) หรือ VirtualBox เราจะเริ่มต้นด้วยการแนะนำพื้นฐานเกี่ยวกับ Minikube จากนั้นจึงเจาะลึกไปที่การติดตั้ง Minikube จริง ๆ และวิธีเริ่มใช้งานมัน
Minikube เป็นเครื่องมือโอเพ่นซอร์สที่ถูกพัฒนาขึ้นเพื่อให้ผู้พัฒนาและผู้ดูแลระบบสามารถรันคลัสเตอร์ Kubernetes หนึ่งชุดบนเครื่องของตนเองได้ Minikube จะเริ่มคลัสเตอร์ Kubernetes แบบโนดเดียวในเครื่องท้องถิ่นโดยใช้ทรัพยากรน้อย เหมาะสำหรับการทดสอบการพัฒนาและการพิสูจน์แนวคิด (POC)
คู่มือเดสก์ท็อปอูบุนตูฉบับสมบูรณ์
เรียนรู้ Ubuntu อย่างมืออาชีพ - ตั้งแต่การปรับแต่งเดสก์ท็อปให้สวยงามไปจนถึงการทำงานอัตโนมัติด้วยเทอร์มินัลที่ทรงพลัง เหมาะสำหรับนักพัฒนา ผู้ดูแลระบบ และผู้ใช้ขั้นสูงที่ต้องการควบคุมพื้นที่ทำงานของตนอย่างเต็มที่
สำหรับ CentOS ดูได้ที่: การติดตั้ง Minikube บน CentOS 7/8 ด้วย KVM
โดยสรุป Minikube จะจัดแพ็กเกจและตั้งค่า VM ของ Linux จากนั้นติดตั้ง Docker และคอมโพเนนต์ทั้งหมดของ Kubernetes ลงไป
Minikube รองรับฟีเจอร์ของ Kubernetes เช่น:
- ดีเอ็นเอส
- NodePorts
- ConfigMaps และ Secrets
- แดชบอร์ด
- รันไทม์คอนเทนเนอร์: Docker, CRI-O และ containerd
- เปิดใช้งาน CNI (อินเทอร์เฟซเครือข่ายคอนเทนเนอร์)
- การเข้า
- PersistentVolumes ประเภท hostPath
มาเริ่มติดตั้ง Minikube บน Ubuntu Linux กันเถอะ
ติดตั้ง KVM หรือ VirtualBox ไฮเปอร์ไวเซอร์
เรียกใช้คำสั่งต่อไปนี้เพื่ออัปเดตแพ็กเกจระบบทั้งหมดให้เป็นเวอร์ชันล่าสุด:
sudo apt update && sudo apt upgrade -yหากต้องการรีบูตหลังจากการอัปเกรด ให้ดำเนินการกระบวนการนั้น
[ -f /var/run/reboot-required ] && sudo reboot -fสำหรับผู้ใช้ VirtualBox ให้ติดตั้ง VirtualBox โดยใช้:
- ติดตั้ง VirtualBox บน Ubuntu
ผู้ใช้ KVM ไฮเปอร์ไวเซอร์
สำหรับผู้ที่สนใจใช้ KVM ไฮเปอร์ไวเซอร์ ตรวจสอบคู่มือของเราเกี่ยวกับวิธีการติดตั้ง KVM บน CentOS/Ubuntu/Debian
แล้วตามด้วยวิธีการรัน Minikube บน KVM แทน
ดาวน์โหลดและตั้งค่า Minikube บน Ubuntu
คุณจำเป็นต้องดาวน์โหลดไฟล์ไบนารีของ minikube ผมจะวางไฟล์ไบนารีไว้ในไดเรกทอรี /usr/local/bin เนื่องจากมันอยู่ใน ` PATH
wget https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
chmod +x minikube-linux-amd64
sudo mv minikube-linux-amd64 /usr/local/bin/minikubeยืนยันเวอร์ชันที่ติดตั้ง
$ minikube version
minikube version: v1.33.1
commit: 5883c09216182566a63dff4c326a6fc9ed2982ffเราต้องการ kubectl ซึ่งเป็นเครื่องมือบรรทัดคำสั่งที่ใช้สำหรับติดตั้งและจัดการแอปพลิเคชันบน Kubernetes:
curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectlทำให้ไฟล์ไบนารี kubectl สามารถเรียกใช้งานได้
chmod +x ./kubectl
ย้ายไฟล์ไบนารีไปยัง PATH ของคุณ:
sudo mv ./kubectl /usr/local/bin/kubectlตรวจสอบเวอร์ชัน:
$ kubectl version -o json --client
{
"clientVersion": {
"major": "1",
"minor": "30",
"gitVersion": "v1.30.2",
"gitCommit": "39683505b630ff2121012f3c5b16215a1449d5ed",
"gitTreeState": "clean",
"buildDate": "2024-06-11T20:29:44Z",
"goVersion": "go1.22.4",
"compiler": "gc",
"platform": "linux/amd64"
},
"kustomizeVersion": "v5.0.4-0.20230601165947-6ce0bf390ce3"
}กำลังเริ่ม minikube บน Ubuntu
ตอนนี้ที่ได้ติดตั้งคอมโพเนนต์แล้ว คุณสามารถเริ่มต้น minikube ได้ ภาพ VM จะถูกดาวน์โหลดและกำหนดค่าเพื่อใช้งานคลัสเตอร์ Kubernetes แบบโนดเดียว
- Minikube กับไดรเวอร์ KVM
minikube start --driver=kvm2- กับไดรเวอร์ VirtualBox
minikube start --driver=virtualboxตัวอย่างผลลัพธ์จากคำสั่งที่รัน
...................................
* Using the kvm2 driver based on user configuration
* https://minikube.sigs.k8s.io/docs/reference/drivers/none/
* Downloading driver docker-machine-driver-kvm2:
> docker-machine-driver-kvm2-...: 65 B / 65 B [---------] 100.00% ? p/s 0s
> docker-machine-driver-kvm2-...: 13.46 MiB / 13.46 MiB 100.00% ? p/s 100
* Downloading VM boot image ...
> minikube-v1.33.1-amd64.iso....: 65 B / 65 B [---------] 100.00% ? p/s 0s
> minikube-v1.33.1-amd64.iso: 314.16 MiB / 314.16 MiB 100.00% 37.68 MiB p
* Starting "minikube" primary control-plane node in "minikube" cluster
* Downloading Kubernetes v1.30.0 preload ...
> preloaded-images-k8s-v18-v1...: 342.90 MiB / 342.90 MiB 100.00% 38.75 M
* Creating kvm2 VM (CPUs=2, Memory=2200MB, Disk=20000MB) ...
* Preparing Kubernetes v1.30.0 on Docker 26.0.2 ...
- Generating certificates and keys ...
- Booting up control plane ...
- Configuring RBAC rules ...
* Configuring bridge CNI (Container Networking Interface) ...
* Verifying Kubernetes components...
- Using image gcr.io/k8s-minikube/storage-provisioner:v5
* Enabled addons: default-storageclass, storage-provisioner
* Done! kubectl is now configured to use "minikube" cluster and "default" namespace by defaultรอให้การดาวน์โหลดและการติดตั้งเสร็จสิ้น จากนั้นยืนยันว่าทุกอย่างทำงานได้ตามปกติ
ในการตั้งค่าไดรเวอร์ Minikube ค่าเริ่มต้น ให้ใช้:
# VirtualBox
minikube config set driver virtualbox
# KVM
minikube config set driver kvmการดำเนินการพื้นฐานของ Minikube
ในการตรวจสอบสถานะคลัสเตอร์ ให้รัน:
$ kubectl cluster-info
Kubernetes master is running at https://192.168.39.117:8443
KubeDNS is running at https://192.168.39.117:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.โปรดทราบว่าไฟล์การตั้งค่า Minikube อยู่ที่ ~/.minikube/machines/minikube/config.json
ในการดูการตั้งค่า ใช้:
$ kubectl config view
apiVersion: v1
clusters:
- cluster:
certificate-authority: /root/.minikube/ca.crt
extensions:
- extension:
last-update: Sat, 13 Jul 2024 15:29:47 UTC
provider: minikube.sigs.k8s.io
version: v1.33.1
name: cluster_info
server: https://192.168.39.249:8443
name: minikube
contexts:
- context:
cluster: minikube
extensions:
- extension:
last-update: Sat, 13 Jul 2024 15:29:47 UTC
provider: minikube.sigs.k8s.io
version: v1.33.1
name: context_info
namespace: default
user: minikube
name: minikube
current-context: minikube
kind: Config
preferences: {}
users:
- name: minikube
user:
client-certificate: /root/.minikube/profiles/minikube/client.crt
client-key: /root/.minikube/profiles/minikube/client.keyเพื่อตรวจสอบโหนดที่กำลังทำงาน:
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
minikube Ready control-plane 5m29s v1.30.0
เข้าถึง VM ของ minikube โดยใช้ ssh:
$ minikube ssh
_ _
_ _ ( ) ( )
___ ___ (_) ___ (_)| |/') _ _ | |_ __
/' _ ` _ `\| |/' _ `\| || , < ( ) ( )| '_`\ /'__`\
| ( ) ( ) || || ( ) || || |\`\ | (_) || |_) )( ___/
(_) (_) (_)(_)(_) (_)(_)(_) (_)`\___/'(_,__/'`\____)
$ sudo su -เพื่อหยุดคลัสเตอร์ Kubernetes ท้องถิ่นที่กำลังทำงาน ใช้คำสั่ง:
$ minikube stopในการลบคลัสเตอร์ Kubernetes บนเครื่องท้องถิ่น ให้ใช้:
$ minikube deleteKubernetes มาพร้อมกับแดชบอร์ดเว็บซึ่ง
$ minikube addons list
...
|-----------------------------|----------|--------------|--------------------------------|
| ADDON NAME | PROFILE | STATUS | MAINTAINER |
|-----------------------------|----------|--------------|--------------------------------|
| ambassador | minikube | disabled | 3rd party (Ambassador) |
| auto-pause | minikube | disabled | minikube |
| cloud-spanner | minikube | disabled | Google |
| csi-hostpath-driver | minikube | disabled | Kubernetes |
| dashboard | minikube | disabled | Kubernetes |
| default-storageclass | minikube | enabled ✅ | Kubernetes |
| efk | minikube | disabled | 3rd party (Elastic) |
| freshpod | minikube | disabled | Google |
| gcp-auth | minikube | disabled | Google |
| gvisor | minikube | disabled | minikube |
| headlamp | minikube | disabled | 3rd party (kinvolk.io) |
| helm-tiller | minikube | disabled | 3rd party (Helm) |
| inaccel | minikube | disabled | 3rd party (InAccel |
| | | | [[email ]) |
| ingress | minikube | disabled | Kubernetes |
| ingress-dns | minikube | disabled | minikube |
| inspektor-gadget | minikube | disabled | 3rd party |
| | | | (inspektor-gadget.io) |
| istio | minikube | disabled | 3rd party (Istio) |
| istio-provisioner | minikube | disabled | 3rd party (Istio) |
| kong | minikube | disabled | 3rd party (Kong HQ) |
| kubeflow | minikube | disabled | 3rd party |
| kubevirt | minikube | disabled | 3rd party (KubeVirt) |
| logviewer | minikube | disabled | 3rd party (unknown) |
| metallb | minikube | disabled | 3rd party (MetalLB) |
| metrics-server | minikube | disabled | Kubernetes |
| nvidia-device-plugin | minikube | disabled | 3rd party (NVIDIA) |
| nvidia-driver-installer | minikube | disabled | 3rd party (Nvidia) |
| nvidia-gpu-device-plugin | minikube | disabled | 3rd party (Nvidia) |
| olm | minikube | disabled | 3rd party (Operator Framework) |
| pod-security-policy | minikube | disabled | 3rd party (unknown) |
| portainer | minikube | disabled | 3rd party (Portainer.io) |
| registry | minikube | disabled | minikube |
| registry-aliases | minikube | disabled | 3rd party (unknown) |
| registry-creds | minikube | disabled | 3rd party (UPMC Enterprises) |
| storage-provisioner | minikube | enabled ✅ | minikube |
| storage-provisioner-gluster | minikube | disabled | 3rd party (Gluster) |
| storage-provisioner-rancher | minikube | disabled | 3rd party (Rancher) |
| volumesnapshots | minikube | disabled | Kubernetes |
| yakd | minikube | disabled | 3rd party (marcnuri.com) |
|-----------------------------|----------|--------------|--------------------------------|ในการเปิดใช้งานโมดูล ใช้คำสั่ง:
minikube addons enable <module>ตัวอย่าง :
$ minikube addons enable portainer
! portainer is a 3rd party addon and is not maintained or verified by minikube maintainers, enable at your own risk.
! portainer does not currently have an associated maintainer.
- Using image docker.io/portainer/portainer-ce:2.15.1
* The 'portainer' addon is enabledในการเปิดโดยตรงบนเบราว์เซอร์เริ่มต้นของคุณ ให้ใช้:
$ minikube dashboardเพื่อรับ URL ของแดชบอร์ด
$ minikube dashboard --url
http://192.168.39.117:30000เข้าถึง Kubernetes Dashboard โดยเปิด URL บนเว็บเบราว์เซอร์ที่คุณชื่นชอบ สำหรับการอ่านเพิ่มเติม โปรดดูที่:
- สวัสดีชุด Minikube: https://kubernetes.io/docs/tutorials/stateless-application/hello-minikube/
- คู่มือ Minikube สำหรับผู้เริ่มต้น สามารถดูได้ที่: https://kubernetes.io/docs/getting-started-guides/minikube/
คำแนะนำเพิ่มเติมเกี่ยวกับ Kubernetes:
- การกำหนดตาราง Pods บนโหนด Control plane (Master) ของ Kubernetes
- การเพิ่ม Worker Node ของ Kubernetes ใหม่ไปยัง Cluster ที่มีอยู่
- การติดตั้งคลัสเตอร์ Kubernetes บน CentOS ด้วย Ansible และ Calico CNI
- ติดตั้ง Metrics Server ไปยัง Kubernetes Cluster
- ดึงอิมเมจคอนเทนเนอร์ที่ใช้โดย Kubernetes kubeadm ด้วยตนเอง
- ติดตั้งและใช้งาน Helm 3 บนคลัสเตอร์ Kubernetes