Hướng dẫn tiếp cài một cluster Kubernetes trên Orange Pi quản lý bằng Portainer

Sau khi cài được Docker Swarm trên 1 cluster bằng Orange Pi ở bài viết này (Cài docker swarm cho cluster Orange Pi) tôi mới phát hiện ra việc sử dụng docker và deploy stack và app trên docker đã quá bình thường rồi, cũng có thể vì tôi là dân ngoại đạo, không phải dev nên không thể theo kịp sự phát triển của đội ngũ dev chuyên nghiệp. Giờ đây, dân dev đã chuyển sang dùng Kubernetes mạnh mẽ hơn rất nhiều so với Docker. Và thế là tôi lại phải mầy mò xem Kubernetes có triển khai được trên Orange Pi không, và thật tuyệt vời, tôi đã làm được.

Nói một cách thật lòng, tôi không phải là dân dev nên cũng không hiểu biết gì lắm về Kubernetes, rất cả những gì tôi đọc và hiểu về Kubernetes là đọc từ đây (https://viblo.asia/p/kubernetes-series-bai-1-kubernetes-la-gi-ORNZqnDql0n) Rất các ơn các tác giả bài viết đã viết rất dễ hiểu về Kubernetes, nhưng thú thật đọc xong một hồi tôi vẫn không hiểu lắm. Vì vậy, mục tiêu đơn giản của tôi lúc này là chỉ biết làm sao cài được Kubernetes trên Orange Pi, và triển khai nó trên 1 cluster Orange Pi để thay thế các máy chủ đắt tiền bằng một cluster OPi nhỏ cho các ứng dụng đơn giản mà thôi.

Qua tìm hiểu, tôi lạc vào mê hồn trận của các bản phân phối của Kubernetes như MiniKube, Kind, rồi K3S, microK8S, v.v. Mỗi thứ một kiểu, cài xong rồi thất bại rồi xóa đi cài lại, cài xong rồi treo cả cụm cluster rồi lại xóa đi cài lại (đó là lí do bài viết này lâu lâu mới xong là vậy) . Nhưng cuối cùng lại tôi tìm thấy được một thứ phù hợp nhất, đó là K3S (https://k3s.io) Lí do thì nếu như bạn bạn muốn lặp lại hơn 1 tháng như tôi thì bạn có thể tự thử lại, hơn nữa K3S hỗ trợ cả ARM64 lẫn ARMv7 nên phù hợp với hầu hết các chip Allwinner mà Orange Pi đang có. Và cuối cùng, nó đơn giản dễ cài nhất. Mục tiêu chính chỉ là chứng minh là bạn có thể sử dụng Kubernetes thôi.

Ok. Giờ chúng ta bắt đầu. Đầu tiên bạn cần có Orange Pi với mức RAM > 2GB, đây là khuyến cáo của tôi. Còn RAM 1GB vẫn có thể chạy được, tuy nhiên sẽ rất rất rất … chậm. Trong phiên bản thử nghiệm này tôi sử dụng 2xOrange Pi 3 chip H6 phiên bản 2GB không eMMC và 2xOrange Pi Plus 2e chip H3. Các phụ kiện khác như hub, dây mạng, nguồn tổng có lẽ không cần giới thiệu lại.

Như mọi khi, hãy cài 1 bản Ubuntu lên các node, tôi sử dụng Armbian Ubuntu 20.04 focal trong hướng dẫn này. Sau khi cài xong, hãy update đầy đủ, sử dụng account root để bắt đầu với câu lệnh sau
apt update && apt upgrade -y

Sau khi xong cả 4 node, bắt đầu cài K3s trên các node. Trên node bạn chọn là Manager, chạy câu lệnh
curl -sfL https://get.k3s.io | sh -

Sau khi K3s cài xong, kiểm tra xem K3S chạy được chưa
systemctl status k3s

Và kiểm tra file sau để lấy node-token
cat /var/lib/rancher/k3s/server/node-token

Các bạn sẽ có 1 dòng rất dài đại loại như dòng này (chú ý xxxx là 4 ký tự tôi đã thay đổi)
K1093e8d23adf39888540d609b647d5046563b014a83c70e66fc263934514f2xxxx::server:c9dc9fdadeeb8e87698d076cb3acxxxx

Copy nó và dán vào đoạn lệnh sau vào các node client
export K3S_URL="https://IP_NODE_MANAGER:6443"
export K3S_TOKEN="đoạn code bên trên"
curl -sfL https://get.k3s.io | sh -

Nếu mọi thứ ngon ăn, trở lại node manager và gõ lại dòng lệnh này, bạn sẽ có kết quả như dưới
kubectl get nodes

Vậy là cài xong. Tuy nhiên cần có 1 phần mềm quản lý Kubernetes và các node 1 cách trực quan dễ dàng. Và đương nhiên đó là Portainer. Vẫn trên node chọn là manager, hãy sử dụng lệnh sau deploy portainer

kubectl apply -n portainer -f https://raw.githubusercontent.com/portainer/k8s/master/deploy/manifests/portainer/portainer.yaml

Nếu như bạn muốn sử dụng free license của Portainer Business cho tối đa 5 node mà tôi đã từng post ở đây (https://www.facebook.com/orangepivietnam/posts/1012731632636961) hãy dùng lệnh này, hoặc đọc thêm hướng dẫn của Portainer Business cho Kubernetes

kubectl apply -n portainer -f https://raw.githubusercontent.com/portainer/k8s/master/deploy/manifests/portainer/portainer-ee.yaml

Chờ một lúc và truy cập vàp http://IP_NODE_MANAGER:9000 và ta da, chúng ta có Portainer quản lý cho Kubernetes như sau

Các bạn có thể thấy, Kubernetes của tôi có 4 nodes, 16 CPU, và hơn 8GB RAM. Đang sử dụng K3S

Trong phần cluster không có hình ảnh giao diện đẹp như Docker Swarm nhưng cũng có ghi rõ các node, tên gì, IP trên LAN là gì và số CPU cũng như RAM sẵn có. Trên Portainer thì có sẵn các phần quản lý namespace, Helm và các ứng dụng. Ngoài ra cũng có sẵn Kubectl dạng câu lệnh cho các bạn đã quen sử dụng với câu lệnh.

Vậy là tôi đã cài thành công Kubernetes trên 1 cluster Orange Pi, đương nhiên sau đó cũng đã thử deploy một số app sẵn có trên bitnami để thử và mọi thứ chạy ngon lành. Còn nếu bạn cần một cluster đủ mạnh mà vẫn kinh tế cho ứng dụng của bạn, hãy nhớ sử dụng đến Orange Pi. Nhá hàng cluster 8xOrange Pi 3 siêu mạnh đây 🙂

pi3-cluster-kubenetes

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *