Kubernetes là một nền tảng mã nguồn mở cho việc triển khai, quản lý và tự động hóa các ứng dụng container. Trong bài viết này, chúng ta sẽ hướng dẫn cài đặt Kubernetes trên hệ điều hành Ubuntu.
Yêu cầu tiên quyết
- Một máy tính hoạt động trên hệ điều hành Ubuntu.
- Có quyền truy cập root hoặc tài khoản người dùng có quyền sudo.
Bước 1: Cài đặt Docker
Kubernetes sử dụng Docker để quản lý các container. Bạn cần cài đặt Docker trước khi cài Kubernetes.
sudo apt update sudo apt install -y docker.io sudo systemctl start docker sudo systemctl enable docker
Bước 2: Cài đặt kubeadm, kubelet và kubectl
kubeadm
, kubelet
và kubectl
là các thành phần cơ bản của Kubernetes. Hãy cài đặt chúng bằng các lệnh sau:
sudo apt update sudo apt install -y kubeadm kubelet kubectl
Bước 3: Tắt Swap
Kubernetes yêu cầu tắt tính năng swap trên hệ thống. Bạn có thể tạm thời tắt swap bằng lệnh:
sudo swapoff -a
Và để tắt swap mỗi khi khởi động, hãy sửa file /etc/fstab
và bỏ comment (dấu #) tại dòng chứa thông tin về swap.
Bước 4: Khởi tạo Master Node
Sử dụng lệnh kubeadm
để khởi tạo Kubernetes master node:
sudo kubeadm init
Sau khi quá trình khởi tạo hoàn tất, lưu lại thông tin đã được hiển thị, bao gồm lệnh để tham gia các node khác vào cluster.
Bước 5: Cài đặt cấu hình cho người dùng
Để sử dụng kubectl
trên máy tính của bạn, bạn cần cấu hình quyền truy cập cho người dùng. Thực hiện các lệnh sau:
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
Bước 6: Cài đặt mạng mở rộng (Network Plugin)
Để các container trong các Pod có thể giao tiếp với nhau, bạn cần cài đặt một plugin mạng. Một số plugin phổ biến là Calico, Flannel hoặc Weave. Dưới đây là ví dụ cài đặt plugin Calico:
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
Bước 7: Tham gia các Node khác vào Cluster
Nếu bạn muốn thêm các node khác vào cluster, bạn có thể sử dụng lệnh kubeadm join
được hiển thị sau khi khởi tạo master node.
Chuẩn bị Node Worker
Trước hết, bạn cần chuẩn bị các máy chủ Worker mà bạn muốn thêm vào cluster. Đảm bảo rằng các máy chủ này có cùng phiên bản Ubuntu và đã được cài đặt Docker và các gói cần thiết như trong bước cài đặt Kubernetes trên Master.
Thêm Node Worker vào Cluster
- Trên máy chủ Master, sau khi bạn đã hoàn tất quá trình cài đặt và khởi tạo Kubernetes, bạn sẽ thấy một lệnh
kubeadm join
tương tự như sau:
kubeadm join <Master_IP>:<Master_Port> --token <token> --discovery-token-ca-cert-hash <hash>
Sao chép lệnh này để sử dụng cho việc thêm Node Worker.
Trên máy chủ Worker, sử dụng lệnh sudo
và dán lệnh kubeadm join
mà bạn đã sao chép từ bước trước. Lệnh sẽ có dạng như sau:
sudo kubeadm join <Master_IP>:<Master_Port> --token <token> --discovery-token-ca-cert-hash <hash>
Sau khi chạy lệnh này, Node Worker sẽ tham gia vào cluster và trở thành một phần của nền tảng Kubernetes.
Kiểm tra trạng thái của Node Worker
- Trở lại máy chủ Master, sử dụng lệnh sau để xem danh sách các node trong cluster:
kubectl get nodes
Bạn sẽ thấy cả Master Node và Worker Node trong danh sách.
Bạn cũng có thể sử dụng lệnh sau để xem thông tin chi tiết về một Node cụ thể:
kubectl describe node <node_name>
Thay <node_name>
bằng tên của Node Worker bạn muốn kiểm tra.
Kiểm tra trạng thái của Kubernetes Cluster
Kiểm tra trạng thái của các Pod:
Sử dụng lệnh kubectl
để kiểm tra trạng thái của các Pod trong cluster:
kubectl get pods --all-namespaces
Bạn sẽ thấy danh sách các Pod trong tất cả các namespace cùng với trạng thái của chúng.
Kiểm tra trạng thái của Node:Sử dụng lệnh sau để kiểm tra trạng thái của các Node trong cluster:
kubectl get nodes
Bạn sẽ thấy danh sách các Node trong cluster và trạng thái của chúng.
Kiểm tra các dịch vụ đã triển khai:Sử dụng lệnh sau để kiểm tra các dịch vụ (Services) đã triển khai trong cluster:
kubectl get services --all-namespaces
Bạn sẽ thấy danh sách các dịch vụ và cổng truy cập của chúng.
Triển khai ứng dụng đơn giản
Triển khai một ứng dụng nginx xác minh rằng Kubernetes hoạt động chính xác:
kubectl create deployment nginx --image=nginx
Kiểm tra trạng thái của ứng dụng:
Sử dụng lệnh sau để kiểm tra trạng thái của ứng dụng đã triển khai:
kubectl get deployments
Bạn sẽ thấy trạng thái của ứng dụng và số lượng Pod đang chạy.
kubectl expose deployment nginx --type=NodePort --port=80
Sau đó, sử dụng lệnh sau để tìm cổng NodePort mà ứng dụng được truy cập:
kubectl get svc nginx
Bạn sẽ thấy cổng NodePort và IP của các Node trong cluster. Truy cập ứng dụng bằng URL http://<Node_IP>:<NodePort>
trong trình duyệt.
Kết luận
Sau khi hoàn thành các bước trên, bạn đã cài đặt thành công Kubernetes và add Node Worker vào Kubernetes cluster trên hệ điều hành Ubuntu. Bây giờ bạn có thể bắt đầu triển khai và quản lý các ứng dụng container trên nền tảng Kubernetes của mình.