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
uc?id=1Xnusvz-0Knmu0muFFuwJugE1jZvn5fvb&export=download
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:

  1. https://rancher.com/docs/rancher/v2.x/en/quick-start-guide/
  2. https://qiita.com/3364git/items/287fdf3685cebb4a7ce8

Kiến trúc dự kiến sẽ xây dựng

uc?id=16_xlkjDChHOz_LEFb1vInz6RhXRIo82P&export=download

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:
uc?id=1fPdiL7cTY05fSuLOm0F3eodeH7yS-j7U&export=download

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

uc?id=1n1HBMeds7onctdy2UmInnZBA2SFBmAOZ&export=download

Login Rancher

Truy cập vào rancher theo đường dẫn: https://{IP server cài Rancher}
Thiết lập Password tuỳ ý:
uc?id=1Y9vFCbvWNsYCjb48j_J7fnoYKGReYcOl&export=download

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

  1. Click Nút Add Cluster
  2. Chọn Custom
  3. Điền Cluster name.
  4. Click Next

uc?id=15bKoH-wjBQUDWA5tjQYaISXrBiOGNt3t&export=download

  1. Chọn checkbox etcd và Control
  2. Copy command và chạy ở máy cài Master
  3. 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.
uc?id=1B-H-QRFhvM8WmOy-sObu001kPcWHCmZy&export=download

Đến đây thì Cluster của chúng ta như sau:
uc?id=1eeI0Zvd_d1VkDBzcnWEG0AoZoM4BJqlK&export=download

Add Node

  1. 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.
  2. Tại đây chúng ta click chọn checkbox Worker, copy command trong ô chạy ở 2 server dành cho Nodes.
  3. 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.
uc?id=1UpVE0pqS6Xj3Xo-309_MYKlJXnvnosdU&export=download

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.