Kubernetes
| Nhà phát triển | Google (now donated to CNCF) |
|---|---|
| Phát hành lần đầu | 7 tháng 6 năm 2014 |
| Phiên bản ổn định | 1.30
/ 17 tháng 4 năm 2024 |
| Viết bằng | Go |
| Hệ điều hành | Linux, Windows, macOS |
| Nền tảng | x86-64, ARM, s390x, ppc64le |
| Thể loại | Orchestration |
| Giấy phép | Apache License 2.0 |
| Website | kubernetes |
Kubernetes (thường được viết tắt là K8s) là một nền tảng mã nguồn mở dùng để tự động hóa việc triển khai, mở rộng và quản lý các ứng dụng được container hóa.[1] Kubernetes được phát triển bởi Google dựa trên kinh nghiệm hơn 15 năm vận hành các hệ thống container trong sản xuất và hiện được duy trì bởi Cloud Native Computing Foundation (CNCF).[2]
Kubernetes cung cấp khả năng tự động hóa các tác vụ vận hành phức tạp như cân bằng tải, tự phục hồi, và mở rộng quy mô ứng dụng, đồng thời hỗ trợ nhiều môi trường triển khai khác nhau từ máy chủ vật lý, máy ảo, đến các nền tảng đám mây công cộng và riêng tư.[3]
Lịch sử
Nguồn gốc tại Google
Kubernetes được xây dựng dựa trên kinh nghiệm của Google trong việc vận hành các hệ thống container quy mô lớn, bao gồm Borg và Omega. Borg là hệ thống quản lý cluster nội bộ của Google đã hoạt động từ năm 2003, được sử dụng để điều phối hàng triệu container mỗi ngày. Omega là một phiên bản nâng cao hơn, được phát triển để giải quyết các vấn đề về khả năng mở rộng của Borg.[4]
Năm 2014, Google công bố Kubernetes như một dự án mã nguồn mở, dựa trên những kinh nghiệm và bài học từ Borg và Omega. Mục tiêu của Kubernetes là mang lại những lợi ích của quản lý container quy mô lớn cho cộng đồng mã nguồn mở.[5]
Cloud Native Computing Foundation
Vào tháng 7 năm 2015, Google đã quyên góp Kubernetes cho Cloud Native Computing Foundation (CNCF) – một tổ chức được thành lập để thúc đẩy sự phát triển của các công nghệ cloud-native. CNCF hoạt động như một tổ chức trung lập, đảm bảo sự phát triển của Kubernetes không bị chi phối bởi bất kỳ một công ty nào và thu hút sự tham gia của nhiều tổ chức khác nhau.[6]
Kể từ khi chuyển giao cho CNCF, Kubernetes đã chứng kiến sự tăng trưởng vượt bậc, trở thành một trong những dự án mã nguồn mở phát triển nhanh nhất trong lịch sử.
Các phiên bản chính
| Phiên bản | Ngày phát hành | Thay đổi chính |
|---|---|---|
| 1.0 | 21 tháng 7 năm 2015 | Phiên bản ổn định đầu tiên |
| 1.5 | 12 tháng 12 năm 2016 | Hỗ trợ Windows container |
| 1.10 | 21 tháng 3 năm 2018 | Custom Resource Definition (CRD) ổn định |
| 1.18 | 25 tháng 3 năm 2020 | Chuyển đổi sang Container Storage Interface (CSI) |
| 1.24 | 3 tháng 5 năm 2022 | Loại bỏ hỗ trợ Dockershim |
| 1.27 | 11 tháng 4 năm 2023 | Cải thiện hiệu năng và bảo mật |
| 1.30 | 17 tháng 4 năm 2024 | Các tính năng mới về Load Balancer và Storage |
Kiến trúc
Kubernetes hoạt động theo mô hình kiến trúc phân tán, bao gồm các thành phần chính sau:
Master Node (Control Plane)
Control Plane là bộ não của cluster Kubernetes, chịu trách nhiệm quản lý và điều phối toàn bộ hoạt động. Các thành phần chính của Control Plane bao gồm:[7]
- API Server (kube-apiserver): Là cổng giao tiếp duy nhất giữa người dùng và cluster. API Server nhận các yêu cầu từ `kubectl` hoặc các client khác, thực hiện xác thực và ủy quyền, sau đó lưu trạng thái vào etcd.
- etcd: Là cơ sở dữ liệu phân tán, nhất quán và có độ tin cậy cao, được sử dụng để lưu trữ toàn bộ trạng thái của cluster Kubernetes. etcd là một thành phần quan trọng, việc mất dữ liệu trong etcd có thể dẫn đến mất toàn bộ cluster.
- Controller Manager (kube-controller-manager): Là một quá trình liên tục chạy các controllers để điều chỉnh trạng thái của cluster về trạng thái mong muốn. Các controllers chính bao gồm:
* Node Controller: Theo dõi sức khỏe của các node. * Replication Controller: Đảm bảo số lượng bản sao của các pod đúng với yêu cầu. * Endpoints Controller: Quản lý các endpoints cho các service.
- Scheduler (kube-scheduler): Là thành phần chịu trách nhiệm lựa chọn node phù hợp cho mỗi pod mới dựa trên các yêu cầu tài nguyên và ràng buộc về vị trí.
Worker Node (Data Plane)
Worker Nodes là các máy chủ chạy các container. Mỗi node đều có các thành phần sau:[7]
- Container Runtime: Là phần mềm chịu trách nhiệm chạy container. Kubernetes hỗ trợ nhiều runtime khác nhau, bao gồm containerd, CRI-O, và Docker (thông qua CRI, đã bị loại bỏ từ phiên bản 1.24).
- Kubelet: Là tác nhân chạy trên mỗi node, đảm bảo các container được chạy trong pod đúng như yêu cầu. Kubelet nhận các PodSpec từ API Server và giao tiếp với container runtime để khởi tạo và giám sát các container.
- Kube-proxy: Là một proxy mạng chạy trên mỗi node, thực hiện chuyển tiếp các yêu cầu mạng đến các pod. Kube-proxy hỗ trợ các chế độ hoạt động khác nhau, bao gồm chế độ `iptables`, `ipvs` và `userspace`.
Các thành phần bổ sung
- Ingress Controller: Quản lý các yêu cầu từ bên ngoài vào cluster, cung cấp các tính năng như SSL/TLS termination, virtual hosting và load balancing ở tầng ứng dụng.
- CoreDNS: Là máy chủ DNS nội bộ của Kubernetes, giải quyết tên của các service và pod trong cluster.
- Container Network Interface (CNI): Là các plugin mạng cung cấp mạng cho các pod. Các plugin CNI phổ biến bao gồm Calico, Flannel, và Cilium.
Các đối tượng chính
Pod
Pod là đơn vị triển khai nhỏ nhất trong Kubernetes. Một pod là một tập hợp các container được chia sẻ cùng một không gian tên mạng và lưu trữ.[8]
Deployment
Deployment là một khái niệm để quản lý các replica của pod. Deployment cho phép triển khai, cập nhật và rollback các ứng dụng một cách dễ dàng.[9]
Service
Service cung cấp một địa chỉ IP và cổng ổn định để truy cập vào các pod, đảm bảo ứng dụng có thể giao tiếp với nhau bất kể các pod có thay đổi vị trí hay không.[10]
ConfigMap
ConfigMap được sử dụng để lưu trữ các dữ liệu cấu hình dưới dạng cặp key-value, cho phép tách biệt cấu hình khỏi mã nguồn.[11]
Secret
Secret tương tự như ConfigMap, nhưng được sử dụng để lưu trữ các thông tin nhạy cảm như mật khẩu, token, và chứng chỉ SSL.[12]
Volume
Volume cung cấp cơ chế lưu trữ bền vững cho các container. Kubernetes hỗ trợ nhiều loại volume khác nhau như emptyDir, hostPath, và các volume từ các nhà cung cấp cloud (AWS EBS, GCE PD, Azure Disk).[13]
Cơ chế hoạt động
Kubernetes hoạt động dựa trên nguyên lý duy trì trạng thái mong muốn (desired state) được định nghĩa bởi người dùng, và liên tục điều chỉnh trạng thái thực tế (actual state) của cluster để đạt được trạng thái mong muốn. Người dùng khai báo trạng thái mong muốn thông qua các object (Deployment, Service, v.v.) gửi lên API Server.
Controller Manager liên tục theo dõi trạng thái của các object thông qua API Server. Khi phát hiện sự khác biệt giữa trạng thái mong muốn và trạng thái thực tế, controller sẽ thực hiện các hành động cần thiết để khắc phục sự khác biệt đó.
Ví dụ: Nếu một pod bị lỗi (actual state: thiếu pod), Replication Controller sẽ tạo một pod mới để khôi phục số lượng pod đúng như desired state.
Lợi ích
Tự động hóa
Kubernetes tự động hóa hầu hết các tác vụ quản lý ứng dụng, bao gồm triển khai, mở rộng, cập nhật, và tự phục hồi.
Khả năng mở rộng
Kubernetes hỗ trợ mở rộng quy mô ứng dụng theo chiều ngang và chiều dọc một cách tự động dựa trên các metrics được cung cấp.
Tự phục hồi
Kubernetes tự động phát hiện và thay thế các container bị lỗi, khởi động lại các container không còn đáp ứng, và di chuyển các pod đến các node khác khi node gặp sự cố.
Khả năng di động
Kubernetes có thể chạy trên nhiều môi trường khác nhau, bao gồm máy chủ vật lý, máy ảo, và các nền tảng cloud khác nhau, giúp giảm thiểu rủi ro khóa nhà cung cấp.
Quản lý cấu hình
Kubernetes cung cấp các cơ chế an toàn để quản lý cấu hình và các thông tin nhạy cảm như mật khẩu và token thông qua ConfigMap và Secret.
Load Balancing
Kubernetes cung cấp các service và Ingress để phân phối lưu lượng giữa các pod, đảm bảo tính sẵn sàng và hiệu năng của ứng dụng.
Hạn chế và thách thức
Đường cong học tập dốc
Kubernetes có cấu trúc phức tạp và yêu cầu sự hiểu biết về các khái niệm và cấu hình, do đó việc học hỏi và làm chủ có thể mất nhiều thời gian.
Quản lý Stateful Applications
Quản lý các ứng dụng có trạng thái trên Kubernetes là một thách thức, mặc dù đã có các công cụ như StatefulSets và Operator Pattern để hỗ trợ.
Bảo mật
Kubernetes cần được cấu hình bảo mật cẩn thận để ngăn chặn các tấn công, bao gồm việc quản lý quyền truy cập, xác thực và cập nhật các thành phần.
Chi phí vận hành
Các cluster Kubernetes quy mô lớn có thể tạo ra chi phí vận hành đáng kể do yêu cầu về quản lý và giám sát.
Hệ sinh thái
Công cụ dòng lệnh
- kubectl: Là công cụ dòng lệnh chính để tương tác với cluster Kubernetes.
- Helm: Là trình quản lý gói cho Kubernetes, được sử dụng để quản lý các ứng dụng thông qua các charts.[14]
- Minikube: Là công cụ để chạy một cluster Kubernetes một node trên máy tính cá nhân, hỗ trợ phát triển và thử nghiệm.[15]
Service Mesh
- Istio: Service mesh phổ biến nhất, cung cấp các tính năng như quản lý lưu lượng, bảo mật và observability.[16]
- Linkerd: Service mesh nhẹ và đơn giản hơn, dễ triển khai và quản lý.[17]
Monitoring và Logging
- Prometheus: Là công cụ giám sát hệ thống phổ biến nhất cho Kubernetes, cung cấp khả năng thu thập, lưu trữ và truy vấn metrics.[18]
- Grafana: Là công cụ trực quan hóa dữ liệu, thường được sử dụng kết hợp với Prometheus để tạo dashboard giám sát.[19]
CI/CD
- ArgoCD: Là công cụ GitOps cho phép triển khai ứng dụng trên Kubernetes dựa trên Git.[20]
- Tekton: Là framework CI/CD dành cho Kubernetes, cung cấp các thành phần để xây dựng các pipeline.[21]
So sánh với các công cụ khác
| Tiêu chí | Kubernetes | Docker Swarm | Apache Mesos |
|---|---|---|---|
| Khởi đầu | Google, 2014 | Docker, Inc., 2015 | Apache, 2009 |
| Khả năng mở rộng | Rất lớn (hàng ngàn node) | Trung bình (hàng trăm node) | Rất lớn (hàng ngàn node) |
| Hệ sinh thái | Rộng lớn nhất | Hạn chế | Vừa |
| Đường cong học tập | Dốc | Dễ | Trung bình |
| Khả năng tự động hóa | Rất cao | Trung bình | Cao |
| Hỗ trợ multi-cloud | Xuất sắc | Tốt | Tốt |
Xem thêm
- Container hóa
- Docker
- Docker Compose
- Open Container Initiative
- Cloud Native Computing Foundation
- DevOps
- Microservices
Tham khảo
- ^ "What is Kubernetes?". Kubernetes Documentation. Truy cập ngày 2 tháng 8 năm 2026.
- ^ "Kubernetes Overview". Kubernetes Documentation. Truy cập ngày 2 tháng 8 năm 2026.
- ^ "Kubernetes Use Cases". Kubernetes Documentation. Truy cập ngày 2 tháng 8 năm 2026.
- ^ "Large-scale cluster management at Google with Borg". Google Research. Truy cập ngày 2 tháng 8 năm 2026.
- ^ "Kubernetes v1.0 Release". Kubernetes Blog. ngày 21 tháng 7 năm 2015. Truy cập ngày 2 tháng 8 năm 2026.
- ^ "CNCF Welcomes Kubernetes". CNCF. ngày 21 tháng 7 năm 2015. Truy cập ngày 2 tháng 8 năm 2026.
- ^ a b "Kubernetes Components". Kubernetes Documentation. Truy cập ngày 2 tháng 8 năm 2026.
- ^ "Pods". Kubernetes Documentation. Truy cập ngày 2 tháng 8 năm 2026.
- ^ "Deployments". Kubernetes Documentation. Truy cập ngày 2 tháng 8 năm 2026.
- ^ "Services". Kubernetes Documentation. Truy cập ngày 2 tháng 8 năm 2026.
- ^ "ConfigMaps". Kubernetes Documentation. Truy cập ngày 2 tháng 8 năm 2026.
- ^ "Secrets". Kubernetes Documentation. Truy cập ngày 2 tháng 8 năm 2026.
- ^ "Volumes". Kubernetes Documentation. Truy cập ngày 2 tháng 8 năm 2026.
- ^ "Helm". Helm. Truy cập ngày 2 tháng 8 năm 2026.
- ^ "Minikube". Minikube. Truy cập ngày 2 tháng 8 năm 2026.
- ^ "Istio". Istio. Truy cập ngày 2 tháng 8 năm 2026.
- ^ "Linkerd". Linkerd. Truy cập ngày 2 tháng 8 năm 2026.
- ^ "Prometheus". Prometheus. Truy cập ngày 2 tháng 8 năm 2026.
- ^ "Grafana". Grafana. Truy cập ngày 2 tháng 8 năm 2026.
- ^ "ArgoCD". ArgoCD. Truy cập ngày 2 tháng 8 năm 2026.
- ^ "Tekton". Tekton. Truy cập ngày 2 tháng 8 năm 2026.
Liên kết ngoài
Bản mẫu:Kubernetes Bản mẫu:Cloud Native Computing Foundation
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.









