Tạo cụm Kubernetes bằng Minikube

Mục tiêu của hướng dẫn này:

  • Tìm hiểu cụm Kubernetes là gì?
  • Tìm hiểu Minikube là gì?
  • Tạo một cụm Kubernetes bằng Minikube.

Kubernetes Cluster

Kubernetes điều phối một cụm máy tính có tính khả dụng cao được kết nối để hoạt động như một đơn vị duy nhất.

Các tính năng trừu tượng trong Kubernetes cho phép bạn triển khai các ứng dụng được chứa trong một cụm mà không cần ràng buộc chúng cụ thể với từng máy riêng lẻ.

Để sử dụng mô hình triển khai mới này, các ứng dụng cần được đóng gói theo cách tách chúng khỏi các máy chủ riêng lẻ: chúng cần được đóng gói.

Các ứng dụng được chứa trong container linh hoạt hơn và khả dụng hơn so với các mô hình triển khai trước đây, trong đó các ứng dụng được cài đặt trực tiếp vào các máy cụ thể dưới dạng các gói được tích hợp sâu vào máy chủ.

Kubernetes tự động hóa việc phân phối và lập lịch các vùng chứa ứng dụng trên một cụm theo cách hiệu quả hơn. Kubernetes là một nền tảng mã nguồn mở và đã sẵn sàng sản xuất.

Một cụm Kubernetes bao gồm hai loại tài nguyên:

  • Control plane điều phối cụm.
  • Các node là các worker chạy ứng dụng.

Sơ đồ Kubernetes Cluster

Sơ đồ Kubernetes Cluster

Control Plane chịu trách nhiệm quản lý cụm. Control Plane điều phối tất cả các hoạt động trong cụm của bạn, chẳng hạn như lập lịch ứng dụng, duy trì trạng thái mong muốn của ứng dụng, mở rộng ứng dụng và tung ra các bản cập nhật mới.

Node là một máy ảo hoặc một máy tính vật lý hoạt động như một worker trong một cụm Kubernetes. Mỗi node có một Kubelet, đây là một tác nhân để quản lý node và giao tiếp với Control Plane Kubernetes. Node cũng phải có các công cụ để xử lý các hoạt động của container, chẳng hạn như containerd hoặc Docker. Một cụm Kubernetes xử lý lưu lượng sản xuất phải có tối thiểu ba node.

Control Plane quản lý cụm và các node được sử dụng để lưu trữ các ứng dụng đang chạy.

Khi bạn triển khai ứng dụng trên Kubernetes, bạn yêu cầu Control Plane khởi động các container ứng dụng. Control Plane lập lịch trình cho các thùng chứa chạy trên các node của cụm. Các node giao tiếp với Control Plane bằng cách sử dụng Kubernetes API mà Control Plane đưa ra. Người dùng cuối cũng có thể sử dụng trực tiếp Kubernetes API để tương tác với cụm.

Một cụm Kubernetes có thể được triển khai trên máy vật lý hoặc máy ảo. Để bắt đầu triển khai Kubernetes, bạn có thể sử dụng Minikube. Minikube là một triển khai Kubernetes nhẹ tạo một máy ảo trên máy cục bộ của bạn và triển khai một cụm đơn giản chỉ chứa một node.

Minikube có sẵn cho các hệ thống Linux, macOS và Windows. Minikube CLI cung cấp các thao tác khởi động cơ bản để làm việc với cụm của bạn, bao gồm bắt đầu, dừng, xem trạng thái và xóa.

Cài đặt minikube

Linux

Để kiểm tra xem việc ảo hóa (virtualization) có được hỗ trợ trên Linux không, chạy lệnh sau và chắc chắn rằng kết quả trả về là non-empty:

grep -E --color 'vmx|svm' /proc/cpuinfo

Cài đặt kubectl

Đảm bảo bạn đã cài đặt kubectl. Bạn có thể cài đặt kubectl theo hướng dẫn sau tại Install and Set Up kubectl.

Cài đặt Hypervisor

Nếu bạn chưa cài đặt Hypervisor, hãy cài đặt một trong những phần mềm sau đây:

KVM, sử dụng QEMU

VirtualBox

Ghi chú: Minikube cũng hỗ trợ tùy chọn --vm-driver=none để chạy các thành phần của Kubernetes ngay trên máy chủ chứ không phải trong một VM. Sử dụng driver này yêu cầu Docker và môi trường Linux chứ không phải một Hypervisor. Bạn nên sử dụng cài đặt apt của docker từ Docker khi sử dụng non driver. Cài đặt snap của docker không hoạt động với minikube.

Cài đặt Minikube sử dụng package

Có các gói thử nghiệm cho Minikube có sẵn; bạn có thể tìm thấy các gói Linux (AMD64) từ trang phát hành của Minikube trên Github.

Sử dụng các package tool của bản phân phối Linux của bạn để cài đặt package phù hợp.

Cài đặt Minikube thông qua tải xuống trực tiếp

Nếu bạn không cài đặt qua package, bạn có thể tải xuống bản binary và sử dụng.

curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \
  && chmod +x minikube

Đây là một cách dễ dàng để thêm Minikube vào biến môi trường path của bạn:

sudo mkdir -p /usr/local/bin/
sudo install minikube /usr/local/bin/

Cài đặt Minikube sử dụng Homebrew

Một lựa chọn khác là bạn có thể cài đặt Minikube bằng cách sử dụng Linux Homebrew:

brew install minikube

MacOS

Để kiểm tra xem việc ảo hóa (virtualization) có được hỗ trợ trên macOS không, chạy lệnh sau trên terminal:

sysctl -a | grep -E --color 'machdep.cpu.features|VMX' 

Nếu bạn thấy VMX ở kết quả trả về (có màu), thì VT-x đã được hỗ trợ.

Cài đặt kubectl

Đảm bảo bạn đã cài đặt kubectl. Bạn có thể cài đặt kubectl theo hướng dẫn sau tại Install and Set Up kubectl.

Cài đặt Hypervisor

Nếu bạn chưa cài đặt Hypervisor, hãy cài đặt một trong những phần mềm sau đây:

HyperKit

VirtualBox

VMware Fusion

Cài đặt Minikube

Cách đơn giản nhất để cài đặt Minikube trên macOS là sử dụng Homebrew:

brew install minikube

Bạn cũng có thể cài đặt trên macOS bằng việc tải xuống bản binary:

curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd64 \
  && chmod +x minikube

Đây là một cách dễ dàng để thêm Minikube vào biến môi trường path của bạn:

sudo mv minikube /usr/local/bin

Windows

Để kiểm tra xem việc ảo hóa (virtualization) có được hỗ trợ trên Windows 8 và các phiên bản Windows cao hơn không, chạy lệnh sau trên terminal của Windows hoặc command promt.

systeminfo

Nếu bạn thấy những thông tin sau, ảo hóa được hỗ trợ trên Windows.

Hyper-V Requirements:     VM Monitor Mode Extensions: Yes
                          Virtualization Enabled In Firmware: Yes
                          Second Level Address Translation: Yes
                          Data Execution Prevention Available: Yes

Nếu bạn thấy thông tin sau, thì hệ thống đã được cài đặt Hypervisor và bạn có thể bỏ qua bước tiếp theo.

Hyper-V Requirements:     A hypervisor has been detected. Features required for Hyper-V will not be displayed.

Cài đặt kubectl

Đảm bảo bạn đã cài đặt kubectl. Bạn có thể cài đặt kubectl theo hướng dẫn sau tại Install and Set Up kubectl.

Cài đặt Hypervisor

Nếu bạn chưa cài đặt Hypervisor, hãy cài đặt một trong những phần mềm sau đây:

Hyper-V

VirtualBox

Ghi chú: Hyper-V có thể chạy trên 3 phiên bản khác nhau của Windows 10: Windows 10 Enterprise, Windows 10 Professional, và Windows 10 Education.

Cài đặt Minikube sử dụng Chocolatey

Cách đơn giản nhất để cài đặt Minikube trên Windows là sử dụng Chocolatey (chạy với quyền admin):

choco install minikube

Sau khi Minikube hoàn tất việc cài đặt, hãy đóng CLI hiện tại và khởi động lại. Minikube sẽ được tự động thêm vào biến môi trường path của bạn.

Cài đặt Minikube sử dụng gói cài đặt thực thi

Để cài đặt Minikube thủ công trên Windows sử dụng Windows Installer, tải về minikube-installer.exe và chạy bản cài đặt đó.

Cài đặt Minikube thông qua tải về trực tiếp

Để cài đặt Minikube thủ công trên Windows, tải về minikube-windows-amd64, đổi tên nó thành minikube.exe, và thêm nó vào biến môi trường path

Dọn dẹp local state

Nếu bạn đã cài Minikube trước đó, và chạy:

minikube start

và tiếp đó minikube start trả về lỗi:

machine does not exist

thì tiếp theo bạn cần xóa bỏ local state của minikube:

minikube delete

Tạo Kubernetes Cluster bằng Minikube

Chúng ta đã cài đặt Minikube ở bước trên, để kiểm tra phiên bản của Minikube bạn chạy lệnh sau:

minikube version

Kết quả trông sẽ như thế này:

minikube version: v1.8.1

Khởi động cụm bằng lệnh sau:

minikube start

Tuyệt vời! Bây giờ bạn có một cụm Kubernetes đang chạy. Minikube đã khởi động một máy ảo cho bạn và một cụm Kubernetes hiện đang chạy trong máy ảo đó.

Tiếp theo bạn hãy kiểm tra phiên bản của kubectl bằng lệnh sau:

kubectl version

Kết quả trông sẽ như thế này:

Client Version: ...
Server Version: ...

Bây giờ chúng ta sẽ xem thông tin cụm bằng lệnh sau:

kubectl cluster-info

Kết quả trông sẽ như thế này:

Kubernetes master is running at https://...

Để xem node trong cụm, bạn chạy lệnh sau:

kubectl get nodes
KubernetesDevOps
Bài Viết Liên Quan:
Sổ tay Kubernetes: Phương pháp triển khai bằng khai báo
Trung Nguyen 30/03/2021
Sổ tay Kubernetes: Phương pháp triển khai bằng khai báo

Trong hướng dẫn này, bạn sẽ học cách sử dụng cách tiếp cận khai báo để triển khai ứng dụng trong Kubernetes và sử dụng bảng điều khiển Kubernetes.

Sổ tay Kubernetes: Các khái niệm cơ bản trong Kubernetes
Trung Nguyen 21/03/2021
Sổ tay Kubernetes: Các khái niệm cơ bản trong Kubernetes

Trong hướng dẫn trước bạn đã tìm hiểu về Kubernetes,

Sổ tay Kubernetes: Giới thiệu về Kubernetes
Trung Nguyen 20/03/2021
Sổ tay Kubernetes: Giới thiệu về Kubernetes

Hướng dẫn này giới thiệu về điều phối container và Kubernetes, cài đặt Kubernetes và chạy ứng dụng đầu tiên trong Kubernetes.

Kiến ​​thức cơ bản về Kubernetes
Trung Nguyen 17/03/2021
Kiến ​​thức cơ bản về Kubernetes

Bài viết này hướng dẫn kiến thức cơ bản về Kubernetes như: tạo cụm Kubernetes, triển khai ứng dụng vào cụm, mở rộng quy mô triển khai, cập nhật phiên bản ứng dụng, ...