Kubernetes (thường viết tắt là K8s) là một nền tảng điều phối container (container orchestration) mã nguồn mở. Nó tự động hóa việc triển khai, mở rộng, kết nối mạng và tự phục hồi cho các ứng dụng chạy bằng container trên một cụm (cluster) nhiều máy, nên bạn chỉ cần mô tả trạng thái mong muốn (desired state) và Kubernetes sẽ liên tục làm việc để đưa thực tế khớp với nó.
Vấn đề: chạy container ở quy mô lớn rất khó
Bạn có các container (từ Docker), nhưng ở production bạn còn phải trả lời:
→ Mỗi container chạy trên MÁY NÀO? (scheduling)
→ Nếu một container bị crash thì sao? (tự phục hồi / restart)
→ Nếu cả một node chết thì sao? (dời sang chỗ khác chạy lại)
→ Làm sao 50 replica tìm thấy và nói chuyện với nhau? (service discovery)
→ Làm sao rollout phiên bản mới mà không downtime? (rolling update)
→ Làm sao scale từ 3 lên 30 replica khi lưu lượng tăng vọt? (autoscaling)
Làm tất cả bằng tay trên nhiều server thì không thể mở rộng nổi.
