Bài 1: Giới Thiệu Kubernetes Và Khái Niệm Cluster Cho CKAD

Đây là bài đầu tiên trong lộ trình 20 bài series “Kubernetes Từ Cơ Bản Đến Chứng Chỉ CKAD”, chúng ta sẽ bắt đầu từ những khái niệm cơ bản nhất về Kubernetes. Series này được thiết kế để giúp bạn nắm vững kiến thức từ lý thuyết đến thực hành, đặc biệt tập trung vào việc chuẩn bị cho kỳ thi Certified Kubernetes Application Developer (CKAD).

Bài này thuộc domain Core Concepts của CKAD, chiếm 15% trọng số kỳ thi. Domain này yêu cầu bạn hiểu rõ các thành phần cốt lõi như pod, node, và cluster những nền tảng giúp bạn thao tác hiệu quả với Kubernetes trong các câu hỏi thực hành hands-on. Nắm vững phần này, bạn sẽ thấy dễ dàng hơn khi xử lý các nhiệm vụ như tạo pod hoặc mô tả trạng thái cluster trong kỳ thi (thường cái này cũng đơn giản thôi ấy mà).

Vì series từ cơ bản nên chúng ta cứ đi vào chi tiết Kubernetes là gì, lịch sử ra đời, lợi ích, và các khái niệm chính như cluster, node, pod. Mình cũng sử dụng các tài liệu chính thức từ Kubernetes để đảm bảo tính chính xác, và mình sẽ liên hệ trực tiếp với các kỹ năng cần thiết cho CKAD mọi người nhé. Còn nếu bạn nào đã biết cơ bản thì có thể bỏ qua phần này.

Kubernetes Là Gì?

Kubernetes (thường viết tắt là K8s) là một nền tảng mã nguồn mở, di động và có khả năng mở rộng để quản lý các workload và dịch vụ được container hóa. Nó hỗ trợ cấu hình khai báo (declarative configuration) và tự động hóa, giúp việc triển khai và quản lý ứng dụng trở nên dễ dàng hơn. Kubernetes có một hệ sinh thái lớn, với nhiều dịch vụ, công cụ và hỗ trợ sẵn có.

Tên “Kubernetes” xuất phát từ tiếng Hy Lạp, nghĩa là “người lái tàu” hoặc “phi công”, tượng trưng cho việc điều khiển và quản lý các container như một hạm đội tàu. Kubernetes được Google công khai open-source vào năm 2014, dựa trên hơn 15 năm kinh nghiệm chạy workload sản xuất quy mô lớn của họ, kết hợp với các ý tưởng và thực tế tốt nhất từ cộng đồng.

Kubernetes không phải là một hệ thống PaaS truyền thống toàn diện. Thay vào đó, nó hoạt động ở cấp độ container, cung cấp các tính năng như triển khai, scaling, load balancing, nhưng cho phép tích hợp các giải pháp logging, monitoring và alerting tùy chỉnh. Nó không giới hạn loại ứng dụng, không build code, không dictate logging hay configuration, mà tập trung vào việc điều phối (orchestration) các container một cách linh hoạt.

Trong bài thi CKAD thì hiểu Kubernetes như một công cụ orchestration giúp bạn giải quyết các vấn đề như scaling ứng dụng hoặc tự động hóa deployment những kỹ năng xuất hiện thường xuyên trong kỳ thi này.

Lợi Ích Của Kubernetes

Containers là cách tốt để bundle và chạy ứng dụng, nhưng trong môi trường production, bạn cần quản lý chúng để tránh downtime (ví dụ: khởi động container mới nếu cái cũ thất bại). Kubernetes cung cấp framework để chạy hệ thống phân tán một cách resilient, xử lý scaling, failover, deployment patterns như canary deployment.

Một số lợi ích chính bao gồm:

  • Service discovery và load balancing: Kubernetes expose container qua DNS hoặc IP, và load balance traffic để đảm bảo ổn định.
  • Storage orchestration: Tự động mount storage từ local hoặc cloud providers.
  • Automated rollouts và rollbacks: Mô tả trạng thái mong muốn, Kubernetes sẽ thay đổi trạng thái thực tế một cách kiểm soát, như tạo container mới hoặc rollback nếu lỗi.
  • Automatic bin packing: Tối ưu hóa tài nguyên bằng cách fit container vào node dựa trên CPU và memory.
  • Self-healing: Restart container thất bại, thay thế chúng, và không advertise chúng đến client nếu chưa ready.
  • Secret và configuration management: Lưu trữ thông tin nhạy cảm như password mà không cần rebuild image.
  • Batch execution: Quản lý job batch và CI, thay thế container thất bại.
  • Horizontal scaling: Scale ứng dụng lên/xuống tự động dựa trên CPU usage.
  • IPv4/IPv6 dual-stack: Hỗ trợ cả IPv4 và IPv6 cho Pods và Services.
  • Extensibility: Thêm features mà không thay đổi code upstream.

Những lợi ích này trực tiếp liên quan đến CKAD, bạn sẽ thực hành các lệnh kubectl để áp dụng chúng, như scaling một deployment hoặc quản lý secrets chẳng hạn.

Khái Niệm Cốt Lõi: Cluster, Node, Và Pod

Cluster

Một Kubernetes cluster là tập hợp các server (nodes) chạy các ứng dụng container hóa. Cluster bao gồm control plane (quản lý cluster) và ít nhất một worker node (chạy workload). Trong môi trường Production, control plane thường chạy trên nhiều server để đảm bảo high availability, và cluster có nhiều nodes để fault-tolerance.

Cluster là đơn vị cơ bản để chạy Kubernetes. Bạn tương tác với cluster qua kubectl, công cụ CLI để gửi lệnh đến API server.

Node

Node là server worker trong cluster, có thể là VM hoặc server vật lý. Mỗi node chạy các thành phần như kubelet (đảm bảo containers chạy trong Pod), kube-proxy (quản lý network rules cho Services), và container runtime (như containerd hoặc CRI-O để chạy containers).

Nodes báo cáo trạng thái về control plane và thực thi các lệnh từ đó.

Pod

Pod là đơn vị nhỏ nhất và đơn giản nhất trong Kubernetes, đại diện cho một hoặc nhiều containers chia sẻ storage, network, và cách chạy. Pods là ephemeral (có thể bị destroy và recreate), và chúng là building block cho các objects cao cấp hơn như Deployments.

Ví dụ, một Pod có thể chứa một container ứng dụng chính và một sidecar container cho logging.

Trong CKAD, bạn sẽ thường xuyên tạo, describe, và debug Pods đây là kỹ năng cốt lõi trong domain Core Concepts.

Kiến Trúc Cluster Kubernetes

Dưới đây là sơ đồ kiến trúc cluster Kubernetes từ tài liệu chính thức, minh họa cách control plane và worker nodes tương tác.

https://kubernetes.io/images/docs/kubernetes-cluster-architecture.svg

Control Plane Components

Control plane quản lý toàn bộ cluster và bao gồm:

  • kube-apiserver: Front-end của control plane, expose Kubernetes API. Nó scale horizontally bằng nhiều instances.
  • etcd: Key-value store highly available lưu trữ tất cả dữ liệu cluster (cần backup).
  • kube-scheduler: Chọn node cho Pods mới dựa trên resource, constraints, affinity, v.v.
  • kube-controller-manager: Chạy các controllers như node controller (xử lý node down), job controller (tạo Pods cho jobs), endpointslice controller (liên kết Services và Pods).
  • cloud-controller-manager (tùy chọn): Tích hợp với cloud providers cho routes, load balancers, v.v.

Worker Node Components

Mỗi node chạy:

  • kubelet: Agent đảm bảo containers trong Pods chạy đúng, báo cáo status về API server.
  • kube-proxy (tùy chọn): Quản lý network rules để route traffic đến Pods qua Services.
  • Container runtime: Thực thi containers, hỗ trợ CRI như containerd.

Tương Tác Giữa Các Thành Phần

Control plane quyết định global như scheduling và respond events (ví dụ: tạo Pods mới cho Deployment). kube-apiserver là hub trung tâm, scheduler và controllers tương tác qua API. etcd lưu trữ state. Trên nodes, kubelet giao tiếp với API server để nhận PodSpecs và report status, làm việc với container runtime để manage containers. kube-proxy configure network cho Services.

Hiểu kiến trúc này giúp bạn debug trong CKAD, như dùng kubectl describe để check node status hoặc troubleshoot Pods không schedule.

https://kubernetes.io/images/docs/components-of-kubernetes.svg

Liên Hệ Với Chứng Chỉ CKAD

Domain Core Concepts (15%) tập trung vào việc hiểu cluster architecture, Pods, nodes, và cách chúng tương tác. Trong kỳ thi, bạn có thể gặp nhiệm vụ như:

  • Tạo một Pod đơn giản bằng YAML.
  • Describe một node để check resource.
  • Sử dụng kubectl get để list Pods trong cluster.

Mẹo thi: Làm quen với kubectl autocomplete (enable bằng source <(kubectl completion bash) hoặc tương tự) để tiết kiệm thời gian. Thực hành trên minikube để simulate môi trường thi.

Kết Luận

Bài này chủ yếu là lý thuyết, mình đã giới thiệu Kubernetes, lợi ích, và khái niệm cốt lõi như cluster, node, pod nền tảng cho toàn series. Đương nhiên rồi làm thực tế gì cũng cần phải hiểu lý thuyết vững để xây dựng kỹ năng cho CKAD. Tiếp theo, ở Bài 2: Cài Đặt Minikube Và Lệnh kubectl Cơ Bản, chúng ta sẽ thực hành cài đặt và sử dụng kubectl để interact với cluster.

Điều hướng chuỗi bài viết<< Lộ Trình Học Kubernetes Từ Cơ Bản Đến Chứng Chỉ CKAD>> Bài 2: Cài Đặt Minikube Và sử dụng kubectl Cơ Bản

Thông tin nổi bật

Sự kiện phát trực tiếp​

Event Thumbnail

Báo cáo quan trọng

Article Thumbnail
Article Thumbnail

Sự kiện đang hiện hành

Chia sẻ bài viết:
Theo dõi
Thông báo của
0 Góp ý
Được bỏ phiếu nhiều nhất
Mới nhất Cũ nhất
Phản hồi nội tuyến
Xem tất cả bình luận

Tiêu điểm chuyên gia