TÌM HIỂU Về KUBERNETES Và VIẾT ỨNG DỤNG DEMO - Tài Liệu Text

Tải bản đầy đủ (.pdf) (19 trang)
  1. Trang chủ
  2. >>
  3. Giáo Dục - Đào Tạo
  4. >>
  5. Cao đẳng - Đại học
TÌM HIỂU về KUBERNETES và VIẾT ỨNG DỤNG DEMO

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.04 MB, 19 trang )

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HCMKHOA CÔNG NGHỆ THƠNG TINĐỒ ÁN HỌC PHẦNTên học phần: ĐIỆN TỐN ĐÁM MÂY (Cloud Computing)Tên đề tài Nhóm: TÌM HIỂU VỀ KUBERNETES VÀ VIẾT ỨNG DỤNGDEMODANH SÁCH THÀNH VIÊN NHÓM1. Trần Tiến Đức - 18133007Ngày nộp: ……./……./2021TP.HCM, ngày …. Tháng …. năm 2021 Mục lụcI. Kubernetes (K8s) là gì?...............................................................................................4II. Các hệ thống cung cấp Kubernetes cài đặt sẵn:.........................................................4III. Các cách để cài đặt K8s............................................................................................4IV. Các đối thủ cạnh tranh..............................................................................................5V. Kiến trúc.................................................................................................................... 51. Master server (Máy chủ)......................................................................................6a) Etcd............................................................................................................... 6b) API Server.................................................................................................... 7c) Controller Manager Service..........................................................................7d) Scheduler Service......................................................................................... 7e) Dashboard (Không bắt buộc)........................................................................ 72. Node Server (Máy công nhân).............................................................................7a) Pod................................................................................................................ 8b) Service (svc)................................................................................................. 8c) Persistent Volumes (PV)...............................................................................9d) Namespaces (Không gian tên)...................................................................... 9e) Ingress rules................................................................................................ 10f) Network policies..........................................................................................11g) Network...................................................................................................... 11h) ConfigMaps and Secrets............................................................................. 11i) Controllers................................................................................................... 11j) Helm - Trình quản lý gói của K8s............................................................... 12k) Dashboard................................................................................................... 12l) Monitoring................................................................................................... 12VI. Mơ hình hệ thống được sử dụng:........................................................................... 13VII. Tài liệu hướng dẫn sử dụng:................................................................................. 13VIII. Vấn đề còn tồn tại:...............................................................................................17IX. Hướng phát triển:................................................................................................... 18NGUỒN THAM KHẢO.............................................................................................. 19 I.Kubernetes (K8s) là gì?Kubernetes là một hệ thống điều phối container mã nguồn mở nổi tiếng hiệnnay và được sử dụng để đóng gói các service từ đó triển khai hệ thốngmicroservices (Hệ thống mà ở đó các dịch vụ được đóng gói cách ly với nhau ởcấp độ hệ điều hành và được liên kết với nhau trong một hệ thống mạng máytính chung). Kubernetes là một hệ sinh thái lớn và phát triển nhanh chóng. Cácdịch vụ, sự hỗ trợ và cơng cụ có sẵn rộng rãi.Tên gọi Kubernetes có nguồn gốc từ tiếng Hy Lạp, có ý nghĩa là người lái tàuhoặc hoa tiêu. Google mở mã nguồn Kubernetes từ năm 2014. Kubernetes xâydựng dựa trên một thập kỷ rưỡi kinh nghiệm mà Google có được với việc vậnhành một khối lượng lớn workload trong thực tế, kết hợp với các ý tưởng vàthực tiễn tốt nhất từ cộng đồng.II. Các hệ thống cung cấp Kubernetes cài đặt sẵn:Google container engine (GKE): (free 300$ cho tài khoản mới)CoreOS techtonic: />RedHat Openshift: />Amazon EKS (Elastic Kubernetes Service)III. Các cách để cài đặt K8sK8s là một hệ thống, gồm nhiều thành phần tương tác với nhau. Tuy không tớinỗi phức tạp như cài một hệ thống cloud IaaS (Infranstructure as A Service Kiến trúc hạ tầng như một dịch vụ) như OpenStack. Vậy là người ta có hàngchục cách khác nhau để cài K8s, đáng kể nhất có:1. Minikube (Tích hợp sẵn trên Docker Desktop của Windows và MacOSchủ yếu triển khai cụm 1 node)4 2. Kubeadm đang trong giai đoạn phát triển, để cài trên hệ thống máy vậtlý / máy ảo dùng Ubuntu 16.04 hay CentOS 73. Kargo là phần mềm dựa trên Ansible (Phần mềm tự động hố cấu hình)để cài trên rất nhiều nơi bao gồm cả máy vật lý/máy ảo/AWS/GCE4. DùngSaltStackđểcài />5. Cài bằng tay trên CoreOS Container Linux6. Kops để cài trên AWS (Amazon cloud)IV. Các đối thủ cạnh tranh Docker Swarm /> Apache Mesos />V. Kiến trúcK8s cluster bao gồm nhiều node, trên mỗi node sẽ cần chạy một "kubelet", đâylà chương trình để chạy k8s. Cần một máy để làm "chủ" cluster, trên đó sẽ càiAPI server, scheduler ... Các máy còn lại sẽ chạy kubelet để sinh ra các5 container.1. Master server (Máy chủ)a) Etcd6 Là hệ thống lưu trữ dữ liệu của cụm K8s theo dạng key - value (Khoá - giá trị).b) API ServerĐúng theo tên gọi, đây chính là server cung cấp Kubernetes API. Nó có nhiệmvụ đặt Pod vào Node, đồng bộ hố thơng tin của Pod bằng REST API tiếp nhậncài đặt của pod/service/replicationController.c) Controller Manager ServiceChúng là các background threads chạy các task bên trong cluster. Controllerbao gồm nhiều vai trò khác nhau, nhưng tất cả được compiled thành một singlebinary. Những vai trò của controllers bao gồm:−Node controller chịu trách nhiệm cho trạng thái của worker (worker state)−Replication controller chịu trách nhiệm cho việc đảm bảo duy trì(maintaining) đúng số lượng của Pods−End-point Controller kết nối services và Pods với nhau.−Service account và token controllers quản lý access management..d) Scheduler ServiceScheduler Service có trách nhiệm giám sát việc sử dụng tài nguyên trên mỗimáy chủ để đảm bảo rằng hệ thống không bị quá tải. Scheduler Service phảibiết tổng số tài nguyên có sẵn trên mỗi máy chủ, cũng như các tài nguyên đượcphân bổ cho các khối lượng cơng việc hiện có được gán trên mỗi máy chủ.e) Dashboard (Không bắt buộc)Giao diện web Kubernetes Dashboard giúp đơn giản hóa các tương tác củangười dùng K8s thơng qua API server.2. Node Server (Máy công nhân)7 a) PodPod là 1 nhóm (gồm một hoặc nhiều) container thực hiện mộtmục đích nào đó, như là chạy phần mềm ứng dụng nào đó. Nhómnày chia sẻ khơng gian lưu trữ, địa chỉ IP với nhau. Pod thì đượctạo ra hoặc xóa tùy thuộc vào yêu cầu của dự án.b) Service (svc)Vì các Pod có tuổi thọ ngắn, do vậy nó khơng đảm bảo về địa chỉ IP ln cốđịnh. Điều này khiến cho việc giao tiếp giữa các microservice trở nên khó khăn.Do đó, K8s giới thiệu khái niệm về svc, nó là một lớp nằm trên một số nhómPod. Svc cung cấp mạng máy tính đáng tin cậy bằng cách cung cấp địa chỉ IPtĩnh, DNS (Máy chủ phân giải tên miền) và cổng mạng cố định.8 c) Persistent Volumes (PV)PersistentVolume (PV) là một phần không gian lưu trữ dữ liệu trong cluster,các PersistentVolume giống với Volume bình thường tuy nhiên nó tồn tại độclập với POD (pod bị xóa PV vẫn tồn tại), có nhiều loại PersistentVolume có thểtriển khai như NFS, Clusterfs …PersistentVolumeClaim (pvc) là yêu cầu sử dụng không gian lưu trữ (sử dụngPV). Hình dung PV giống như Node, PVC giống như POD. POD chạy nó sửdụng các tài nguyên của NODE, PVC hoạt động nó sử dụng tài nguyên của PV.d) Namespaces (Không gian tên)9 Đây là một cơng cụ dùng để nhóm hoặc tách các nhóm đối tượng. Namespacesđược sử dụng để kiểm sốt truy cập, kiểm soát truy cập network, quản lýresource và quoting.Nếu ta đặt service này là "web" lúc chạy production, cịn lúc pháttriển thì ta chạy nó ở đâu? Ta sẽ phải thay đỏi tên service.Namespace giải quyết vấn đề này. Mặc định các dịch vụ sẽ sửđụng namespace "default", nhưng ta có thể tạo namespace tuỳ ý.K8s sử dụng 1 namespace riêng : kube-system.e) Ingress rulesIngress là thành phần được dùng để điều hướng các yêu cầu traffic giao thứcHTTP và HTTPS từ bên ngoài (interneet) vào các dịch vụ bên trong Cluster.Ingress chỉ để phục vụ các cổng, yêu cầu HTTP, HTTPS còn các loại cổngkhác, giao thức khác để truy cập được từ bên ngồi thì dùng Service với kiểuNodePortvà10 LoadBalancer.f) Network policiesĐịnh nghĩa các quy tắc truy cập mạng giữa các Pod bên trong Cluster.g) NetworkCó nhiều loại phần mềm để triển khai container network, như Flannel,Weaver ... nếu ta dùng Google Cloud, vấn đề này không cần quan tâm.h) ConfigMaps and SecretsMột phần mềm ít khi được khởi động và chạy ln mà khơng cần cấu hình.ConfigMap là giải pháp để nhét 1 file config / đặt các environment variable(Biến môi trường) hay thiết lập các tham số khi gọi câu lệnh. ConfigMap làmột cục cấu hình, mà pod nào cần, thì chỉ định là nó cần - giúp dễ dàng chia sẻfile cấu hình. Ít ai muốn đặt mật khẩu vào file cấu hình, và chỉ có lập trình viên"tồi" mới hardcode mật khẩu vào code. Vậy nên K8s có "secret", để lưu trữ cácmật khẩu, token, ... hay những gì cần được giữ bí mật.i)ControllersCó rất nhiều controller cho các loại dịch vụ khác nhau:11 1. Deployment : là loại chung nhất, khi ta muốn "deploy" một dịch vụ nàođó. Ta tạo ra pod bằng cách tạo ra một deployment (hoặc statefulSets,hoặc các khái niệm tương đương). StatefulSets được dùng khi ta cần cácservice bật lên theo tứ tự nhất định.2. DaemonSet : thường dành cho các dịch vụ cần chạy trên tất cả các node.Ví dụ như fluentd để collect log trên tất cả các node.3. StatefulSet : là 1 file "manifest" đặt trong thư mục chỉ định bởi kubelet,các pod này sẽ được chạy khi kubelet chạy. Không thể điều khiển chúngbằng kubectl. Đây là một khái niệm đang dần bị xa lánh bởi sự thiếu linhđộng và khó kiểm sốt.Gõ kubectl get để xem tất cả những khái niệm resource mà k8s sử dụng, vàcách gọi ngắn gọn cho từng khái niệm (svc cho service, deploy cho deployment,cm cho configmap ...).j) Helm - Trình quản lý gói của K8sTrên Ubuntu, ta có APT (Advanced Package Tool - Cơng cụ quản lý góinâng cao) để cài gói phần mềm, thì trên K8s, Helm được dùng để cài các"chart” (Tương tự trình quản lý gói bên Linux). Với Helm, ta có thểtriển khai các app và service như Apache Hadoop, Apache Spark, Redis,Nginx,…k) DashboardDashboard cho phép xem tổng quan về cụm k8s đã được thiết lập từ trước, nóđược cài vào k8s như một add-on (link project K8s Dashboard: thông qua lệnh apply của kubectl.Dashboard cũng là 1 plugin có sẵn trong Minikube.l)MonitoringMonitoring trên K8s rất dễ dàng, chỉ cần cài 1 phần mềm có khả năng tích hợpvới k8s, nó sẽ hỏi K8s để lấy thơng tin về tất cả các pod trong hệ thống.12 VI. Mơ hình hệ thống được sử dụng:−Nền tảng: Amazon Linux 2 (Trên Amazon EC2)−Phiên bản Python: 3.7−Loại máy EC2: t3.medium−CPU: 2 nhân−RAM: 4 GBNhóm em sử dụng dịch vụ Amazon EC2 để tạo một máy ảo chạy hệ điều hànhAmazon Linux 2 và cài đặt Docker với Kubectl và minikube phiên bản mớinhất.Nhóm em đã sử dụng Minikube để tự động hố việc cấu hình cụm Kubernetestrên EC2 (Do tài khoản giáo dục miễn phí cho sinh viên khơng cho tạo secretkey trong môi trường sandbox).VII.Tài liệu hướng dẫn sử dụng:−Cài đặt Flask: pip install Flask−Clone repo chứa web của nhóm về từ Github:git clone />−Khởi động trang web bằng cách thực thi câu lệnh:python index.py−Sau đó, trang chủ sẽ hiện ra tại cổng 5000:13 −Ở trang chủ này, ta có 3 nút để điều khiển cluster thông qua Minikube: Start cluster: Khởi động cluster 1 node bằng Minikube. Stop cluster: Dừng tất cả hoạt động của node trong cluster. Delete cluster: Xố bỏ tồn bộ các node và các file cấu hình trongcluster.−Khi click vào nút “Start cluster”, trang web sẽ load 1 lúc để chuẩn bịcluster 1 node cho việc triển khai ứng dụng trên cụm và sẽ chuyển qua 1trang lựa chọn triển khai ứng dụng như sau.14 −Trang này cho phép triển khai 2 ứng dụng phổ biến ở thời điểm hiện tại làRedis và Apache Spark thơng qua trình quản lý gói Helm.−Khi click vào nút deploy với ứng dụng tương ứng, một trang web sau sẽhiện ra: Đối với Redis: Đối với Spark:15  Bảng trong hình ảnh trên cho biết trạng thái (status) của ứng dụng đượccài đặt qua Helm cũng như phiên bản và namespace mà ứng dụng đượctriển khai.−Trong trường hợp client muốn xố ứng dụng thì cơng việc tiếp theo màclient phải làm là click vào nút “delete” tương ứng với ứng dụng đó.16 VIII. Vấn đề cịn tồn tại:−Khơng thể sử dụng command kubeadm init để khởi tạo cluster do máy ảoAmazon Linux 2 trên EC2 không cấp quyền tạo secret key và access keymới.−Cổng mạng 8080 của EC2 từ chối không cho truy cập qua SSH và môitrường sandbox không cấp quyền truy cập EC2 Serial Console.−Những phương pháp khác để triển khai cụm K8s như sử dụng Ranchercontainer để quản lý cụm K8s cũng thất bại hay dịch vụ Amazon EKSkhông cấp quyền truy cập cho những tài khoản giáo dục miễn phí trongmột năm như tài khoản của nhóm em.−Kỹ năng sử dụng Python Flask để viết web vẫn còn nhiều khuyết điểmtrong việc thiết kế giao diện và backend.−Do tình hình dịch bệnh hiện tại nên tụi em vẫn không thể tạo được cụmK8s trên máy thật Linux mà phải sử dụng Minikube để tiện trong việcnghiên cứu về K8s.17 IX. Hướng phát triển:− Ứng dụng cho ngành Kỹ thuật dữ liệu− Kết hợp với kiến trúc Serverless của Amazon− Tập trung vào vấn đề bảo mật cụm− Mở rộng kiến trúc phân tán của Kubernetes để phù hợp với AI/ML−Tự động hóa các tác vụ cài đặt và triển khai phần mềm.18 NGUỒN THAM KHẢOa/p/phan-1-gioi-thieu-ve-kubernetes-924lJO6m5PMa/p/phan-2-kien-truc-cua-kubernetes-RQqKLnr6l7z#_helm--k8s-package-manager-18 /> />Link Github repo chứa web viết bằng Python Flask của nhóm em: />19

Tài liệu liên quan

  • Tìm hiểu C Sharp và viết ứng dụng minh họa Tìm hiểu C Sharp và viết ứng dụng minh họa
    • 282
    • 828
    • 20
  • Tìm hiểu mạng VPN và các ứng dụng của VPN Tìm hiểu mạng VPN và các ứng dụng của VPN
    • 6
    • 661
    • 6
  • Tìm hiểu về Driver và cách sử dụng ppt Tìm hiểu về Driver và cách sử dụng ppt
    • 4
    • 596
    • 2
  • Tìm hiểu lý thuyết và các ứng dụng của bộ lọc kalman Tìm hiểu lý thuyết và các ứng dụng của bộ lọc kalman
    • 33
    • 2
    • 29
  • Tìm hiểu về C# và ứng dụng Tìm hiểu về C# và ứng dụng
    • 281
    • 622
    • 1
  • Tìm hiểu về HTML và CSS, ứng dụng xây dựng một Template cho công ty máy tính Phi Long Tìm hiểu về HTML và CSS, ứng dụng xây dựng một Template cho công ty máy tính Phi Long
    • 41
    • 643
    • 2
  • BÁO CÁO MÔN ĐỒ ÁN HỆ THỐNG THÔNG TIN TÌM HIỂU VỀ PHP VÀ MYSQL ÁP DỤNG CHO BÀI TOÁN QUẢN LÝ BÁN HÀNG TRÊN MÔI TRƯỜNG INTERNET BÁO CÁO MÔN ĐỒ ÁN HỆ THỐNG THÔNG TIN TÌM HIỂU VỀ PHP VÀ MYSQL ÁP DỤNG CHO BÀI TOÁN QUẢN LÝ BÁN HÀNG TRÊN MÔI TRƯỜNG INTERNET
    • 63
    • 689
    • 2
  • Tìm Hiểu Về Cảm Biến IR Ứng Dụng Điều Khiển 4 LED Tìm Hiểu Về Cảm Biến IR Ứng Dụng Điều Khiển 4 LED
    • 21
    • 1
    • 1
  • TÌM HIỂU HỆ ĐIỀU HÀNH ANDROID VÀ VIẾT ỨNG DỤNG DEMO TÌM HIỂU HỆ ĐIỀU HÀNH ANDROID VÀ VIẾT ỨNG DỤNG DEMO
    • 48
    • 940
    • 2
  • Tiểu luận tìm hiều về polyvinylpyrronlidon và các ứng dụng của nó Tiểu luận tìm hiều về polyvinylpyrronlidon và các ứng dụng của nó
    • 33
    • 731
    • 0

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

(2.04 MB - 19 trang) - TÌM HIỂU về KUBERNETES và VIẾT ỨNG DỤNG DEMO Tải bản đầy đủ ngay ×

Từ khóa » Tìm Hiểu Về K8s