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

Kubernetes – Phần 1 – Kubernetes là gì?

  1. Lịch sử hình thành và phát triển

Khi bắt đầu tìm hiểu một thứ gì đó, chúng ta thường có thói quen tìm hiểu lịch sử hình thành của nó. Tức là sẽ tìm câu trả lời cho câu hỏi: Nó ra đời để làm gì? Ai đã tạo ra nó?

Để bắt đầu cho chuỗi bài về Kubernetes, tôi cũng sẽ đi từ điểm khởi đầu này.

Quay ngược lại thời gian, chúng ta sẽ lấy tạm thời điểm Amazon Web Services (AWS) thay đổi thế giới công nghệ bằng cách mang tới một mô hình Cloud Computing (Điện toán đám mây). Tất cả các công ty đều cố gắng chạy theo để bắt kịp AWS, trong đó có Google – tên công ty đã thành một từ trong từ điển của oxford.

Vì đi sau, nên muốn phát triển và thu hút được người dùng, ngoài việc cung cấp Cloud Computing thì Google phải tạo ra một cái gì đó khác biệt, và họ hướng tới việc mang lại sự tiện dụng cho khách hàng.

Hẳn các bạn đều nghe tới một sự kiện mang tính lịch sử vào năm 2013, đó là sự ra đời của Docker. Việc Docker ra đời đã làm cho việc sử dụng container chưa bao giờ dễ dàng đến thế. Nhưng container ra đời từ khi nào? Vâng, câu trả lời là … từ rất lâu rồi. Vì container là một tập hợp các mảnh ghép công nghệ, nên mảnh ghép đầu tiên được ra đời vào năm 1979 trên Unix version 7, đó là chroot system. Để rồi từ đó, các mảnh ghép khác lần lượt ra đời.

OK. Quay lại với Google, trước thời điểm 2013 với sự kiện Docker ra đời, thì Google cũng đã tự triển khai các ứng dụng của họ trong container rồi, như Gmail, Search. Từ các sản phẩm in-house (tự cung cấp nội bộ) là Borg, Omega phục vụ việc điều phối container cho các ứng dụng nội bộ, Google đã tạo ra một nền tảng mới có tên là Kubernetes, sau này tặng cho Cloud Native Computing Foundation (CNCF) như một dự án nguồn mở tuân theo giấy phép Apache 2.0 vào năm 2014. Kể từ đó, Kubernetes trở thành một công nghệ quan trọng bậc nhất trên hành tinh này.

Hình 1: Sự tiến hóa lên Kubernetes

Bạn nào sử dụng Kubernetes trên Google Cloud sẽ thấy có khá nhiều tính năng hay ho và độc quyền so với các đơn vị cung cấp Public Cloud khác. 😊

  1. Mối quan hệ giữa Kubernetes và Docker

Hai công nghệ Kubernetes và Docker tuy rằng sinh ra ở hai thời điểm khác nhau với mục đích khác nhau, nhưng chúng đã bổ trợ cho nhau một cách tuyệt vời. Người dùng sử dụng Docker để đóng gói ứng dụng vào chạy trong container, sau đó sử dụng Kubernetes để điều độ các container trên môi trường production.

Ở một góc độ nào đó, bạn có thể hình dung như thế này: Kubernetes cluster bao gồm 10 node chạy ứng dụng production, trên mỗi node bạn cài đặt Docker như một container runtime để thực hiện việc start, stop các container. Kubernetes sẽ đảm nhận việc quyết định xem nên khởi tạo container hay tăng, giảm các container trên node nào.

Thuật ngữ node được hiểu là các máy chủ vật lý hoặc ảo hóa có cài đặt container runtime.

Thuật ngữ cluster được hiểu là cụm các máy chủ có vai trò giống nhau và hoạt động tương tự nhau, có thể thay thế lẫn nhau.

Thực tế thì container runtime không chỉ có mỗi Docker, Kubernetes có thể làm việc với rất nhiều container runtime khác như containerd, cri-o, kata,…

Hình 2: Kubernetes và Docker

Tới đây, cơ bản thì bạn đã hình dung ra được mối lương duyên giữa Docker và Kubernetes rồi phải không? Nhưng mối tình này có còn bền chặt? Thực tế thì Docker có tiến hóa, và cả Kubernetes cũng vậy. Các bạn tìm hiểu về kiến trúc Docker sẽ thấy nó được tách làm 3 layers là: Deamon, containerd và runc. Kể từ phiên bản 1.20, Kubernetes đã hỗ trợ làm việc trực tiếp với containerd. Tức là nó sẽ loại bỏ bớt được sự kồng kềnh của Docker. Còn kồng kềnh như thế nào thì các bạn đọc thêm chuỗi bài Docker trong website nhé.

Dù bên dưới có thay đổi như thế nào thì cũng không làm ảnh hưởng gì tới trải nghiệm của bạn trong việc sử dụng Kubernetes cả. 😊

  1. Kubernetes là gì?

Nguồn gốc của các tên Kubernetes bắt nguồn từ một tiếng Hy Lạp, nghĩa là Helmsman – Người lái tàu biển. Hình logo phản ánh cái tên luôn – tay lái tàu.

Hình 3: Kubernetes logo

Có một cách viết khá phổ biến được dùng thay cho Kubernetes là K8s. Số 8 ở đây đại diện cho 8 ký tự đứng giữa hai chữ K và s. Nên trong chuỗi bài này, có thể nhiều chỗ mình sẽ viết ngắn gọn là K8s, các bạn tự hiểu nhé.

Nói dài nói dai, thì cái câu hỏi chính vẫn chưa được trả lời. Kubernetes là gì?

Ở mức tổng quát nhất thì Kubernetes là hai thứ sau:

  • Kubernetes là một cluster để chạy ứng dụng
  • Kubernetes là một Orchestrator cho các ứng dụng cloud-native

Kubernetes có phải là một hệ điều hành (OS – Operating System) hay không?

Nếu xem xét hệ điều hành như Linux, Windows thì hệ điều hành sẽ trừu tượng hóa (abstract) tài nguyên máy chủ và thực hiện xử lý lập lịch cho tiến trình sử dụng resources (CPU, RAM, Disk,…).

Nếu nhìn Kubernetes ở góc độ triển khai ứng dụng thì nó cũng trừu tượng hóa các tài nguyên máy chủ (cụm máy chủ) và thực hiện lập lịch cho các ứng dụng cloud-native.

Thuật ngữ cloud-native applications nói tới các ứng dụng dạng microservice được đóng gói trong container và tuân thủ 12 factor. Các bạn đọc một số bài về DevSecOps để hiểu thêm về các keyword này nhé.

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

=============================
Kubernetes – Phần 1 – Kubernetes là gì?, 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