[Kubernetes Series] Part 1: Kubernetes là gì?

2 min read

Tổng quan Kubernetes

Kubernetes (thường viết tắt là K8s) là một nền tảng mã nguồn mở để tự động hóa việc triển khai, mở rộng và quản lý các ứng dụng chạy trong container.

Nó được Google phát triển từ năm 2014, dựa trên hơn 15 năm kinh nghiệm chạy hàng tỷ container trong hệ thống nội bộ của họ (hệ thống Borg và Omega). Sau đó Google tặng lại cho Cloud Native Computing Foundation (CNCF) và hiện tại Kubernetes là dự án mã nguồn mở phát triển nhanh thứ 2 trong lịch sử (chỉ sau Linux kernel).

Tên “Kubernetes” xuất phát từ tiếng Hy Lạp, nghĩa là “người lái tàu” hoặc “thuyền trưởng” – rất đúng với vai trò của nó: điều phối cả một hạm đội container.

Container vs Kubernetes – Tại sao không dùng Docker thôi?

Docker giúp bạn đóng gói ứng dụng + dependencies vào container → chạy giống nhau ở mọi nơi. Nhưng khi bạn có:

  • 10, 100, hay 10.000 container
  • Cần tự động scale lên/xuống theo tải
  • Tự động thay thế container chết
  • Cân bằng tải, rolling update, rollback
  • Quản lý mạng, storage, secret, config

→ Docker một mình không làm nổi. Đó chính là lúc Kubernetes xuất hiện.

Kubernetes làm được những gì chính?

Tính năngMô tả ngắn gọnVí dụ thực tế
OrchestrationĐiều phối hàng nghìn container trên nhiều máyNetflix, Spotify chạy hàng triệu pod
Auto-scalingTự động tăng/giảm số lượng container theo CPU/memory hoặc metric tùy chỉnhShopee, Tiki scale khi có flash sale
Self-healingTự động khởi động lại container chết, thay thế node lỗiHệ thống vẫn chạy dù server vật lý die
Service discovery & LBTự động gán DNS và cân bằng tải giữa các containerAPI gateway không cần biết IP thật
Rolling update & rollbackDeploy phiên bản mới mà không downtime, có thể quay lại phiên bản cũ dễ dàngUpdate app hàng ngày mà user không biết
Secret & Config managementQuản lý password, API key, SSL cert riêng biệt với codeKhông còn hard-code DB password
Storage orchestrationTự động mount NFS, cloud disk, local SSD…StatefulSet cho MongoDB, PostgreSQL

Các ứng dụng thực tế của Kubernetes

Microservices

Hầu hết công ty lớn hiện nay đều dùng K8s để chạy hàng trăm/thousands microservices:

  • Booking.com: > 50 cluster, hàng chục nghìn node
  • Zalando: ~200 đội dev tự deploy lên K8s
  • Airbnb, Spotify, Pinterest, Reddit…

CI/CD & GitOps

Kết hợp với ArgoCD, Flux, Jenkins X → mỗi commit tự động deploy.

Machine Learning / Data

  • Spark, Flink operator để chạy big data job
  • Kubeflow: chạy training ML trên K8s

Edge computing

K3s, MicroK8s giúp chạy Kubernetes trên Raspberry Pi, nhà máy, cửa hàng.

Cloud provider

Tất cả các cloud lớn đều có managed Kubernetes:

  • Google Kubernetes Engine (GKE)
  • Amazon EKS
  • Azure AKS
  • DigitalOcean, Vinadata, FPT Cloud,…

Minh họa kiến trúc cơ bản

+-------------------+       +-------------------+
|   Load Balancer   | <---> |   Ingress         |
+-------------------+       +-------------------+
                                   |
                            +------+------+
                            |  API Server |
                            +------+------+
                                   |
               +-------------------+-------------------+
               |                   |                   |
        +------+------+     +------+------+     +------+------+
        |  Scheduler  |     | Controller |     |   etcd      |
        +-------------+     +------------+     +-------------+
               |                   |                   |
        +------+------+     +------+------+     +------+------+
        |   kubelet   |     |   kubelet   |     |   kubelet   |
        +------+------+     +------+------+     +------+------+
               |                   |                   |
        +------+------+     +------+------+     +------+------+
        |  Container  |     |  Container  |     |  Container  |
        |   (Pod)     |     |   (Pod)     |     |   (Pod)     |
        +-------------+     +-------------+     +-------------+

Worker Node 1            Worker Node 2          Worker Node 3

Tóm tắt

Kubernetes không phải là “thay thế Docker”, mà là “người quản lý cả đàn container”. Nếu bạn đang chạy > 5-10 container trong production → sớm muộn cũng cần Kubernetes (hoặc một orchestrator nào đó).

Link tham khảo

https://azure.microsoft.com/en-us/resources/cloud-computing-dictionary/what-is-kubernetes#watch-how-kubernetes-works

https://kubernetes.io/docs/concepts/overview

Avatar photo

Leave a Reply

Your email address will not be published. Required fields are marked *