Kubernetes là gì | giải thích siêu dễ hiểu bằng hình ảnh trong 10 phút

Поделиться
HTML-код
  • Опубликовано: 1 окт 2024
  • 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
  • НаукаНаука

Комментарии • 51

  • @ucthu7214
    @ucthu7214 Год назад +2

    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.

  • @nhv2607
    @nhv2607 Год назад +2

    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!

  • @hhtoan
    @hhtoan 2 месяца назад

    đơn giản, dễ hiểu, mang tính sư phạm, tiếp tục phát triển nha anh

  • @xuanthutrancongtuyet4127
    @xuanthutrancongtuyet4127 7 месяцев назад

    cảm ơn anh đã làm ra video này. nó dễ hơn cho em trong việc hiểu Kubernets là gì

  • @hoatle1023
    @hoatle1023 Год назад +1

    rất hay dễ hiểu lắm. thanks anh nhiều

  • @Luoidev
    @Luoidev 3 месяца назад

    Nội dung a làm rất giá trị, lại dể hiểu cảm ơn anh

  • @sweetsica
    @sweetsica 2 года назад +2

    Trực quan và dễ hiểu thầy ơi. Cảm ơn thầy nhiều!

  • @hoangvi86
    @hoangvi86 2 месяца назад

    Cám ơn anh, bài rất dễ hiểu

  • @tanphaninh329
    @tanphaninh329 2 года назад +1

    làm 1 series đi thầy , k8s nó khoai quá ạ :(

    • @NguyenDucHoang
      @NguyenDucHoang  2 года назад

      Đang cố gắng làm đây bạn, sắp có rồi

  • @VuvaToniKroos
    @VuvaToniKroos Год назад

    chú nói cô đọng dễ hiểu quá

  • @CanhNguyen-se3jx
    @CanhNguyen-se3jx Месяц назад

    Cảm ơn anh nhiều!!!

  • @nguyentony131
    @nguyentony131 Год назад

    Video dễ hiểu, thanks a đã chia sẻ

  • @thaydungtoan1958
    @thaydungtoan1958 2 года назад +2

    Hay quá thầy ơi!

  • @hongngocnguyen1320
    @hongngocnguyen1320 2 года назад +1

    làm một seri về K8s đi thầy ơi! thầy giảng hay quá ạ

    • @NguyenDucHoang
      @NguyenDucHoang  2 года назад +2

      OK sẽ làm,nhưng đợt này tớ bận quá, đang code dần rồi

    • @hongngocnguyen1320
      @hongngocnguyen1320 2 года назад

      @@NguyenDucHoang mong ngóng

  • @cloud5trike
    @cloud5trike Год назад

    Thanks bác.

  • @PhanAnhNguyễnVũ
    @PhanAnhNguyễnVũ Год назад

    Cảm ơn a

  • @yandexhue4758
    @yandexhue4758 Год назад

    thank you

  • @narasheo4229
    @narasheo4229 Год назад

    Rất hay và dễ hiểu. Cảm ơn a rất nhiều

  • @phucle-cb1fl
    @phucle-cb1fl 2 года назад

    Xin cảm ơn thầy. Nhưng nên viết chính xác kubenetes -> kubernetes.

  • @mydevcarrer6003
    @mydevcarrer6003 2 года назад

    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 ạ ?

    • @nampham3487
      @nampham3487 2 года назад +1

      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é !

    • @NguyenDucHoang
      @NguyenDucHoang  Год назад +1

      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.

  • @TuNguyen-nq1df
    @TuNguyen-nq1df Год назад

    Quá đỉnh luôn anh, cảm ơn anh ❤

  • @NamHaVblog
    @NamHaVblog 2 года назад +1

    Thanks

  • @KuNhiRonaldo
    @KuNhiRonaldo Год назад

    Cảm ơn anh đã chia sẽ. Mong anh ra nhiều video hơn về chủ đề này ạ

  • @nvtndev524
    @nvtndev524 2 года назад

    Hay quá a ơi

  • @vanhtt581
    @vanhtt581 10 месяцев назад

    Hay qua anh oi

  • @quangquyo4765
    @quangquyo4765 2 года назад

    cảm ơn anh

  • @vietchuuc7072
    @vietchuuc7072 2 года назад

    Cảm ơn Thầy!

  • @breakeract796
    @breakeract796 2 года назад

    Rất hay ạ

  • @nguyenmanh8087
    @nguyenmanh8087 2 года назад +1

    cảm ơn chia sẻ của anh. Chờ các case study để hình dung rõ hơn ^^

    • @NguyenDucHoang
      @NguyenDucHoang  2 года назад

      Ok bạn, đang sắp xếp time mà bận quá,kaka

  • @thanhvu5633
    @thanhvu5633 2 года назад +1