Giới thiệu
Đây là loạt bài viết mới của mình về Kubernetes trong Devops Series. Bạn có thể theo dõi series này ở các bài viết trước để nắm bắt kiến thức trước khi bước vào lĩnh vực DevOps.
Kubernetes, còn được gọi là K8s, được phát triển bởi Google và là một công cụ điều phối container mã nguồn mở. Kubernetes giúp chúng ta chuyển từ kiến trúc Monolithic sang Microservices , đồng thời hỗ trợ quản lý các ứng dụng theo dạng container hóa trong các môi trường triển khai khác nhau như máy vật lý, máy ảo (VM), cloud hoặc hybrid.
Ngày nay, Kubernetes ngày càng phổ biến vì tính sẵn sàng cao (high availability) và sẽ ít có khả năng downtime. Ngoài ra, K8s có khả năng mở rộng (scalability) và phục hồi sau thảm họa (disaster recovery).
K8s Cluster & Nodes
K8s Cluster & Nodes là không gian chúng ta sử dụng để nhóm một hoặc nhiều nodes chạy ứng dụng được container hóa. Khi nói đến nodes, bạn có thể có một hoặc nhiều nodes bên trong cluster và chủ yếu node được phân loại thành hai phần là master node và worker node. Trong mỗi cluster, sẽ có các master và worker nodes này và trong các ứng dụng như Minikube, bạn sẽ có cả master node và worker node trong một nút (single node).
Control Plane Node (Master node)
Master node K8s bao gồm 3 quá trình chạy trên single node trong cluster. Đó là:
- kube-apiserver – được biết đến như entry point của cluster.
- kube-control-manager – theo dõi những gì đang xảy ra bên trong cluster.
- kube-scheduler – đảm bảo sự thay thế pod gán các pod vào nodes.
Bên trong master node, chúng ta có etcd là cơ sở dữ liệu hỗ trợ của Kubernetes giữ trạng thái hiện tại của cluster. Chúng ta có cơ hội khôi phục dữ liệu từ các etcd snapshots.
Worker nodes
Như mình đã đề cập trước đây, chúng ta có thể có một hoặc nhiều worker nodes bên trong cluster. Trong các worker nodes hoặc non-control-plane nodes, chúng ta có hai processes chạy bên trong là kubelet và kube-proxy.
- kubelet chủ yếu chịu trách nhiệm giao tiếp với control plane.
- kube-proxy là proxy mạng chịu trách nhiệm cung cấp kết nối mạng đến các Pod.
Ngoài ra, bạn có thể nghe thuật ngữ kubectl là command-line tool mà chúng ta sử dụng để nói chuyện với apiserver. Có ba cách chính mà chúng ta có thể sử dụng để nói chuyện với apiserver là thông qua giao diện người dùng (UI như là k8s dashboard), API và kubectl.
Kubeadm là công cụ thực hiện các hành động cần thiết để xây dựng Kubernetes cluster và trong loạt bài hướng dẫn này mình sử dụng Docker là công cụ container để triển khai ứng dụng Kubernetes.
Trong bài hướng dẫn tiếp theo, mình sẽ nói thêm về Kubernetes workloads.