1. Lời mở đầu
Xin chào mọi người 👋👋👋
Tiếp tục chuỗi bài Mayfest2023 thì mình sẽ chia sẻ với mọi người một phiên bản của Kubernetes mang tên K3s. Trong quá trình cài đặt để sử dụng thì mình gặp một chút vấn đề nên tiện bài viết này thì mình cũng chia sẻ với mọi người cách xử lý luôn. Không dài dòng nữa, cùng bắt đầu thôi =))))
2. K3s là gì?
K3s là một nền tảng Kubernetes nhẹ được tối ưu hóa cho các trường hợp sử dụng có tài nguyên hạn chế như IoT, CI, hệ thống nhúng (embedded systems) hoặc các môi trường điện toán đám mây nhỏ. K3s là một sản phẩm của công ty Rancher Labs, được giới thiệu vào năm 2019.
Tính năng chính của K3s bao gồm:
-
Nhẹ và dễ triển khai: K3s có kích thước dưới 100MB và cài đặt đơn giản hơn so với Kubernetes. Nó có thể được triển khai trên các hệ thống có tài nguyên hạn chế, chẳng hạn như Raspberry Pi hoặc VM.
-
Cấu hình đơn giản: K3s sử dụng một tệp cấu hình YAML đơn giản để cấu hình các thành phần Kubernetes. Người dùng có thể sử dụng các tệp cấu hình YAML tương tự như trong Kubernetes để triển khai ứng dụng của họ trên K3s.
-
Hiệu suất cao: K3s được tối ưu hóa để đạt được hiệu suất cao trên các nền tảng có tài nguyên hạn chế. Nó sử dụng các công nghệ như SQLite và Traefik để giảm độ phức tạp và tăng tốc độ xử lý.
-
Bảo mật: K3s được thiết kế với bảo mật cao. Nó sử dụng TLS để bảo vệ các kết nối giữa các thành phần và hỗ trợ các tính năng bảo mật khác như mã hóa dữ liệu và xác thực người dùng.
-
Hỗ trợ cộng đồng: K3s được phát triển và hỗ trợ bởi một cộng đồng lớn, với nhiều người dùng và nhà phát triển đang đóng góp vào dự án.
Thực sự K3s đáp ứng đủ tiêu chí ngon-bổ-rẻ cho việc triển khai và quản lý các ứng dụng chạy Kubernetes trên các môi trường có tài nguyên hạn chế.
Vậy để cài đặt K3s thì bạn cần làm gì nhỉ? Truy cập vào trang chủ của K3s thì bạn sẽ thấy chỉ cần chạy câu lệnh phía dưới:
curl -sfL https://get.k3s.io | sh -
Tuy nhiên sau khi chạy xong bạn lại gặp lỗi như này 😅
➜ ~ curl -sfL https://get.k3s.io | sh -
[ERROR] Can not find systemd or openrc to use as a process supervisor for k3s
Lỗi Can not find systemd or openrc to use as a process supervisor for k3s xuất hiện khi cài đặt K3s trên MacOS là do hệ thống không có trình quản lý tiến trình nào được hỗ trợ bởi K3s. Trên các hệ thống Linux phổ biến, K3s sử dụng systemd
hoặc OpenRC
để quản lý tiến trình, tuy nhiên, trên MacOS, K3s không hỗ trợ các trình quản lý tiến trình này.
Bạn vẫn muốn cài K3s trên MacOS, okay, mình sẽ giúp bạn 😉
3. Cài đặt K3s trên MacOS
Bạn có thể tham khảo các các cách sau để cài đặt K3s trên MacOs:
3.1. Sử dụng K3d
Trước hết, K3d (K3s in Docker) là một tiện ích được thiết kế để dễ dàng chạy k3s trong Docker. K3d sử dụng Docker để tạo ra các node K3s, và có thể được sử dụng để tạo ra các cluster K3s cho mục đích phát triển hoặc kiểm thử. Cụ thể hơn về K3d thì chắc mình sẽ dành riêng một bài viết cho nó nhé 😗
Đầu tiên, bạn cần cài đặt K3d, có khá nhiều cách, ở đây mình dùng luôn homebrew để cài:
brew install k3d
Kiểm tra version xem đã cài thành công chưa nào, như bạn đã thấy thì mặc định K3d đã cài luôn K3s cho mình rồi :v
➜ ~ k3d version
k3d version v5.4.7
k3s version v1.25.6-k3s1 (default)
Với nhu cầu sử dụng K3s thôi thì bạn chỉ cần dùng K3d để tạo một cụm single node K3s đơn giản, không cần thêm tuỳ chọn gì cả:
➜ ~ k3d cluster create k3s-demo
INFO[0000] Prep: Network
INFO[0000] Created network 'k3d-k3s-demo'
INFO[0000] Created image volume k3d-k3s-demo-images
INFO[0000] Starting new tools node...
INFO[0000] Starting Node 'k3d-k3s-demo-tools'
INFO[0009] Creating node 'k3d-k3s-demo-server-0'
INFO[0011] Pulling image 'docker.io/rancher/k3s:v1.25.6-k3s1'
INFO[0368] Creating LoadBalancer 'k3d-k3s-demo-serverlb'
INFO[0370] Pulling image 'ghcr.io/k3d-io/k3d-proxy:5.4.7'
INFO[0556] Using the k3d-tools node to gather environment information
INFO[0556] Starting new tools node...
INFO[0556] Starting Node 'k3d-k3s-demo-tools'
INFO[0557] Starting cluster 'k3s-demo'
INFO[0557] Starting servers...
INFO[0557] Starting Node 'k3d-k3s-demo-server-0'
INFO[0561] All agents already running.
INFO[0561] Starting helpers...
INFO[0561] Starting Node 'k3d-k3s-demo-serverlb'
INFO[0567] Injecting records for hostAliases (incl. host.k3d.internal) and for 3 network members into CoreDNS configmap...
INFO[0569] Cluster 'k3s-demo' created successfully!
INFO[0569] You can now use it like this:
kubectl cluster-info
Lệnh trên đã tạo ra một cụm K3s mới với tên là k3s-demo
. Bạn có thể đặt tên khác bằng cách thay k3s-demo
bằng tên bạn mong muốn.
Để kết nối kubectl đến cụm K3s vừa tạo, bạn có thể sử dụng lệnh sau:
➜ ~ export KUBECONFIG="$(k3d kubeconfig write k3s-demo)"
Lệnh trên sẽ tạo một tệp cấu hình kubectl mới và lưu trữ nó trong biến môi trường KUBECONFIG
.
Sau khi tạo cụm K3s, bạn có thể kiểm tra nó bằng cách sử dụng kubectl. Ví dụ, bạn có thể kiểm tra danh sách các nodes trong cụm bằng lệnh:
➜ ~ kubectl get nodes
NAME STATUS ROLES AGE VERSION
k3d-k3s-demo-server-0 Ready control-plane,master 81s v1.25.6+k3s1
Vậy là bạn đã cài đặt thành công K3s bằng K3d trên macOS và có thể sử dụng để triển khai ứng dụng trên Kubernetes.
3.2 Sử dụng Multipass
Multipass là một công cụ tạo máy ảo trên các nền tảng hỗ trợ, bao gồm MacOS. Bạn có thể tải và cài đặt Multipass từ đây hoặc sử dụng trình quản lý package như Homebrew để cài đặt:
brew install multipass
Sau khi đã cài xong multipass, bạn cần tạo một VM với multipass, chạy lệnh sau để tạo một VM với tên k3s-demo
:
multipass launch --name k3s-demo --cpus 2 --memory 2048M --disk 10G
Các thông số cho VM ở trên thì bạn có thể tùy chỉnh theo ý muốn nhé , tiếp theo bạn sử dụng multipass để ssh vào VM k3s-demo
vừa được tạo, và sử dụng curl để tải xuống script cài đặt K3s và chạy script đó:
multipass shell k3s-demo
curl -sfL https://get.k3s.io | sh -
Khi quá trình cài đặt đã hoàn tất, bạn chỉ cần exec vào VM để kiểm tra trạng thái của K3s:
multipass exec k3s-demo sudo k3s kubectl get nodes
Vậy là bạn có thể sử dụng K3s trên MacOS bằng cách sử dụng Multipass để tạo một VM và cài đặt K3s trên đó 😗
4. Tổng kết
Vậy là qua bài viết vừa rồi, mình đã cùng mọi người xử lý vấn đề khi cài đặt K3s trên nền tảng MacOS, cá nhân mình sẽ lựa chọn cách 1 là sử dụng K3d vì nó triển khai nhanh chóng và tiện lợi cho việc xây dựng, quản lý các cụm K8s. Nếu bạn còn có cách nào hay hơn thì hãy chia sẻ phía dưới phần bình luận để mọi người cùng tham khảo nhé
Cảm ơn mọi người đã dành thời gian theo dõi bài viết này!