Kubernetes là gì | giải thích siêu dễ hiểu bằng hình ảnh trong 10 phút
HTML-код
- Опубликовано: 9 фев 2025
- Chào mọi người, trong video ngày hôm nay mình sẽ giới thiệu với mọi người, Kubernetes là gì
Các bạn có thể vào google,tìm đên trang chủ và, oa định nghĩa đây, tuy nhiên các bạn có thấy dễ hiểu ko ?. Mình nghĩ là ko dễ hiểu lắm.
Trước tiên chúng ta sẽ nói về 1 dàn nhạc(tiếng anh là Orchestra). Đã là dàn nhạc thì chúng ta có 1 nhạc trưởng và nhiều nhạc công. Conductor (hay nhạc trưởng) - linh hồn của dàn nhạc, có vai trò chỉ huy dàn nhạc, giữ nhịp độ và điều tiết các nhạc cụ, truyền cảm xúc lớn mạnh đến nhạc côn g…
Các bản nhạc chắc chắn là được sáng tác bởi các nhà soạn nhạc(hay là Composer).
Nhạc trưởng phải điều tiết dàn nhạc về nhịp độ, giúp các nhạc cụ vào đúng thứ tự, chỉ dẫn về sắc thái mà các nhạc cụ cần biểu đạt.
ok rồi chúng ta quay lại với K8
K8 là 1 Container Orchestration Tool,là 1 tool open source, được phát triển bởi google, ghê nha. Kubenetes đóng vai trò như nhạc trưởng, các nhạc công gọi là các container/services . K8 đảm bảo các services hoạt động trơn chu theo hướng dẫn từ 1 file config(đuôi yaml, hoặc yml),rõ ràng các bạn thấy file config này đóng vai trò như composer(hay nhà soạn nhạc) ở trên.
Rồi bây giờ chúng ta tìm hiểu xem tại sao cái K8 lại được tạo ra, nó tạo ra giải quyết những vấn đề gì?
Chúng ta hãy nói về kiến trúc monolith, rất nhiều ứng dụng đang được xây dựng trên kiến trúc này. Trong kiến trúc monolith, tất cả các chức năng, gồm cả các thư viện bên thứ 3, gộp chung vào 1 deployment. Với các ứng dụng nhỏ, điều này ok, tuy nhiên việc deploy mất nhiều thời gian, do tất cả các module phải đi cùng nhau, hoặc phải cùng công nghệ, nếu mỗi module do 1 team phát triển thì điều này càng trở nên phức tạp. Khi muốn mở rộng(hay scale), ta phải update tất cả các module, nên hệ thống xảy ra rất nhiều rủi ro.
Để giảm thiểu, thiên hạ chuyển sang kiến trúc microservices. Trong kiến trúc này, một chức năng lớn được chia thành nhiều chức năng nhỏ hơn, được gọi là các service(dịch vụ).Việc scale hệ thống sẽ dễ dàng hơn vì chỉ cần update service nào có liên quan, ko phải cập nhật tất cả các service, giảm đáng kể hiện tượng thắt cổ chai(bottle-neck).
Ở đây có 1 vấn đề là "1 machine - 1 service", nghĩa là mỗi service cần phải chạy trên 1 machine riêng biệt. Machine ở đây có thể là PC, host, laptop,..., vậy nên nếu hệ thống của ta có nhiều services thì số lượng machine cũng tăng lên theo, rất tốn kém
Để giải quyết vấn đề này, chúng ta có khái niệm containers, các services thay vì được chứa vào machine, sẽ được chứa vào container, ứng dụng quản lý container này gọi là Containerized Applications(ví dụ cụ thể là Docker).
Vậy là 1 Machine sẽ cài 1 Containerized Applications, trong App này sẽ có nhiều Container, mỗi container sẽ quản lý 1 hoặc nhiều services
Bây giờ giả sử một container bên trong Containerized App cần được nâng cấp, container này phải được tắt đi để bật container đã nâng cấp lên, khoảng thời gian giữa khi tắt container cũ và thời điểm bật container mới gọi là downtime. Làm thế nào để giảm thiểu thời gian downtime này xuống thấp nhất đây ta ?
Vậy làm thế nào mà container này thông báo cho các container khác là "tôi đang nâng cấp đấy" ?
Câu hỏi thú vị đây, tất cả sẽ được giải quyết bằng "nhạc trưởng" Kubenetes. Thông qua Kubenetes API nằm trên Master Note,sử dụng 1 Dashboard, ở đây tên gọi mỹ miều là Kubenetes Control Plane(nghe như vô lăng hoặc trung tâm điều khiển), K8 sẽ giao tiếp với các Node ở phía Slave Node
Mỗi Node ở phía slave node gồm nhiều Pod. Pod là gì nhỉ, nó là đơn vị nhỏ nhất trong K8, trong mỗi pod có thể quản lý 1 hoặc nhiều container. Kubenetes API thông qua Control Plane ko thể can thiệp vào từng Container mà sẽ can thiệp vào Pod
Nhiều node trên slave node sẽ được nhóm lại thành các cluster, bên trong cluster các container sẽ được kết với nhau thông qua thông qua địa chỉ IP, địa chỉ IP này lại đc tạo ra từ 1 virtual network bên trong cluster .
Bây giờ lập trình viên sẽ muốn cluster của mình phải tùy biến kiểu A, B với yêu cầu C,D nào đó, cho hết vào 1 hoặc nhiều file yml, rồi gửi lên cho Kubenetes API thực hiện. Việc này giống như gửi tác phẩm âm nhạc của nhà soạn nhạc(Composer) cho nhạc trưởng thực hiện.
Cảm ơn các bạn đã quan tâm, nếu các bạn thích video này, hãy cho 1 like, comment hoặc sub để tác giả có thêm động lực làm các video tiếp theo
Support - www.paypal.me/...
SUBSCRIBE TO MY CHANNEL FOR MORE INTERESTING VIDEOS:
/ nguyenduchoang
You can see code in github:
github.com/sun...
Twitter: / nguyend97601913
Facebook: / nguyen.duc.hoang.bk
cảm ơn anh đã làm ra video này. nó dễ hơn cho em trong việc hiểu Kubernets là gì
Mỗi lần xem video của bạn là một lần tôi học được điều mới.
Nội dung của anh rất hữu ích, cảm ơn những chia sẻ vì cộng đồng của anh rất nhiều. Mong anh ra nhiều video hơn nữa.
Nội dung a làm rất giá trị, lại dể hiểu cảm ơn anh
Có hình ảnh và ví dụ minh học cụ thể chuyển những phần khó hiểu thành những điều dễ hiểu thanks anh!
Cảm ơn bạn đã quan tâm :)
đơn giản, dễ hiểu, mang tính sư phạm, tiếp tục phát triển nha anh
Trực quan và dễ hiểu thầy ơi. Cảm ơn thầy nhiều!
Thank you
Sắp có rồi em :)
chú nói cô đọng dễ hiểu quá
rất hay dễ hiểu lắm. thanks anh nhiều
Cám ơn anh, bài rất dễ hiểu
Video dễ hiểu, thanks a đã chia sẻ
Mong bạn sẽ cải thiện chất lượng video hơn trong lần tới.
rất hữu ích ạ
Cảm ơn anh đã chia sẽ. Mong anh ra nhiều video hơn về chủ đề này ạ
Cảm ơn bạn đã quan tâm :)
Rất hay và dễ hiểu. Cảm ơn a rất nhiều
Cảm ơn anh nhiều!!!
cho mik xin seri này dc ko ạ,. đang học. vừa tải vitual box về, tạo 3 master node vs 3 woker node. ubuntu jammy
Quá đỉnh luôn anh, cảm ơn anh ❤
❤quá hay
làm một seri về K8s đi thầy ơi! thầy giảng hay quá ạ
OK sẽ làm,nhưng đợt này tớ bận quá, đang code dần rồi
@@NguyenDucHoang mong ngóng
Hay qua anh oi
Thank you
Hay quá thầy ơi!
Soanh kiu
Hay quá a ơi
Cảm ơn a
cảm ơn chia sẻ của anh. Chờ các case study để hình dung rõ hơn ^^
Ok bạn, đang sắp xếp time mà bận quá,kaka
Cảm ơn Thầy!
Cảm ơn bạn đã quan tâm :)
Rất hay ạ
Cảm ơn bạn đã quan tâm :)
thank you
Cảm ơn a. Rất đầy đủ thông tin chi tiết ạ. Cho em hỏi học Kubernetes có cần học Docker trước đó không ạ ?
Bản chất nó vẫn là container hóa nên mình nghĩ học docker trước cũng tốt nhé !
Nếu bạn muốn học Kubernetes thì tốt nhất là nên học Docker trước đó. Docker là một công nghệ containerization, cho phép bạn đóng gói các ứng dụng và các dependency của chúng vào một container, đảm bảo tính di động, độc lập và đồng nhất giữa các môi trường khác nhau. Kubernetes là một nền tảng quản lý container được phát triển bởi Google, có khả năng tự động triển khai, mở rộng và quản lý các container trong một mạng lưới.
Khi bạn hiểu được cách Docker hoạt động và cách sử dụng Docker để đóng gói ứng dụng, bạn sẽ dễ dàng hơn khi học và triển khai Kubernetes. Kubernetes sử dụng Docker để tạo ra các container và quản lý chúng. Ngoài ra, khi triển khai một ứng dụng trên Kubernetes, bạn cần phải cấu hình các tệp YAML để mô tả ứng dụng của bạn, bao gồm cả cấu hình Dockerfile, và thường sử dụng các image được xây dựng trên Docker.
làm 1 series đi thầy , k8s nó khoai quá ạ :(
Đang cố gắng làm đây bạn, sắp có rồi
Thanks
Cảm ơn bạn đã quan tâm
cảm ơn anh
Thank you
Xin cảm ơn thầy. Nhưng nên viết chính xác kubenetes -> kubernetes.
Yesssss
Yesss
Video này không có gì đặc biệt, tôi rất thất vọng.
Cảm ơn bạn đã quan tâm :)
Thanks bác.