Header Ads Widget

Ticker

6/recent/ticker-posts

Phần 1: Hướng dẫn cài và quản lý Kubernetes Cluster với Rancher version 2.3.8 trên Ubuntu

Keywords: How to install and management Kubernetes Cluster with Rancher on Ubuntu
Với bài viết đầu tiên về Kubernetes thì mình sẻ hướng dẫn xây dựng Kubernetes Cluster với một mô hình đơn giản nhất nên vì vậy mình sẻ sử dụng Rancher ở bài viết này, sau đó các phần sau mình sẻ bắt đầu thực hiện với mô hình phức tạp hơn 1 chút, nhưng các bạn đừng lo lắng, vì docs của mình viết ra dành cho những bạn chưa biết gì hoàn toàn về nó, nên sẻ rất dể hiểu, mới đầu chúng ta bắt đầu đi vào khái niệm đơn giản từng chút 1, với mình thì những ai theo dõi bài viết lâu rồi thì chắc chắn sẻ hiểu rõ mình không đi sâu vào lý thuyết mà chỉ nói những cái đơn giản dễ hiểu nhất mà mình hiểu được đúng hơn là mình không giỏi việc giải thích cho ai đó hiểu lắm, nên thành ra có sai sót gì trong từ ngữ và lời nói thì mong các bạn bỏ qua và góp ý bên dưới giúp mình nhé.
Như hình trên chúng ta sẻ bắt đầu tìm hiểu Rancher là gì trước nhé, nói ngắn gọn dễ hiểu Rancher là nơi để quản lý Docker các container bằng giao diện UI Web nhưng sau này nó bắt đầu mở rộng ra thêm và kết hợp nhiều thứ trong đó có cả Docker Swarm, Mesos và Kubernetes của chúng ta hiện tại, nó giúp chúng ta quản lý kết nối giữa các container và port, monitor,... nói chung thằng này tiện dụng vãi nồi haha, đó là xong phần giải thích sơ qua về rancher, vậy Kubernetes là gì ? và Kubernetes Cluster là như thế nào ? Node Master, Node Worker và Pods nữa, ok bắt đầu rối rồi đúng không nhưng xin lỗi các bạn vì những cái này mình sẻ không giải thích vì nó quá dài và phức tạp, minh xin phép yêu cầu các bạn đọc bác google để hiểu về mấy cái lý thuyết này nha, mình sẻ chỉ tóm gọn 1 số vấn đề như sau Kubernetes (hay còn được gọi tắt là K8S) chính là nơi quản lý các Docker Container theo thứ tự sẻ như sau: Container < Pods < Nodes < Cluster
Nghĩa là thằng Kubernetes nó sẻ quản lý các Container bằng cách chia nhỏ chúng ra thành từng phần riêng biệt khác nhau cho dễ quản lý bằng việc thằng Pods sẻ quản lý các container và thằng Nodes lại quản lý các thằng Pods sau đó tiếp đến thằng Cluster lại đi quản lý các thằng Nodes và trong các thằng Nodes đó lại có một thằng Node gọi là Master, còn lại thì gọi là Node Worker (Làm việc gì cũng phải có Leader và Manager chứ) ta sẻ thực thi mọi thứ trên thằng Node Master này và nó sẻ phân chia công việc cho các thằng Node Worker còn lại, cuối cùng công việc của  nó là dùng để quản lý các container 1 cách dễ dàng hơn, cứ tưởng tượng bạn mà có nhiều container đảm bảo khi các bạn nhìn vào sẻ như 1 cái bùi nhùi không hơn không kém, nhưng có Kubernetes mọi thứ lại đâu vào đó với các dự án quy mô lớn, cái thứ 2 mà mình thích nữa là, nếu xảy ra gì đó với 1 con đang chạy thì nó sẻ tự động restore mọi thứ lại, nghĩa là server của chúng ta sẻ không có khái niệm bị chết 1 con, đồng nghĩa với việc nó cũng giải quyết luôn tình trạng Loadbalancer một các hiệu quả, nó còn giúp phân phối CPU một cách hợp lý nữa, nói chung công dụng của nó thì nhiều vô đối, nói 1 hồi nhìn lên mình thấy cả 1 dàn chữ, chắc ai đọc vào cũng nhức đầu luôn quá, thôi thì dẹp nó qua 1 bên vậy, nói như thế đủ rồi chúng ta bắt đầu thực hiện cài đặt Kubernetes bằng Rancher nào, mô hình của chúng ta sẻ như thế này

Chúng ta cần phải chuẩn bị 4 con Server cho mô hình này:

  • Server 1: Docker + Rancher Server (Ram 1GB + Disk cho Lab này là 20GB)
  • Server 2: Docker và làm Node Master (Ram 3GB trở lên, CPU 4 và Disk cho lab này cũng là 20GB với mình thì thấy 20GB là quá đủ rồi vì làm lab thôi mà)
  • Server 3: Docker và làm Node Worker (Ram 1GB + CPU 1 + Disk 20GB)
  • Server 4: Docker và làm Node Worker (Ram 1GB + CPU 1 + Disk 20GB)
Trong đây nhìn sơ qua thì do con Master nó cần 1 lượng tài nguyên mạnh nên sẻ sử dụng cấu hình hơi cao so với các con còn lại.
Bước 1: Cài đặt docker trên tất cả các server
sudo apt-get update
sudo apt-get install docker.io
docker --version
Bước 2: Thực hiện khởi động và bật docker lên vì khi cài nó sẻ không bật lên đâu, làm y vậy cho tất cả các máy còn lại
sudo systemctl enable docker
sudo systemctl status docker
sudo systemctl start docker
Ok sau khi cài đặt xong thì bây giờ 4 máy của chúng ta hiện tại đang chạy Docker cả, nó có thể miêu tả như hình ở phía dưới nhé
Bước 3: Thực hiện cài đặt Rancher version 2.3.8 tại sao mình lại sử dụng bản này đơn giản là các phiên bản của Rancher nó có hên xui lắm, cái sử dụng ngon lành cái thì Authen SSL lỗi tè le, còn có cái chỉ đứng hình ở giao diện login mà không truy cập được, có khi lại không cho phép đăng ký, sau một hồi lựa chọn thì do mình đang sử dụng Docker 19.03.8 nên mình sẻ chọn Rancher version 2.3.8
Cho bạn xem bản trên để biết cách lựa chọn Rancher version nào để sử dụng, như bạn thấy là mình đang chạy trên Ubuntu và nó có thể hổ trợ Docker 19.03.x nên vì vậy nó đã hợp lý với vấn đề của mình hiện tại và mình đã lựa chọn nó
docker run -d --name rancher_server --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher:v2.3.8
Mình sẻ chạy câu lệnh trên ở máy Rancher, còn các máy Node Master, Node Worker 1 và 2 thì vẫn giữ nguyên và chỉ cài mõi docker, chưa đụng chạm gì tới bọn nó cả
Ok như hình trên là ok rồi nhé, chắc cú thì cứ kiểm tra lại lần nữa bằng lệnh sau
docker ps -a
Phần Status đang chạy ổn định và không xảy ra vấn đề gì hết rồi nhé
Tiếp đến ta thực hiện lên trình duyệt và truy cập vào địa chỉ IP của con Rancher Server để thực hiện cài đặt Password cho admin
Thực hiện bấm Continue để chuyển đến trang xác nhận là nên sử dụng IP để Public hay là Domain, mình đã chọn IP vì hiện tại mình chưa set DNS cho con server Rancher
Chọn tiếp Save URL và Got It nó là xong
Ok tại con server này ta thực hiện tạo 1 Kubernetes Cluster và lựa chọn cài đặt cho một Node Master trước, thực hiện bấm vào Add Cluster bên gốc phải nhé
Sau đó lựa chọn tiếp phần Custom tùy theo phiên bản mà nó sẻ có mục Custom khác nhau, các bạn chú ý là được
Mình đã thực hiện đặt tên cho Cluster Custom của mình là k8s-cluster (Còn các bạn muốn đặt gì cũng được nè) sau đó kéo xuống dưới và chọn Next và không cần thêm gì cả
Tiếp đến tại đây các bạn chọn thêm mục etcd và Control Plane nếu các bạn thực hiện cài đặt cho Node Master đầu tiên
Copy dòng Code phía dưới (sau khi đã click chọn vô checkbox etcd và control plane) vào Node Master của các bạn và thực hiện chạy nó, đến bây giờ chúng ta mới bắt đầu chỉ đụng vào mõi Node Master thôi đấy

Sau khi cài đặt xong nó sẻ thông báo trên server web rancher là có 1 máy node đã đăng ký, giờ thì bạn có thể Done nó rồi đấy, khi bạn chạy lệnh sau, mới lúc đầu trên con master của các bạn chỉ có 3 container thôi như hình phía dưới, việc của Rancher là nó sẻ tự động cấu hình mọi thứ cho 1 Node Master hoàn chỉnh
Nó sẻ thông báo đỏ trên web rancher như thế đừng lo lắng tại nó đang thực hiện cấu hình cho con node master đấy việc này xảy ra hơi lâu 1 chút, các bạn chịu khó chờ đợi xíu nhé
Ok nó đang thực hiện tiếp tục 1 số vấn đề rồi đấy, việc của bạn chỉ là ngồi chờ cho mọi thứ hoàn thành thôi, thực hiện mở lại câu lệnh trên để xem thì bây giờ nó đã không còn 3 container nữa mà là rất nhiều container khác, vì nó đang pull các container về để xây dựng 1 node master mà
Ok sau 1 thời gian chờ đợi mõi mòn thì nó đã thành công và sẻ hiển thị như hình phía dưới
Bây giờ tiếp đến bạn truy cập vào dấu 3 chấm ở k8s-cluster nảy mình đã tạo chọn Edit và kéo xuống dưới nhưng bây giờ chỉ chọn mõi worker thôi không chọn etcd và control plane vì mình sẻ cài cho 2 máy node còn lại
Nên nhớ thực hiện từng node từng node thôi nha, không được làm cùng lúc 2 node nó sẻ bị ngu đấy, mình sẻ làm node1 trước và sau đó chờ cho nó đăng ký thành công là ok
Chờ cho nó đăng ký thành công như node master rồi làm tiếp luôn thằng node2
Quá trình đăng ký diễn ra khá lâu nên các bạn thông cảm
Bây giờ mình sẻ làm tiếp cho node2 y vậy luôn
Ok lại tiếp tục chờ đợi là hạnh phúc, sau khi cài đặt xong node2 các bạn thực hiện console kubectl trên giao diện của Rancher luôn chứ không thực hiện tại node master như khi không có giao diện, nếu các bạn muốn sử dụng console trên node master cũng được chỉ việc cài thêm kubectl vào node master là xong nhưng mình sẻ hướng dẫn các bạn cài nó vào phần 2 nhé, còn bây giờ cứ thực hiện đúng phần 1 là làm việc với rancher thôi

Tại phần ngoài của Rancher ngay mục k8s-cluster mà mình đã tạo có một button Cluster các bạn click vào đó sau đó sẻ hiện ra như hình dưới, thực hiện click chọn Launch Kubectl lên và thực hiện console trên đó
Chạy lệnh sau để xem node
kubectl get nodes

Như các bạn thấy rancher giúp bạn quản lý Kubenetes dễ hơn rất nhiều bằng giao diện rồi đấy, còn nếu muốn build một app bằng file yaml thì chắc các bạn cần phải cài đặt thêm kubectl trên node master rồi, nên vì vậy mình sẻ hướng dẫn build 1 app nginx cơ bản bằng rancher thôi nhé
Bạn thực hiện chạy 3 lệnh sau:
kubectl create deployment k8s-nginx --image=nginx
kubectl scale deployment k8s-nginx --replicas=2
kubectl expose deploy k8s-nginx --port 80 --target-port 80 --type NodePort
Giải thích từng câu lệnh: Bước đầu tiên mình tạo 1 deploy với tên k8s-nginx để build nginx docker, sau đó mình lại thực hiện replicas cho services đó để khi chết 1 con thì vẫn có thể hồi sinh trở lại, không tin thì các bạn cứ thử delete 1 pods thử xem sao, lúc đó nó lại tự động create lại cho xem, còn câu lệnh thứ 3 là mình Nat nó ra ngoài vì khi thực hiện Build như vậy, bạn chỉ có thể truy cập trang web nginx tại các máy Node mà thôi, chứ các máy khác máy Node không thể truy cập được nginx, type mình chọn là NodePort nghĩa là 1 Port ngẫu nhiên nào đó
Port mà mình có thể truy cập như hình trên là 32693 các bạn có thể sử dụng câu lệnh "get services" đó để kiểm tra các Port mà muốn truy cập từ máy khác ở ngoài
Ok như các bạn đã thấy đấy, mình dùng máy Windows bên ngoài của mình truy cập vào 3 địa chỉ IP của máy Node bằng Port Public ra ngoài giờ đã connect hoàn toàn với Nginx rồi đấy, chính vì điều này nó giúp Loadbalancer 1 cách hiệu quả là vậy, coi như mình đã tóm gọn xong phần cài đặt Kubernetes với Rancher ngon lành rồi, chờ tiếp phần 2 đầy thú vị hơn nha.

Post a Comment

0 Comments