```html Kubernetes Core Components: Deep Dive

Hiểu sâu bộ não của Kubernetes

Kubernetes không phải là ma thuật. Đó là sự phối hợp nhịp nhàng giữa các thành phần Control PlaneWorker Nodes. Hãy cùng khám phá cách etcd, API Server và kubelet vận hành thế giới Container.

🏗️ Tổng quan Kiến trúc

Control Plane (Bộ não)

Chịu trách nhiệm ra quyết định toàn cục cho Cluster (ví dụ: lập lịch) và phát hiện/phản hồi các sự kiện. Bao gồm API Server, etcd, Scheduler...

Worker Nodes (Cánh tay)

Nơi các Container thực sự chạy. Mỗi node chạy một kubelet để giao tiếp với Control Plane và một Container Runtime.

Control Plane API Server etcd Worker Node kubelet Pods

Các thành phần cốt lõi

💾

etcd

"The Source of Truth"

  • Là một distributed key-value store.
  • Lưu trữ **mọi thứ**: cluster state, node configs, secrets, metadata của Pod.
  • ⚠️ Nếu etcd hỏng, Cluster "quên" sạch mình đang có gì. Không thể khôi phục nếu không có backup.
🧠

kube-apiserver

"The Brain's Gatekeeper"

  • Là thành phần duy nhất được phép nói chuyện trực tiếp với **etcd**.
  • Thực hiện: Authentication (bạn là ai?), Authorization (bạn được làm gì?), Admission Control.
  • Cung cấp REST API cho `kubectl`, dashboard và các controller khác.
🤖

kubelet

"The Node Agent"

  • Chạy trên mọi Node. Nhận "PodSpec" từ API Server.
  • Đảm bảo các Containers trong Pod được chạy và khỏe mạnh (**health checks**).
  • Báo cáo trạng thái của Node về Control Plane định kỳ.

Mô phỏng Luồng: Triển khai một Pod

Click nút bên dưới để thấy cách một lệnh `kubectl apply` đi qua hệ thống.

👨‍💻
kubectl apply
Gửi manifest YAML tới API Server
🛡️
API Server
Xác thực & Lưu vào etcd
📋
etcd
Lưu Desired State (Pending)
🏗️
kubelet
Watch API Server & Chạy Pod
Sẵn sàng để bắt đầu...

Security Insights (Pentest Angle)

💀 Rủi ro với etcd

Nếu attacker chiếm được quyền truy cập vào etcd mà không qua API Server (bypass Auth), họ có thể đọc toàn bộ Secrets của cluster.

# Impact: Full Cluster Takeover
# Tip: Luôn bật encryption-at-rest cho etcd.

🔓 Abuse kubelet API

Kubelet có một API riêng (mặc định port 10250). Nếu cấu hình sai cho phép anonymous access, attacker có thể thực thi lệnh (`exec`) vào bất kỳ Pod nào trên node đó.

# Impact: Pod compromise, lateral movement
# Tip: Set --anonymous-auth=false

Kiến thức nâng cao: Watch & Reconciliation

Watch Mechanism

Thay vì Kubelet cứ liên tục hỏi API Server "Có Pod mới không?" (polling), nó duy trì một kết nối HTTP dài. Khi API Server thấy thay đổi trong etcd, nó "đẩy" (push) thông tin đó tới Kubelet ngay lập tức.

Desired state vs Current state

Đây là cốt lõi của K8s. Bạn khai báo Desired State (tôi muốn 3 Pod). Reconciliation Loop sẽ liên tục kiểm tra Current State (thực tế có mấy Pod?). Nếu thiếu, nó sẽ ra lệnh tạo thêm.

```