Thứ Sáu, 11 tháng 11, 2022

Kubernetes – Phần 2 – Kiến trúc Kubernetes

Qua bài đầu tiên, chúng ta đã nắm được lịch sử ra đời của Kubernetes rồi. Bài này tôi sẽ nói về kiến  trúc các thành phần của Kubernetes để các bạn nắm được.

Đứng ở mức tổng quan nhất khi nhìn vào kiến trúc Kubernetes thì bạn sẽ thấy hệ thống Kubernetes Cluster được chia ra làm 2 khối: Control plane và Data plane. Mỗi khối này sẽ có các vai trò và chức năng khác nhau.

Đầu tiên là khối Control Plane. Như tên gọi đã phản ánh, thì khối này sẽ thực hiện các công tác điều khiển như kiểm tra dữ liệu truyền vào, phân tích yêu cầu để đưa ra chỉ thị cho các thành phần khác thực thi. Lát nữa ta sẽ xem nó làm điều đó như thế nào.

Tiếp theo là khối Data Plane. Chính là nơi mà mọi ứng dụng của bạn sẽ triển khai trên đó. Nơi tiêu thụ RAM, CPU, Bandwidth chính của toàn bộ Kubernetes Cluster.

OK. Có hai khối control plane và data plane rồi, vậy cài đặt nó ra sao?

Thông thường thì chúng ta sẽ cài đặt sao cho hai khối này nằm độc lập nhau, nhưng bất thường thì có thể đặt cả hai khối này chung nhau được. 😊

Khi cài đặt, khối control plane sẽ cài đặt trên máy chủ được gọi là Master node, đôi khi có thể được gọi là Master, Head, Head node. Còn khối data plane sẽ cài đặt trên máy chủ gọi là Worker node, cũng có vài tên gọi khác như Minion, Node, Worker.

Việc tính toán cấu hình máy chủ của hai khối này tương đối khác nhau. Với Master node thì bạn sẽ sizing sao cho nó đảm bảo được tính sẵn sàng cao (nhiều hơn 2 máy chủ), và cấu hình để làm sao quản lý được số lượng Worker node. Tại sao? Vì các Worker sẽ giao tiếp với Master để báo cáo cũng như nhận chỉ thị, càng nhiều Worker node thì cấu hình càng phải cao. Vậy thôi. Sizing cho Worker node thì đơn giản hơn. Cứ sao cho chẳng may một Worker node bị tắt, các Worker node còn lại vẫn đủ tài nguyên chạy ứng dụng. 😊

Nói nãy giờ vẫn chưa thấy cái kiến trúc các thành phần trong Kubernetes nhỉ.

Các thành phần được cài đặt trên Master node bao gồm:

  • API server: Là đầu vào của mọi kết nối trong Kubernetes Cluster
  • Cluster store: Lưu trữ thông tin của toàn bộ Kubernetes Cluster. Mặc định sử dụng là etcd. Mình đọc đâu đó thì có một giải pháp thay thế etcd bằng sqlite cho hệ thống siêu nhỏ.
  • Controller manager: Thực hiện các công tác điều khiển vòng lặp (control loop). Có rất nhiều thành phần điều khiển nhỏ hơn bên trong như Replication controller, Node controller, Endpoints controller,…. Chúng ta sẽ đi dần trong chuỗi bài này
  • Scheduler: Thực hiện việc lập lịch để chạy ứng dụng trên các Worker node.
Hình 1: Các thành phần trên Master node

Các thành phần được cài đặt trên Worker node bao gồm:

  • Kubelet: Thực hiện tương tác với container runtime để quản trị vòng đời ứng dụng chạy trong container
  • Kube-proxy: Tương tác với iptables để thiết lập các chính sách truy cập
  • Container runtime: Thực hiện pull image, start và stop container theo chỉ thị từ kubelet
Hình 2: Các thành phần trên Worker node

Không biết có bạn nào hỏi: Worker node và Master node giao tiếp với nhau như thế nào?

Mình mượn tạm hình ở link: https://livebook.manning.com/book/kubernetes-in-action/chapter-11/35

Hình 3: Giao tiếp giữa Master node và Worker node

Từ hình trên, hẳn các bạn thấy tầm quan trọng của API server chứ? Mình sẽ viết riêng một bài về API server khi các bạn nắm cơ bản về kiến thức Kubernetes.

API server chính là cửa ngõ cho mọi giao tiếp giữa các thành phần, kể cả bạn có gõ lệnh tương tác qua CLI (Command Line Interface) hay qua RESTful API thì cũng phải qua API server.

Từ Worker node, thì kube-proxy và Kubelet gọi tới API server để báo cáo trạng thái cũng như nhận các chỉ thị cần thực hiện.

Trong nội tại Master node thì chỉ có API server mới có thể tương tác với etcd. Có khi nào API server chủ động kết nối tới các Worker node không? Ở hình trên không có luồng mũi tên trỏ từ Master node sang Worker node, nhưng câu trả lời là có. Kết nối từ API server sang Worker node thực hiện lúc nào? Đó là khi bạn thực hiện gửi yêu cầu kết nối tới các container. Cụ thể là khi lấy log ở các stdout, hay thực hiện truy cập vào console của container. API server sẽ kết nối tới Kubelet để thực hiện các truy cập vào container.

Về cơ bản thì các bạn đã nắm được các thành phần bên trong Kubernetes. Bài sau chúng ta tiếp tục đi sâu vào để học cách sử dụng Kubernetes.

Tặng các bạn mô hình kiến trúc hạ tầng Kubernetes Cluster có đảm bảo tính sẵn sàng cao (High Availability). Link gốc: https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/ha-topology/

Hình 4: Mô hình HA Kubernetes

Nguồn tham khảo : The Kubernetes Book

=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile: 0902912888
⚡️ Skype: tranbinh48ca
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: http://bit.ly/ytb_binhoraclemaster
👨 Tiktok: https://www.tiktok.com/@binhoraclemaster?lang=vi
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhoracle
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
Kiến trúc Kubernetes, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,khóa học pl/sql, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, middleware, hoc solaris, hoc linux, hoc aix, unix, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master