Thứ tư, 24/01/2018 | 00:00 GMT+7

Chuỗi hội thảo trên web: Bắt đầu với Kubernetes

Bài viết này bổ sung chuỗi hội thảo trên web về triển khai và quản lý dung lượng công việc được chứa trong cloud . Loạt bài này bao gồm các yếu tố cần thiết của containers , bao gồm quản lý vòng đời của containers , triển khai các ứng dụng đa containers , mở rộng dung lượng công việc và làm việc với Kubernetes. Nó cũng nêu bật các phương pháp hay nhất để chạy các ứng dụng trạng thái.

Hướng dẫn này bao gồm các khái niệm và lệnh trong phiên thứ ba của loạt bài, Bắt đầu với Kubernetes.

Trong hướng dẫn trước của loạt bài này , ta đã khám phá cách quản lý các ứng dụng nhiều containers với Docker Compose. Trong khi Giao diện dòng lệnh Docker (CLI) và Docker Compose có thể triển khai và mở rộng các containers chạy trên một máy duy nhất, Kubernetes được thiết kế để xử lý các ứng dụng đa containers được triển khai trên nhiều máy hoặc server .

Kubernetes là một công cụ điều phối containers open-souce để quản lý các ứng dụng được chứa trong containers . Một cụm Kubernetes có hai thành phần chính: Nút chínhNút công nhân . Một tập hợp các node chính hoạt động như mặt phẳng điều khiển quản lý các node công nhân và các ứng dụng đã triển khai. Các node công nhân là các mã công việc của một cụm Kubernetes chịu trách nhiệm chạy các ứng dụng được chứa trong containers .

Các node chính hiển thị một API thông qua đó các công cụ dòng lệnh và ứng dụng client phong phú gửi một công việc , chứa định nghĩa của một ứng dụng. Mỗi ứng dụng bao gồm một hoặc nhiều vùng chứa , các định nghĩa lưu trữ và các cổng bên trong và bên ngoài mà chúng được tiếp xúc qua đó. Mặt phẳng điều khiển chạy trên các Nút chính lên lịch cho các containers ở một trong các node Công nhân. Khi một ứng dụng được mở rộng quy mô, mặt phẳng điều khiển sẽ chạy các containers bổ sung trên bất kỳ Nút công nhân nào có sẵn.

Để được giới thiệu chi tiết về Kubernetes, hãy tham khảo hướng dẫn Giới thiệu về Kubernetes .

StackPointCloud triển khai cụm Kubernetes theo ba bước bằng giao diện dựa trên web. Nó che giấu sự phức tạp của việc cài đặt và cấu hình Kubernetes thông qua trải nghiệm user được đơn giản hóa. DigitalOcean là một trong những nền tảng cloud được hỗ trợ của StackPoint. Các nhà phát triển không quen với quản trị và cấu hình hệ thống có thể sử dụng StackPoint để cài đặt Kubernetes trên DigitalOcean một cách nhanh chóng. Để biết chi tiết về các tính năng được hỗ trợ và giá cả, hãy tham khảo trang web của họ.

Trong hướng dẫn này, bạn sẽ cài đặt và cấu hình Kubernetes trên DigitalOcean thông qua StackPoint và triển khai ứng dụng được chứa trong cụm của bạn.

Yêu cầu

Để làm theo hướng dẫn này, bạn cần

  • Một máy local có cài đặt lệnh curl mà bạn sẽ sử dụng để download công cụ dòng lệnh nhằm quản lý cụm Kubernetes của bạn . Lệnh curl đã được cài đặt trên macOS và Ubuntu 16.04.
  • Một account DigitalOcean. Trong hướng dẫn này, bạn sẽ sử dụng StackPoint để kết nối với account DigitalOcean của bạn và cung cấp ba server 1GB.

Bước 1 - Cài đặt Kubernetes

Để bắt đầu cài đặt Kubernetes trên DigitalOcean, hãy truy cập Stackpoint.io và nhấp vào nút Đăng nhập.

Trang web StackPoint

Thao tác này sẽ đưa bạn đến một trang nơi bạn có thể chọn nhà cung cấp danh tính và đăng nhập bằng thông tin đăng nhập hiện có. Chọn DigitalOcean từ danh sách và đăng nhập bằng tên user và password DigitalOcean của bạn.

Chọn nhà cung cấp

Trên trang tiếp theo, chọn DigitalOcean từ danh sách các nền tảng cloud có sẵn.

Chọn nhà cung cấp DigitalOcean

Đến đây bạn có thể cấu hình cụm. Nhấp vào nút EDIT để chỉnh sửa cài đặt cho nhà cung cấp DigitalOcean:

Tổng quan về nhà cung cấp DigitalOcean

Thao tác này sẽ đưa bạn đến màn hình Cấu hình nhà cung cấp.

Trang cấu hình nhà cung cấp DigitalOcean

Chọn một khu vực bạn chọn từ danh sách Khu vực thả xuống. Bạn có thể để các cài đặt khác ở giá trị mặc định của chúng. Nhấp vào Gửi khi bạn hoàn tất.

Trên màn hình tiếp theo, hãy nhập tên cụm mà bạn chọn và nhấp vào Gửi .

Nhập tên cụm

Cài đặt cụm bây giờ sẽ bắt đầu và bạn sẽ được đưa đến một trang nơi bạn có thể theo dõi tiến trình của cụm. Quá trình cài đặt sẽ mất khoảng 15 phút.

Trạng thái cụm của bạn

Khi cụm được cấu hình, ta có thể cài đặt một công cụ dòng lệnh để làm việc với nó.

Bước 2 - Cấu hình Kubernetes CLI

Để nói chuyện với cụm Kubernetes đang chạy trong DigitalOcean, ta cần một công cụ dòng lệnh trong máy phát triển của bạn . Ta sẽ sử dụng kubectl , CLI cho Kubernetes.

Chạy các lệnh sau để cài đặt kubectl từ server của Google:

  • curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/darwin/amd64/kubectl

Bạn sẽ thấy kết quả này:

Output
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 63.7M 100 63.7M 0 0 5441k 0 0:00:12 0:00:12 --:--:-- 4644k

Bản binary kubectl đã được download folder hiện tại của bạn, Hãy thay đổi quyền của bản binary đã download và di chuyển nó vào folder /usr/local/bin để ta có thể chạy nó từ mọi nơi:

  • chmod +x ./kubectl
  • sudo mv ./kubectl /usr/local/bin/kubectl

Bây giờ hãy trỏ ứng dụng kubectl vào cụm Kubernetes của ta . Để làm được điều đó, ta cần download file cấu hình từ Stackpoint. Quay lại trang trạng thái cụm trong trình duyệt của bạn. Sau khi xác minh cụm đã sẵn sàng và ổn định, hãy nhấp vào tên cụm như trong hình sau:

Tên cụm

Nhấp vào liên kết kubeconfig ở menu bên trái để tải file cấu hình xuống máy local của bạn:

img

Quay lại terminal của bạn, đặt biến môi trường KUBECONFIG thành đường dẫn của file đã download . Giả sử file của bạn được tải Downloads folder Downloads trong folder chính của bạn, bạn sẽ đưa ra lệnh này:

  • export KUBECONFIG=~/Downloads/kubeconfig

Với kubectl cấu hình , hãy đảm bảo ta có thể giao tiếp với cụm của bạn .

Bước 3 - Xác minh cài đặt Kubernetes

Bây giờ ta đã cấu hình đầy đủ cụm cùng với client , hãy chạy một vài lệnh để xác minh môi trường.

Chạy lệnh sau để nhận thông tin về cụm.

  • kubectl cluster-info

Bạn sẽ thấy kết quả này:

Output
Kubernetes master is running at https://139.59.17.180:6443 Heapster is running at https://139.59.17.180:6443/api/v1/namespaces/kube-system/services/heapster/proxy KubeDNS is running at https://139.59.17.180:6443/api/v1/namespaces/kube-system/services/kube-dns/proxy To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

Đầu ra xác nhận cụm đang hoạt động và các Nút chính Kubernetes đang hoạt động.

Tiếp theo, hãy xác minh tình trạng của tất cả các thành phần đang chạy trong Master Nodes. Nếu cụm vừa được cấu hình, có thể mất một lúc trước khi tất cả các thành phần hiển thị trạng thái khỏe mạnh. Các thành phần này là một phần của Kubernetes Master Nodes hoạt động như mặt phẳng điều khiển.

Thực hiện lệnh này:

  • kubectl get cs

Bạn sẽ thấy kết quả này:

Output
NAME STATUS MESSAGE ERROR scheduler Healthy ok controller-manager Healthy ok etcd-0 Healthy {"health": "true"}

Cuối cùng, hãy liệt kê tất cả các node của cụm Kubernetes đang chạy.

  • kubectl get nodes

Bạn sẽ thấy kết quả như thế này:

Output
NAME STATUS ROLES AGE VERSION spc52y2mk3-master-1 Ready master 29m v1.8.5 spc52y2mk3-worker-1 Ready <none> 22m v1.8.5 spc52y2mk3-worker-2 Ready <none> 22m v1.8.5

Điều này xác nhận cụm với một Master Node và hai Worker Node đã sẵn sàng để ta triển khai các ứng dụng. Vì vậy, hãy triển khai một ứng dụng cho cụm.

Bước 4 - Triển khai và Truy cập Ứng dụng

Hãy chạy một web server Nginx đơn giản và truy cập trang web mặc định của nó từ máy local của ta . Thực thi lệnh này để kéo hình ảnh Nginx từ Docker Hub và tạo một triển khai có tên myweb :

  • kubectl run --image=nginx:latest myweb

Lệnh này tương tự như lệnh docker run docker, ngoại trừ việc nó đóng gói và triển khai containers trong một tạo tác cụ thể của Kubernetes được gọi là Pod . Bạn sẽ tìm hiểu thêm về Pods trong phần tiếp theo của loạt bài này.

Khi thực hiện lệnh, bạn sẽ thấy kết quả này:

Output
deployment "myweb" created

Bây giờ hãy kiểm tra xem Pod đã được tạo bằng containers nginx :

  • kubectl get pods

Bạn sẽ thấy kết quả này:

Output
NAME READY STATUS RESTARTS AGE myweb-59d7488cb9-jvnwn 1/1 Running 0 3m

Để truy cập web server đang chạy bên trong Pod, ta cần đưa nó lên Internet công cộng. Ta đạt được điều đó bằng lệnh sau:

  • kubectl expose pod myweb-59d7488cb9-jvnwn --port=80 --target-port=80 --type=NodePort
Output
service "myweb-59d7488cb9-jvnwn" exposed

Pod hiện được hiển thị trên mọi Node của cụm trên một cổng tùy ý. Các lựa chọn --target-port --port--target-port chỉ ra các cổng mà web server sẽ khả dụng. Lựa chọn --NodePort đảm bảo ta có thể sử dụng bất kỳ Node nào trên cụm để truy cập ứng dụng.

Để lấy NodePort của triển khai myweb , hãy chạy lệnh sau.

  • kubectl get svc myweb-59d7488cb9-jvnwn
Output
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE myweb-59d7488cb9-jvnwn NodePort 10.3.0.119 <none> 80:31930/TCP 6m

Trong trường hợp này, NodePort là cổng 31930 . Mọi Worker Node sử dụng cổng này để phản hồi các yêu cầu HTTP. Hãy kiểm tra nó ra.

Sử dụng Control panel DigitalOcean để lấy địa chỉ IP của một trong các node Công nhân.

 Server  bắn

Sử dụng lệnh curl để thực hiện một yêu cầu HTTP đến một trong các node trên cổng 31930 .

  • curl http://your_worker_1_ip_address:31930/

Bạn sẽ thấy phản hồi có chứa trang chủ mặc định của Nginx:

Output
<!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> ... Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html>

Bạn đã triển khai thành công một ứng dụng được chứa trong cụm Kubernetes của bạn .

Kết luận

Kubernetes là một nền tảng quản lý containers phổ biến. StackPoint giúp dễ dàng cài đặt Kubernetes trên DigitalOcean.

Trong phần tiếp theo của loạt bài này, ta sẽ tìm hiểu chi tiết hơn về các khối xây dựng của Kubernetes.


Tags:

Các tin liên quan