04/10/2018, 13:58

Hãy dùng Docker thay vì Kubernetes

Trong giới công nghệ, mọi người gần như ai cũng bàn tán về container và cơ sở hạ tầng dựa trên container. Nhưng công nghệ container này là gì? Và làm thế nào nó giải quyết những vấn đề thách thức mà chúng ta đang đối mặt? Tôi gọi nó là “server technology”, điều này ...

Trong giới công nghệ, mọi người gần như ai cũng bàn tán về container và cơ sở hạ tầng dựa trên container. Nhưng công nghệ container này là gì? Và làm thế nào nó giải quyết những vấn đề thách thức mà chúng ta đang đối mặt?

Tôi gọi nó là “server technology”, điều này nghe có vẻ hơi lạ đối với một số người. Container không phải là công nghệ liên quan tới Cloud? Đây là một trong những điều thực sự làm tôi khó chịu. Khi tôi nói về container, nhiều người nghĩ về Kubernetes. Chính vì thế mà để làm rõ trắng đen cũng như giúp các bạn hiểu rõ hơn vì sao nên chọn Docker thay vì Kubernetes, tôi đã viết ra bài này.

Docker là gì?

Tại sao chúng ta cần một công nghệ container? Lý do quan trọng nhất, theo quan điểm của tôi, là bởi vì rất khó quản lý server. Đặc biệt là các Linux server. Bạn cần phải lo về cách chạy một máy chủ trên Internet cũng như cách bảo vệ nó khỏi bị tấn công. Một khi bạn đã làm được điều đó, thì thật sự là một sự lãng phí nếu chỉ sử dụng máy chủ này chỉ cho một mục đích duy nhất. Thay vào đó, chúng ta tận dụng nó cho các microservice.

Nhưng trong năm 2006, Linux đã phát triển một công nghệ rất thú vị được gọi là “cgroups”. cgroups (viết tắt từ control groups) là một tính năng Linux kernel dùng để giới hạn, chiếm và cô lập việc sử dụng tài nguyên (CPU, memory, disk I/O, network, vv) của một tập hợp các processes khác nhau. Đây là công nghệ cốt lõi của các container đang chạy trên một Linux server. Một lần nữa, không dễ sử dụng cgroup nếu bạn không quen thuộc với công nghệ Linux kernel. Vì vậy, đây là một trong những lý do tại sao cgroups không được biết đến nhiều.

Đây cũng chính là công nghệ mà Docker tận dụng. Dự án Docker sẽ cung cấp cho bạn một bộ công cụ tiện dụng để quản lý các cgroup trên Linux server. Nó rất dễ sử dụng đến mức hầu hết mọi người không biết họ đang sử dụng một công nghệ Linux kernel. Docker giúp chúng ta chạy nhiều dịch vụ được bảo mật và độc lập trên một máy chủ.

Song song đó, Docker có một công cụ cốt lõi là “Docker Swarm”. Docker Swarm cho phép bạn kết nối các server khác nhau. Điều này trở nên cực kì quan trọng khi bạn có nhiều hơn một server để quản lý.

Vì vậy, khi chúng ta nói về các container và đặc biệt là về Docker, về cơ bản bạn thật là luôn nói về một công nghệ Linux kernel.

Kubernetes là gì?

Bây giờ, Kubernetes là gì và tại sao chúng ta cần nó? Để hiểu điều này, bạn phải hình dung ra tình huống sau: bạn có hàng nghìn Linux server cần phải chạy. Và bạn không chạy một microservice, nhưng hàng chục ngàn dịch vụ khác nhau. Tôi hy vọng bạn hiện không ở trong tình huống như vậy. Nhưng các công ty như Google và Amazon vẫn phải đối mặt với điều này hàng ngày. Do đó, các công ty này đang nghiên cứu công nghệ để vận hành chúng thật hiệu quả. Về cơ bản, nền tảng điều hành này cũng chỉ là về quản lý các dịch vụ dựa trên các Linux cgroup.

Google đã xuất bản một công nghệ như vậy dưới cái tên Kubernetes. Nhưng các công ty nhỏ với dự án đơn giản không nên sử dụng, mặc dù điều này tất nhiên là có thể nhưng có ai lại dùng dao mổ trâu để giết gà.

Xin đừng hiểu sai – Kubernetes là một công nghệ tuyệt vời nhưng liệu bạn có cần điều này? Vì lý do nào đó, mọi người dường như tin rằng họ cần phải sử dụng công nghệ này cho mọi dự án của riêng họ. Có lẽ là vì muốn được thành công như Google và Amazon.

Tại sao bạn nên sử dụng Docker?

Vì vậy, cuối cùng – tại sao bạn nên sử dụng Docker thay vì Kubernetes. Như tôi đã giải thích trước đây, khi bạn nói về công nghệ container, thì cũng có nghĩa là về công nghệ Linux kernel. Bạn sẽ cần có một chút kinh nghiệm với Linux nếu bạn muốn sử dụng các container trong các dự án của mình. Docker cung cấp một bộ công cụ lý tưởng để xử lý công nghệ đằng sau nó (cgroups). Đấy cũng là một trong những lý do tôi khuyên bạn nên sử dụng Docker.

Mặt khác, dù rằng Kubernetes có một cộng đồng lớn và đang phát triển, nó cũng không giống như với Linux. Kubernetes có mối liên hệ rất mạnh mẽ với các đại gia Internet ngày nay như Google, Amazon và Microsoft. Với Kubernetes, nó gần như là quá dễ dàng để lưu trữ dữ liệu của bạn vào một trong những nền tảng này. Ngay cả khi nó có vẻ hấp dẫn đối với hầu hết các dự án, Docker và Docker Swarm thường là đủ rồi. Vừa đơn giản và minh bạch. Tôi nghĩ tốt hơn hết là chạy server của riêng bạn với công nghệ mà bạn có thể kiểm soát và quản lí.

Ngoài ra, thật dễ dàng để xây dựng một môi trường Docker Swarm vừa nhẹ mà vừa có rất nhiều tính năng thú vị đến từ các management container hiện có. Hãy xem dự án mở “Imixs-Cloud” trên Github.

Techtalk via Dzone

0