[Nhập môn Kubernetes P3] - Sử dụng Rancher 2.0, Cấu trúc môi trường Kubernetes
Serial blog Nhập môn Kubernetes
Nội dung
- Mở đầu
- Rancher là gì
- Sử dụng Rancher, kiến trúc môi trường Kubernetes
- Demo
- Kết luận
- Tài liệu tham khảo.
Mở đầu
Trong phần 2 mình đã giới thiệu qua các môi trường Kubernetes, trong đó đã thực hiện demo một số ví dụ trên môi trường minikube. Như mình đã trình bày, việc chạy môi trường Kubernetes trên một máy có nhiều bất tiện, không thể hiện sức mạnh của Kubernetes, đó chỉ là cách mình chạy test thử, hay những bạn mới mày mò về Kubernetes có thể nhanh chóng xây dựng và deploy container tuỳ ý. Trong thực tế dự án mình đang sử dụng Rancher 2.0 để xây dựng môi trường cho Kubernetes. Bài viết này mình xin phép được memo lại cách sử dụng Rancher - dùng giao diện.
Lần này mình sử dụng máy ảo VPS để demo. Thực ra mình cũng đã thử tạo nhiều máy ảo trên máy local tuy nhiên đời không như là mơ. Mình chỉ xây dựng được một Node duy nhất, các node khác không thể thêm vào được, vậy nên quyết định dùng 4 VPS để demo.
Mình sử dụng VPS do nhà cung cấp dịch vụ cloud conoha (japan). https://www.conoha.jp/
Rancher là gì?
Rancher giúp quản lý Docker bằng UI Web một cách tiện dụng, mọi thao tác đều trên UI. Rancher còn tích hợp Shell trên Docker, App catalog, ...
Rancher là dự án khá mới, bắt đầu phát triển cách đây 2 năm. Với mục tiêu ban đầu là phát triển phần mềm để deploy và manage các container trong mọi công ty, chạy với mọi kiến trúc hạ tầng. Giờ đây Rancher đã trở thành công cụ hỗ trợ rất nhiều container orchestration như: Docker Swarm, Mesos hay Kubernete. Kết nối các Host trên EC2, Linode, Azure ... bằng API. Quản lý kết nối giữa các Container, port, metric monitor, ...
Một số tính năng của Rancher
Về khái niệm Rancher, các bạn tham khảo thêm link bên dưới:
https://viblo.asia/p/container-orchestration-and-rancher-DzVGpLBXGnW#_3-rancher-2
Sử dụng Rancher, kiến trúc môi trường Kubernetes
Bây giờ chúng ta sẽ tiến hành kiến trúc một Kubernetes Cluster bé bé xem sao.
Các bài viết mình đã tham khảo:
- https://rancher.com/docs/rancher/v2.x/en/quick-start-guide/
- https://qiita.com/3364git/items/287fdf3685cebb4a7ce8
Kiến trúc dự kiến sẽ xây dựng
Danh sách server:
- Rancher: 1 server
- Master: 1 server
- Node: 2 server
Chuẩn bị môi trường
Như hình phía trên thì chúng ta cần chuẩn bị:
- 4 máy VPSs
- Mình chọn OS: CentOS 7.4
- Mỗi server đã được cài docker
#Docker install
sudo yum update -y
sudo yum install docker -y
sudo systemctl enable docker
sudo systemctl start docker
Nếu bạn không muốn chạy docker với sudo thì làm theo hướng dẫn sau:
https://docs.oracle.com/cd/E37670_01/E75728/html/section_rdz_hmw_2q.html
$ sudo groupadd docker
$ sudo service docker restart
$ sudo usermod -a -G docker {user_name}
Thoát máy ảo và đăng nhập lại là xong!
Sau khi cài đặt xong thì chúng ta được hình như bên dưới:
Rancher Install
Theo cách cài đặt trên trang chủ của rancher, mình đã thử tuy nhiên tại thời điểm bài viết này Rancher có vesion là 2.0.7. Khi chạy với version mới nhất này mình gặp rất nhiều rắc rồi vì không thể thêm node thứ 2, thứ 3 vào Cluster, rất mất thời gian để chỉnh sửa proxy, firewall vv.
Vậy nên bây mình mình quyết định cố định version 2.0.3 để thực hiện demo này.
sudo docker run -d --name rancher_server --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher:v2.0.3
Login Rancher
Truy cập vào rancher theo đường dẫn: https://{IP server cài Rancher}
Thiết lập Password tuỳ ý:
Sau khi thiết lập password xong, tiếp đến là bước thiết lập URL. Ở bước này thì server cài đặt Rancher cần phải cung cấp public IP, hoặc public domain. Vì khi join các Server vào Cluster cần truy cập đến server này.
Create Cluster
- Click Nút Add Cluster
- Chọn Custom
- Điền Cluster name.
- Click Next
- Chọn checkbox etcd và Control
- Copy command và chạy ở máy cài Master
- Click Done.
Quá trình chạy có thể mất chút thời gian, các bạn đợi cho đến khi trạng thái của Cluster Ok thì mới thêm Node tiếp theo vào nhá.
Click vào menu Cluster trên thanh menu ta có được hình như sau khi hoàn thành.
Đến đây thì Cluster của chúng ta như sau:
Add Node
- Cũng tại mune Cluster, click biểu tượng "3 chấm dọc" góc bên phải phía trên, chọn edit.
- Tại đây chúng ta click chọn checkbox Worker, copy command trong ô chạy ở 2 server dành cho Nodes.
- Nhấn Save
Sau khi chạy hoàn thành (các Server đã join vào Cluster), chúng ta có thể kiếm tra bằng cách truy cập menu Node.
Demo
Vậy là chúng ta đã hoàn thành việc xây dựng một Kubernetes Cluster rất nhanh chóng sử dụng Rancher 2.0.
Bây giờ chúng ta tiến hành demo nhỏ, xem hoặt động nó thế nào
Tại Menu Cluster --> chọn Launch kubectl để mở giao diện command line.
Hoặc nêú bạn muốn chạy kubectl trên máy linux thì có thể tải về tool này.
Cũng tại giao diện Rancher, menu Cluster, click Kubeconfig File.
Làm theo hướng dẫn tại đây để cài tool kubectl lên server chạy rancher contaner.
https://kubernetes.io/docs/tasks/tools/install-kubectl/
#Install kubectl binary via native package management
#CentOS
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
yum install -y kubectl
Sau đó thì cũng tại server chạy Rancher, chúng ta tạo file ~/.kube/config và copy nội dung được hiển thị ở giao diện màn hình Rancher vào.
Demo
#get list nodes
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
133-xxx-xxx-xxx Ready worker 8m v1.10.3
150-xxx-xxx-xxx Ready controlplane,etcd 19m v1.10.3
150-xxx-xxx-xxx Ready worker 8m v1.10.3
Thử chạy một lệnh tạo Pod xem thế nào.
$ kubectl run nginx --image=nginx:latest --replicas=3
deployment.apps/nginx created
#Get list pods
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-6d9cc98df6-2hvhb 1/1 Running 0 13s
nginx-6d9cc98df6-9txks 1/1 Running 0 13s
nginx-6d9cc98df6-brfqg 1/1 Running 0 13s
#Get list deployment
$ kubectl get deployment
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
nginx 3 3 3 3 2m
Ok! vậy là Cluster của chúng ta hoạt động ngon lành rồi. Cụ thể cách sử dụng kubectl command thế nào mình sẽ đi chi tiết ở phần sau nhé.
Tổng kết
Thay vì dùng các công cụ quản lý kubernetes như GKE, EKS vv (Tốn nhiều chi phí cho các nhà cung cấp dịch vụ hàng đầu như Amazon, Google) thì chúng ta có thể sử dụng Rancher - một công cụ mã nguồn mở với những tính năng tuyệt vời giúp ta xây dựng Kubernetes Cluster một cách nhanh chóng. Rancher còn cung cấp nhiều tính năng nữa, các bạn có thể thoải mái khám phá trên UI của nó nhé.
Bài viết tiếp theo mình sẽ trình bày về việc sử dụng Kubernetes trong thực tế, khái niệm, cách sử dụng tool kubectl vv.