Professional Documents
Culture Documents
Final Report
Final Report
TP HỒ CHÍ MINH
Tháng 4 năm 2023
LỜI CẢM ƠN
Lời đầu tiên trước khi đi vào nội dung bài báo cáo, em xin cảm ơn thầy Lê Trung
Quân trong suốt quá trình học tâp đã hướng dẫn để em hoàn thành tốt môn học của
mình. Xin được chúc thầy thật nhiều sức khỏe để có thể truyền đạt những kiến
thức của mình đến những học viên sau.
LỜI MỞ ĐẦU
Khi các thiết bị ngày càng thông minh hơn, nhỏ hơn và kết nối không dây trở nên
nhanh hơn, thì điện toán biên có thể ngày càng trở nên quan trọng hơn. Đây là công nghệ
tiềm năng trong thời đại IoT bùng nổ, đem tới sức mạnh tính toán nhanh hơn, tiết kiệm
băng thông và giảm độ trễ. Từ đó, em đã chọn đề tài này để nghiên cứu. Do thời gian,
kiến thức, kinh nghiệm thực tế còn quá hạn hẹp nên khó tránh khỏi những sai sót trong
quá trình trình bày. Rất mong nhận được sự thông cảm và góp ý từ quý Thầy cô, anh chị,
bạn học.
Chương 1. Tổng quan về Edge Computing
Theo Amazon Web Services, “Thuật ngữ IoT hay Internet vạn vật đề cập đến mạng lưới
tập hợp các thiết bị thông minh và công nghệ tạo điều kiện thuận lợi cho hoạt động giao
tiếp giữa thiết bị và đám mây cũng như giữa các thiết bị với nhau. Nhờ sự ra đời của chip
máy tính giá rẻ và công nghệ viễn thông băng thông cao, ngày nay, chúng ta có hàng tỷ
thiết bị được kết nối với internet.”
Không khó để thấy các thiết bị thông minh đang dần xuất hiện và giúp ích chúng ta trong
đời sống hàng ngày. Chúng xuất hiện khắp mọi ngóc ngách căn nhà, doanh nghiệp và văn
phòng của chúng ta. Những vật dụng thông minh này có thể tự động truyền và nhận dữ
liệu qua Internet. Tất cả những “thiết bị điện toán vô hình” này và công nghệ liên quan
được gọi chung là Internet vạn vật.
Internet vạn vật tác động sâu rộng tới cuộc sống cũng như công việc của con người. IoT
cho phép máy móc xử lý phần việc nặng nhọc, đảm nhiệm những nhiệm vụ nhàm chán và
giúp cuộc sống trở nên lành mạnh, năng suất và thoải mái hơn.
Ví dụ: các thiết bị thông minh có thể thay đổi hoàn toàn thói quen buổi sáng của bạn. Khi
bạn nhấn nút tạm hoãn, chiếc đồng hồ báo thức của bạn sẽ tự động bật máy pha cà phê và
kéo mở rèm cửa sổ. Tủ lạnh của bạn sẽ tự động phát hiện những thực phẩm sắp hết và đặt
mua giao tận nhà. Lò nướng thông minh sẽ cho bạn biết thực đơn trong ngày và thậm chí
còn nấu những nguyên liệu đã được chuẩn bị sẵn để đảm bảo rằng bữa trưa của bạn đã
sẵn sàng. Chiếc đồng hồ thông minh sẽ lên lịch họp cho bạn, trong khi đó, chiếc ô tô
thông minh của bạn tự động đặt vị trí GPS dừng xe để nạp nhiên liệu. Tiềm năng là vô
hạn trong thế giới IoT!
Kiến trúc điện toán biên là một giải pháp thay thế cho kiến trúc điện toán đám mây. Điện
toán biên bao gồm một hệ sinh thái gồm các thành phần cơ sở hạ tầng đã được phân tán
từ vị trí trung tâm của trung tâm dữ liệu của doanh nghiệp ra bên ngoài—trên tất cả các vị
trí biên—như một phần của quá trình triển khai toàn diện của tổ chức.
Điều này bao gồm khả năng tính toán và lưu trữ, ứng dụng, thiết bị và cảm biến—cũng
như khả năng kết nối mạng trở lại trung tâm dữ liệu trung tâm hoặc đám mây hoạt động
cùng với các thiết bị Internet of Things (IoT).
Các thiết bị và cảm biến là nơi thu thập thông tin. Chúng chỉ có đủ băng thông, bộ nhớ,
khả năng xử lý và chức năng cũng như tài nguyên máy tính để thu thập, xử lý và thực thi
dữ liệu trong thời gian thực mà không cần hoặc có rất ít sự trợ giúp từ các phần khác của
mạng. Tuy nhiên, có một số loại kết nối với mạng cho phép giao tiếp giữa thiết bị và cơ
sở dữ liệu tại một địa điểm tập trung.
Ví dụ: nếu bạn là công ty vận chuyển, "lợi thế" của bạn có thể nằm ở bến cảng nơi các lô
hàng được chất và dỡ, để quá trình xử lý và phân tích nguồn cung cấp của bạn có thể
được thực hiện gần thời gian thực, dẫn đến dữ liệu được điều khiển tốt hơn quyết định.
Trụ sở chính của công ty bạn có thể nằm cách xa hàng dặm, nơi đặt trung tâm dữ liệu
chính, nhưng ranh giới là nơi bạn thu thập dữ liệu, kiểm tra hàng hóa trước khi hàng rời
khỏi bến tàu và mặt khác là quản lý, thu thập và gửi thông tin–tất cả mà không phải lo
lắng về độ trễ.
Tương tự, lợi thế của bạn có thể bao gồm các thiết bị IoT như thiết bị đầu cuối tại điểm
bán hàng trong cửa hàng. Những "thiết bị biên" này xử lý dữ liệu tại điểm sử dụng và chỉ
gửi những gì cần thiết tới đám mây lai.
Do dữ liệu được thu thập và xử lý gần như theo thời gian thực nên các thiết bị biên hoạt
động không có độ trễ — vì thiết bị không dựa vào trang web trung tâm hoặc đám mây để
xử lý. Trong đám mây, các ứng dụng sử dụng trí tuệ nhân tạo để học hỏi từ dữ liệu được
thu thập ở biên mạng và điều chỉnh các đề xuất, chức năng và hoạt động.
Hãy tưởng tượng một dự án thành phố thông minh để cung cấp điện. Các thiết bị cạnh
gần đường, tòa nhà thành phố và trung tâm giao thông xử lý dữ liệu tại điểm thu thập. Trí
tuệ nhân tạo và máy học trong nền tảng ứng dụng và dữ liệu học hỏi từ dữ liệu và đào tạo
các thiết bị thông qua triển khai biên.
Điện toán biên lý tưởng cho các ứng dụng IoT yêu cầu độ trễ mạng tối thiểu, hoạt động tự
chủ cũng như các biện pháp xử lý quyền riêng tư và bảo mật cục bộ.
1.3. So sánh với Cloud Computing và Fog Computing
Thời đại IoT yêu cầu một giao thức kết nối mới để đảm bảo hỗ trợ đầy đủ cho các thiết bị
vật lý thực tế. Để giải quyết vấn đề này, Message Queuing Telemetry Transport (MQTT)
đang dần trở nên phổ biến.
MQTT (Message Queuing Telemetry Transport) là giao thức truyền thông điệp (message)
theo mô hình publish/subscribe (cung cấp / thuê bao), được sử dụng cho các thiết bị IoT
với băng thông thấp, độ tin cậy cao và khả năng được sử dụng trong mạng lưới không ổn
định. Nó dựa trên một Broker (tạm dịch là “Máy chủ môi giới”) “nhẹ” (khá ít xử lý) và
được thiết kế có tính mở (tức là không đặc trưng cho ứng dụng cụ thể nào), đơn giản và
dễ cài đặt.
MQTT được sử dụng để tạo kết nối giữa các thiết bị nhúng, mạng với các dịch vụ cũng
như phần mềm trung gian. Hoạt động kết nối dựa trên cơ chế định tuyến và làm cho
MQTT trở thành giao thức kết nối tốt nhất có thể cho cả IoT và M2M.
- Dạng truyền thông điệp theo mô hình Pub/Sub cung cấp việc truyền tin phân tán
một chiều, tách biệt với phần ứng dụng.
- Việc truyền thông điệp là ngay lập tức, không quan tâm đến nội dung được truyền.
- Sử dụng TCP/IP là giao thức nền.
- Tồn tại ba mức độ tin cậy cho việc truyền dữ liệu (QoS: Quality of service)
- QoS 0: Broker/client sẽ gửi dữ liệu đúng một lần, quá trình gửi được xác
nhận bởi chỉ giao thức TCP/IP.
- QoS 1: Broker/client sẽ gửi dữ liệu với ít nhất một lần xác nhận từ đầu kia,
nghĩa là có thể có nhiều hơn 1 lần xác nhận đã nhận được dữ liệu.
- QoS 2: Broker/client đảm bảo khi gửi dữ liệu thì phía nhận chỉ nhận được
đúng một lần, quá trình này phải trải qua 4 bước bắt tay.
- Phần bao bọc dữ liệu truyền nhỏ và được giảm đến mức tối thiểu để giảm tải cho
đường truyền.
2.3. Mô hình Pub-Sub
Mô hình Pub/Sub
a) Thành phần
- Publisher: Nơi gửi thông điệp
- Subscriber: Nơi nhận thông điệp
- Broker: Máy chủ môi giới
Broker được coi như trung tâm, nó là điểm giao của tất cả các kết nối đến từ Client
(Publisher/Subscriber).
- Nhiệm vụ chính của Broker là nhận thông điệp (message) từ Publisher, xếp vào
hàng đợi rồi chuyển đến một địa điểm cụ thể.
- Nhiệm vụ phụ của Broker là nó có thể đảm nhận thêm một vài tính năng liên quan
tới quá trình truyền thông như: bảo mật message, lưu trữ message, logs, ....
Client thì được chia thành hai nhóm là Publisher và Subscriber. Client chỉ làm ít nhất một
trong 2 việc:
- Publish các thông điệp (message) lên một/nhiều topic cụ thể.
- Subscribe một/nhiều topic nào đó để nhận message từ topic này.
Ưu điểm Nhược điểm
Kết nối riêng rẽ, độc lập. Máy chủ môi giới (Broker) không cần
thông báo về trạng thái gửi thông điệp. Do
đó không có cách nào để phát hiện xem
thông điệp đã gửi đúng hay chưa.
Thời gian tách biệt (Time decoupling). Publisher không hề biết gì về trạng thái
của subscribe và ngược lại. Vậy làm sao
chúng ta có thể đảm bảo mọi thứ đều ổn.
Kubernetes được công nhận rộng rãi là nền tảng nguồn mở ưu việt cho việc điều phối
vùng chứa. Kubernetes là một hệ thống mã nguồn mở được thiết kế để tự động hóa việc
triển khai, mở rộng quy mô và quản lý các ứng dụng được đóng gói. Nó cung cấp một
loạt các khả năng như quản lý cấu hình, tự phục hồi, triển khai và khôi phục tự động cũng
như cân bằng tải cùng nhau làm cho nó trở thành công cụ điều phối phổ biến nhất hiện
nay.
Kubernetes cho phép tạo một cụm máy tính bao gồm một nhóm các máy hoạt động được
gọi là các node (nút), chịu trách nhiệm thực thi các ứng dụng được đóng gói. Các worker
node (node công nhân) đóng vai trò là máy chủ để thực thi các thành phần ứng dụng mà
theo thuật ngữ Kubernetes được gọi là cluster (cụm). Control-plane, có thể được triển
khai trên một nút hoặc trên nhiều nút, giám sát các công nhân và nhóm trong cụm. Các
trách nhiệm chính của nó bao gồm đưa ra các quyết định cấp cao về cụm và phản hồi các
sự kiện được phát hiện xảy ra trong cụm.
Control-plane bao gồm một số thành phần: kube-apiserver, etcd, kube-scheduler, kube-
controller-manager và cloud-controller-manager. Các thành phần này có thể chạy trên bất
kỳ máy nào trong cụm và cùng nhau, chúng cho phép quản lý cụm hiệu quả. Các nút
công nhân của cụm chạy các thành phần nút sau: kubelet, kube-proxy và thời gian chạy
vùng chứa. Chúng được sử dụng để chạy các nhóm và do đó cung cấp môi trường thời
gian chạy Kubernetes.
Vì Kubernetes ban đầu không nhằm mục đích triển khai trên các vị trí phân tán, nên
nó không thể áp dụng cho việc điều phối dịch vụ trong môi trường điện toán biên ở dạng
hiện tại. Tuy nhiên, với một số điều chỉnh nhất định, nó có thể được điều chỉnh để hỗ trợ
các nút công nhân từ xa và cung cấp khả năng triển khai lớp biên được phối hợp chức
năng.
Trở ngại chính đối với việc bao gồm các nút worker từ xa trong cụm Kubernetes là điều
kiện tiên quyết để liên lạc liên tục giữa control plane và các nút worker. Giao tiếp từ các
nút công nhân tới mặt phẳng điều khiển kết thúc tại giao diện tiếp xúc của thành phần
máy chủ API. Các nút công nhân từ xa có thể giao tiếp với mặt phẳng điều khiển hiển thị
các địa chỉ IP công cộng vì trong môi trường điện toán biên, mặt phẳng điều khiển dự
kiến sẽ chạy trên cơ sở hạ tầng đám mây có sẵn công khai do các thành phần sử dụng
nhiều tài nguyên của nó.
Tuy nhiên, mặt phẳng điều khiển phải có hai đường dẫn giao tiếp chính tới các nút
worker đi kèm: một đường dẫn tới kubelet được kết thúc tại điểm cuối HTTPS của
kubelet (để tìm nạp nhật ký nhóm, đính kèm với các nhóm đang chạy và cung cấp chức
năng chuyển tiếp cổng của kubelet), và thứ hai hướng tới các nút, nhóm và dịch vụ.
Trong môi trường cụm, giao tiếp như vậy được kích hoạt do các nút công nhân nằm trong
cùng một môi trường mạng hoặc ít nhất chúng có địa chỉ IP khả dụng. Tuy nhiên, trong
mô hình điện toán biên mong muốn, nơi các thiết bị worker có thể được đặt trong các
mạng riêng từ xa mà không có địa chỉ IP công cộng tĩnh, điều này trở thành một thách
thức cần phải giải quyết.
Các nhược điểm khác của việc sử dụng Kubernetes cho điều phối biên là do nó phụ thuộc
nhiều vào hiệu suất xử lý và mạng cao có sẵn trong môi trường đám mây, trong khi biên
thường ngụ ý giảm khả năng tài nguyên. Đây là lý do tại sao ngày nay có nhiều công cụ
điều phối được xây dựng dựa trên Kubernetes hoặc sử dụng cách tiếp cận tương tự nhưng
cung cấp điều phối dịch vụ phù hợp hơn với môi trường điện toán biên.
KubeEdge là một nền tảng nguồn mở được thiết kế để tăng cường khả năng điều phối bộ
chứa và quản lý cụm ở biên mạng. Nó tận dụng khung Kubernetes đã được thiết lập tốt để
cung cấp hỗ trợ cơ sở hạ tầng cho mạng, triển khai ứng dụng và đồng bộ hóa siêu dữ liệu
giữa đám mây và tài nguyên ở biên của mạng. Ngoài ra, nền tảng này còn hỗ trợ giao
thức MQTT và trao quyền triển khai logic tùy chỉnh để cung cấp cơ chế tạo điều kiện
giao tiếp với các thiết bị ở rìa mạng.
Tính năng chính cho phép đưa các nút biên vào đám mây từ xa bằng nền tảng KubeEdge
là kết nối WebSocket hai chiều giữa trang biên và phần đám mây, là phần mở rộng của
nền tảng Kubernetes hiện có. Do đó, thành phần máy chủ Kubernetes trong đám mây
không phải giao tiếp trực tiếp với các thiết bị worker mà thay vào đó, giao tiếp được thực
hiện thông qua kết nối WebSocket giữa thiết bị biên (Edge Hub) và phần đám mây
(Cloud Hub). Do thiết bị biên khởi tạo kết nối WebSocket này giữa phần biên và phần
đám mây, nên KubeEdge cho phép hỗ trợ đưa các thiết bị vào mạng riêng..
Vì KubeEdge dựa trên Kubernetes nên chính sách lập lịch của nó được triển khai giống
hệt nhau do phần lập lịch không được mở rộng. Do đó, việc điều chỉnh thuật toán lập lịch
trong KubeEdge hàm ý việc tùy chỉnh thành phần kube-scheduler, vì nó có thể đạt được
theo cách tương tự với nền tảng Kubernetes.
Chương 4. Hiện thực sử dụng KubeEdge
Ở demo này ta, Bộ đếm sẽ chạy ở Edge device và người dùng có thể điều khiển nó trong
web từ phía Cloud.
4.2.1. Khởi tạo device model và device instance cho bộ đếm
Lưu ý: instance phải được tạo sau model và xóa trước model.
Cuối cùng, người dùng có thể nhận được trạng thái bộ đếm ở phía đám mây.
4.2.3. Điều khiển counter bằng cách vào Web App Page
- Chọn tùy chọn ON và nhấp vào Execute, sau đó người dùng có thể thấy bộ đếm
bắt đầu được đếm theo nhật ký docker -f counter-container-id ở edge.
- Chọn tùy chọn STATUS, sau đó bấm Execute để nhận trạng thái bộ đếm, cuối cùng
trạng thái bộ đếm và giá trị bộ đếm hiện tại sẽ hiển thị trên web.
Ngoài ra, bạn có thể xem trạng thái bộ đếm bằng kubectl get device counter -o yaml -w ở
phía đám mây.
- Chọn tùy chọn OFF và nhấp vào Execute, bộ đếm dừng hoạt động ở edge.
5.1. EdgeMark
Edgemark là một công cụ kiểm tra hiệu suất lấy cảm hứng từ Kubemark, cho phép người
dùng chạy thử nghiệm trên các cụm mô phỏng. Trường hợp sử dụng chính là thử nghiệm
khả năng mở rộng, vì các cụm mô phỏng có thể lớn hơn nhiều so với cụm thực. Mục tiêu
là phơi bày các sự cố với các thành phần đám mây KubeEdge CloudCore chỉ xuất hiện
trên các cụm lớn hơn.
Ở cấp độ rất cao, cụm Edgemark bao gồm ba phần: một kubernetes master thực sự, thành
phần KubeEdge CloudCore và một tập hợp các Nút cạnh “Rỗng”. Nút Hollow Edge được
đăng ký với HollowEdgeCore, giả vờ là một EdgeCore thông thường, nhưng không tạo ra
bất kỳ vùng chứa thực nào. HollowEdgeCore mô phỏng trình quản lý thời gian chạy bằng
Kubernetes k8s.io/kubernetes/pkg/kubelet/cri/remote/fake/fake_runtime.go, nơi chứa hầu
hết logic. Ngoại trừ việc mô phỏng trình quản lý thời gian chạy, các hành vi khác giống
như edgecore.
Hiện tại, các thành phần chính của Kubernetes chạy trên một máy chuyên dụng dưới dạng
các nhóm được tạo/quản lý bởi kubelet, chính các thành phần này chạy dưới dạng
systemd hoặc dịch vụ giám sát trên máy ảo chính tùy thuộc vào bản phân phối VM. Việc
có một máy chuyên dụng cho máy chủ có một chút lợi thế so với việc chạy các thành
phần chính trên một cụm bên ngoài, có thể cách ly hoàn toàn tài nguyên chính khỏi mọi
thứ khác. CloudCore có nhiều phiên bản và yêu cầu nhiều nút chuyên dụng để duy trì độ
tin cậy cao. Thông thường, trong các cấu hình có tính sẵn sàng cao, bộ cân bằng tải phải
đặt trước CloudCore để định tuyến chính xác các yêu cầu đến các máy chủ CloudCore
khỏe mạnh. Và The HollowEdgeNodes, mặt khác, được chạy trên cụm Kubernetes 'bên
ngoài' dưới dạng các nhóm trong một không gian tên riêng biệt (được đặt tên là
edgemark). Ý tưởng sử dụng các nhóm trên một cụm thực hoạt động (hoặc hoạt động)
như các nút trên cụm dấu cạnh nằm ở trung tâm thiết kế của dấu cạnh.
Guideline sử dụng Edgemark:
https://github.com/kubernetes/perf-tests/blob/master/clusterloader2/docs/
GETTING_STARTED.md
5.2. ClusterLoader2
Từ các kết quả thử nghiệm trước đó, độ trễ lệnh gọi API và độ trễ khởi động nhóm đáp
ứng các SLI/SLO do cộng đồng Kubernetes xác định. Do đó, các cụm Kubernetes do
KubeEdge hỗ trợ có thể hỗ trợ ổn định 100.000 nút cạnh đồng thời và hơn một triệu
nhóm. Trong sản xuất, mạng giữa các nút biên và đám mây được kết nối theo yêu cầu
O&M vì các lý do như bảo mật mạng và quản lý phân vùng. Do đó, số lượng nút biên có
thể được quản lý bởi một cụm duy nhất có thể tăng theo tỷ lệ dựa trên tỷ lệ các nút biên
ngoại tuyến so với các nút trực tuyến. Ngoài ra, phân mảnh dữ liệu được sử dụng trên mặt
phẳng điều khiển Kubernetes để lưu trữ các tài nguyên khác nhau vào không gian etcd
tương ứng, cho phép quy mô triển khai dịch vụ lớn hơn.