DevOps đã thay đổi lớn cách kỹ sư phần mềm và nhà phát triển xây dựng và triển khai ứng dụng. Một trong những công nghệ cốt lõi của cuộc cách mạng này là Kubernetes.
Hãy khám phá cách bạn có thể cài đặt một instance Kubernetes local trên Ubuntu dùng MicroK8s (MicroKates). Với thiết lập này, bạn có thể dễ dàng host ứng dụng container trong cách an toàn, tin cậy, và mở rộng cao.
Tại Sao Dùng MicroK8s?
Kubernetes là nền tảng mã nguồn mở giúp hợp lý hóa hoạt động DevOps bằng cách tự động hóa triển khai, scaling, và quản lý ứng dụng containerized. Kubernetes còn được biết đến phổ biến là K8s, tên xuất phát từ việc đếm tám chữ cái giữa k và s trong tên Kubernetes. Hãy nghĩ MicroK8s như một instance Micro Kubernetes.
Hầu hết môi trường cloud production public và private chạy Ubuntu dùng Charmed Kubernetes để quản lý ứng dụng containerized. Thử thách với Charmed Kubernetes, tuy nhiên, là nó tốn nhiều tài nguyên và đòi hỏi kiến thức tốt để cấu hình đúng.
Đây là nơi MicroK8s xuất hiện. MicroK8s là một upstream Kubernetes nhỏ và nhẹ có thể chạy trên PC của developer, thiết bị IoT, hoặc thiết bị edge bản địa mà không cần máy ảo. MicroK8s đa nền tảng và có thể chạy trên cả kiến trúc Intel và ARM.
MicroK8s cho bạn một trong những cách tốt nhất để làm quen với Kubernetes, với ma sát tối thiểu. Nó là Kubernetes upstream được chứng nhận bởi Cloud Native Computing Foundation (CNCF), đảm bảo các triển khai Kubernetes tuân thủ và tương tác theo tiêu chuẩn ngành.
Bước 1: Cài Đặt MicroK8s Trên Ubuntu
Bạn có thể dễ dàng cài MicroK8s trên Ubuntu dùng lệnh snap.
sudo snap install microk8s --classic
Thay vào đó, bạn có thể cài MicroK8s từ GUI dùng Ubuntu Software Center. Chỉ cần tìm microk8s và nhấp nút Install.
Bước 2: Cấu Hình Tường Lửa Cho MicroK8s
Để đảm bảo giao tiếp liền mạch giữa các pod và với internet, bạn nên bật giao tiếp vào và ra trên giao diện mạng container của tường lửa.
Một pod là đơn vị tính toán có thể triển khai nhỏ nhất trong Kubernetes; nó có thể là một hoặc nhóm container với lưu trữ và tài nguyên mạng chia sẻ, v.v.
sudo ufw allow in on cni0 && sudo ufw allow out on cni0
Sau đó, chạy lệnh sau:
sudo ufw default allow routed
Tìm Hiểu Thêm: Cách Cấu Hình Tường Lửa Ubuntu Với UFW
Bước 3: Thêm Người Dùng Vào Nhóm MicroK8s
Lúc này, bạn sẽ phải dùng lệnh sudo để chạy hầu hết lệnh MicroK8s. Mặc dù đây là biện pháp bảo mật tốt trên server production, nó có thể không cần thiết trên máy phát triển.
Thêm người dùng của bạn vào nhóm MicroK8s để tránh dùng sudo.
sudo usermod -aG microk8s $USER
Cũng làm cho người dùng hiện tại trở thành chủ sở hữu thư mục ~/.kube.
sudo chown -f -R $USER ~/.kube
Để thay đổi có hiệu lực, tải lại nhóm người dùng bằng lệnh sau:
newgrp microk8s
Tìm Hiểu Thêm: Cách Quản Lý Nhóm Người Dùng Trên Linux
Bước 4: Kích Hoạt Addon Quan Trọng
Mặc định, MicroK8s chỉ chứa tối thiểu để đạt dung lượng tối thiểu trên thiết bị edge và IoT. Tuy nhiên, bạn có thể cài một vài addon quan trọng để quản lý dịch vụ MicroK8s. Bật add-on DNS, dashboard, và storage với lệnh microk8s.
microk8s enable dns dashboard storage
Add-on DNS có thể được yêu cầu bởi dịch vụ khác, vì vậy khuyên luôn bật nó.
Add-on dashboard cho bạn cái nhìn đồ họa tổng quan các dịch vụ trong MicroK8s; bạn cũng có thể dùng nó để quản lý dịch vụ.
Bạn có thể xem danh sách add-on MicroK8s có sẵn bằng lệnh:
microk8s status
Bước 5: Xem MicroK8s Dashboard
Bây giờ bạn đã bật add-on dashboard, bạn có thể dễ dàng truy cập MicroK8s dashboard từ trình duyệt web.
Trước hết, bạn cần địa chỉ IP của pod dashboard. Bạn có thể lấy nó bằng lệnh:
microk8s kubectl get all --all-namespaces
Từ đầu ra của lệnh trên, bạn sẽ nhận thấy dịch vụ kubernetes-dashboard đang chạy trên địa chỉ IP 10.152.183.35 và lắng nghe trên cổng TCP 443. Lưu ý địa chỉ IP này có thể khác với địa chỉ được dùng bởi dashboard service của bạn vì nó được tạo ngẫu nhiên.
Trên trình duyệt, đi đến địa chỉ IP liệt kê. Trong trường hợp này, sẽ là https://10.152.183.35:443. Đảm bảo bạn trỏ đến URL chính xác.
Với mục đích bảo mật, Kubernetes dashboard sẽ yêu cầu chi tiết xác thực để đăng nhập. Bạn có thể truy cập token dashboard mặc định bằng lệnh sau. Sau đó copy kubernetes.io/service-account-token được trình bày và dán vào ô nhập token.
token=$(microk8s kubectl -n kube-system get secret | grep default-token | cut -d " " -f1)
microk8s kubectl -n kube-system describe secret $token
Dashboard trình bày cho bạn tổng quan workloads, dịch vụ, cấu hình, clusters, v.v. của MicroK8s.
Bước 6: Tạo Dịch Vụ Với MicroK8s
Để thấy MicroK8s hoạt động, hãy tạo triển khai dịch vụ microbot chứa hai pod. Tạo pod dùng lệnh kubectl:
microk8s kubectl create deployment microbot --image=dontrebootme/microbot:v1
Scale pod microbot dùng lệnh dưới.
microk8s kubectl scale deployment microbot --replicas=2
Tạo dịch vụ để expose triển khai microbot.
microk8s kubectl expose deployment microbot --type=NodePort --port=80 --name=microbot-service
Chúng ta đã triển khai hai microbot pod dưới tên service/microbot-service. Bạn có thể xem chi tiết dịch vụ microbot và dịch vụ khác bằng lệnh sau:
microk8s kubectl get all --all-namespaces
Bạn sẽ nhận thấy dịch vụ microbot đang chạy trên NodePort, do đó, bạn có thể truy cập nó qua trình duyệt trên PC. Trong trường hợp này, dịch vụ chạy trên cổng ngẫu nhiên 30353.
Trên trình duyệt, đi đến URL https://localhost:30353, trong đó 30353 là số cổng liệt kê trong đầu ra trên. Đảm bảo bạn dùng đúng số cổng.
Kubernetes vs Docker: Bạn Nên Chọn Cái Nào?
Hướng dẫn này đã xem cách cài đặt Kubernetes dung lượng tối thiểu local trên PC hoặc thiết bị edge của bạn. Kubernetes là một phần của quy trình làm việc của nhiều nhà phát triển và được dùng rộng rãi để triển khai ứng dụng containerized quy mô lớn trong production.
Kubernetes dùng để quản lý hoặc điều phối một nhóm container, ví dụ docker container, dễ dàng. Docker độc lập, mặt khác, chủ yếu dùng để quản lý container đơn lẻ. Việc chọn dùng Docker hay Kubernetes sẽ phụ thuộc vào năng lực của team và quy mô phần mềm triển khai lên production.