GKE Managed Control Plane - Standard vs Autopilot
Tại Sao Vấn Đề Này Quan Trọng Trong Production
Khi chọn tạo cluster GKE, bạn không chỉ chọn machine types — bạn chọn mô hình vận hành hoàn toàn. Google quản lý cái gì, bạn quản lý cái gì, và những hạn chế bạn phải chịu đều depend trên quyết định này.
Sai lầm phổ biến: nhiều team nghĩ "Standard cluster = bạn quản lý hết" và "Autopilot = quản lý hoàn toàn". Thực tế phức tạp hơn. Ví dụ:
- Standard cluster: Bạn quản lý node pools, scaling nodes, OS patches — nhưng Google vẫn quản lý control plane, bạn không có truy cập trực tiếp vào API server binary
- Autopilot: Google quản lý node pools, scaling, bảo mật — nhưng bạn vẫn phải cấu hình tài nguyên workload đúng, nếu không pods bị từ chối
Ranh giới này quyết định:
- Chi phí (Instances dự trữ, Spot, giảm giá cam kết sử dụng)
- Thời gian nâng cấp (bạn kiểm soát vs Google kiểm soát)
- Tính năng (một số tính năng nâng cao chỉ có trong một chế độ)
- Cách khắc phục sự cố (phạm vi gỡ lỗi khác nhau)
Control Plane - Dịch Vụ Được Quản Lý
Trước khi xem Standard vs Autopilot, cần hiểu điểm cơ bản: trong GKE, control plane LUÔN được quản lý. Google quản lý:
- Sẵn sàng: Control plane tự sao chép qua các vùng (regional clusters) hoặc tự chuyển đổi dự phòng (zonal clusters)
- Cập nhật: Patches control plane được áp dụng theo từng bước, trong suốt
- Giám sát: Google giám sát API server, tính nhất quán etcd, hiệu năng scheduler
- Scaling: Các thành phần control plane tự động scaling (không có "control plane không node", nhưng scaling này không hiển thị)
Điều bạn không quản lý:
- Bạn không ssh vào các node control plane
- Bạn không tùy chỉnh tham số etcd trực tiếp
- Bạn không cài tùy chỉnh webhooks trong control plane
- Bạn không sửa cờ API server (có tùy chọn hạn chế qua tạo cluster)
Standard Cluster Model
Định Nghĩa
Standard cluster là mô hình Google quản lý control plane, bạn quản lý node pools hoàn toàn.
Google Quản Lý (Control Plane)
| Thành Phần | Chi Tiết |
|---|---|
| API Server | Triển khai, scaling, HA đảm bảo bởi Google |
| etcd | Backend sao chép, sao lưu, phục hồi thảm họa |
| Scheduler | Chạy trên control plane, không cần cấu hình |
| Controller-Manager | Danh sách managers được chạy |
| Cập nhật | Patches tự động, chu kỳ phát hành hàng tháng |
| Giám sát | Google giám sát CPU, bộ nhớ, độ trễ |
Bạn Quản Lý (Data Plane)
| Thành Phần | Chi Tiết |
|---|---|
| Node Pools | Tạo, scaling, loại máy |
| Node OS | COS, phiên bản, patches (tự động theo mặc định) |
| Bảo mật | Chính sách bảo mật node, quyền workload |
| Mạng | Cấu hình VPC, quy tắc tường lửa |
| Lưu trữ | Cấp phát PersistentVolume, volumes |
| Tiện ích | DNS, ghi log, cấu hình agent giám sát |
Mẫu Production Trong Standard
Cluster HA Nhiều Vùng
# Standard cluster phù hợp khi bạn cần linh hoạt
# Ví dụ: custom node pools per loại workload
gcloud container clusters create my-cluster \
--region us-central1 \
--num-nodes 3 \
--machine-type n2-standard-4
# Sau đó tạo pool chuyên biệt
gcloud container node-pools create gpu-pool \
--cluster=my-cluster \
--region us-central1 \
--machine-type a2-highgpu-1g \
--num-nodes 0 \
--enable-autoscaling \
--min-nodes 0 --max-nodes 10Lợi ích:
- Cấu hình node pool đúng nhu cầu (GPU, bộ nhớ cao, v.v.)
- Chính sách scaling riêng per pool
- Điều chỉnh giảm giá Instances dự trữ
Đánh đổi: Bạn phải giám sát node, cửa sổ patch, các vấn đề OS
Cluster Autoscaler + HPA
Trong Standard cluster, autoscaling có 2 tầng:
- Cluster Autoscaler (CA): thêm/xóa nodes khi pods chờ/dưới sử dụng
- Horizontal Pod Autoscaler (HPA): scale replicas dựa trên chỉ số
# Triển khai ứng dụng có HPA + CA
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
replicas: 3 # ban đầu
template:
spec:
containers:
- name: app
resources:
requests:
cpu: 500m
memory: 256Mi
---
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: myapp-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: myapp
minReplicas: 3
maxReplicas: 100
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70Hành động:
- Khi CPU > 70%, HPA tăng replicas
- Nếu không có node space, CA tăng nodes
- Ngược lại khi traffic giảm, HPA giảm, CA xóa nodes (sau ~10 phút rỗi)
Mô Hình Cluster Autopilot
Định Nghĩa
Autopilot cluster là mô hình Google quản lý cả control plane VÀ hạ tầng node, bạn chỉ quản lý workloads.
Google Quản Lý (Control Plane + Hạ Tầng)
| Thành Phần | Chi Tiết |
|---|---|
| Control Plane | Đầy đủ như Standard |
| Node Pools | Tạo tự động, scaling, tối ưu hóa |
| Lựa Chọn Node | Chọn loại máy tự động dựa trên workload |
| OS & Patches | Hoàn toàn tự động, cập nhật không downtime |
| Bảo mật | Tiêu chuẩn bảo mật Pod, RBAC tích hợp |
| Mạng | Cấu hình VPC, tường lửa, DNS |
| Ghi log & Giám sát | Tích hợp, ngăn xếp theo ý kiến |
Bạn Quản Lý (Chỉ Workloads)
| Thành Phần | Chi Tiết |
|---|---|
| Định Nghĩa Pod | spec, containers, tài nguyên |
| Deployments, Services | Cấu hình ứng dụng |
| IAM | Ai có thể truy cập cluster |
| Namespaces | Tổ chức logic |
Ràng Buộc Cần Hiểu
1. Áp Dụng Tỷ Lệ Tài Nguyên
Autopilot chạy xác thực tài nguyên trên mỗi Pod. Tỷ lệ CPU:Bộ nhớ phải khớp các cấu hình sẵn.
# ❌ SẼ BỊ TỪ CHỐI - CPU quá nhỏ cho bộ nhớ
apiVersion: v1
kind: Pod
metadata:
name: imbalanced
spec:
containers:
- name: app
image: myapp
resources:
requests:
cpu: 100m # quá nhỏ!
memory: 4Gi # cho 4GB bộ nhớ, cần ít nhất 500m CPU
---
# ✅ SẼ ĐƯỢC CHẤP NHẬN
apiVersion: v1
kind: Pod
metadata:
name: balanced
spec:
containers:
- name: app
image: myapp
resources:
requests:
cpu: 500m # tỷ lệ chấp nhận
memory: 2GiQuy tắc tỷ lệ (đơn giản):
- Cân bằng: 1 CPU : 3.5-4 GB bộ nhớ
- Mở rộng: 1 CPU : 8 GB bộ nhớ (cho web tier)
- Hiệu năng: 1 CPU : 1 GB bộ nhớ (cho sensitive độ trễ)
- Tối ưu bộ nhớ: 1 CPU : 16 GB bộ nhớ
Nếu Pod spec không khớp, Autopilot sẽ:
- Thử tự điều chỉnh (mutating webhook)
- Nếu không được, Pod bị từ chối
2. Hạn Chế Workload Đặc Quyền
Autopilot có tư thế bảo mật theo ý kiến:
# ❌ SẼ BỊ TỪ CHỐI - container đặc quyền
apiVersion: v1
kind: Pod
spec:
containers:
- name: privileged-app
securityContext:
privileged: true # không được phép
---
# ✅ SẼ ĐƯỢC CHẤP NHẬN - bảo mật cơ bản
apiVersion: v1
kind: Pod
spec:
containers:
- name: app
securityContext:
runAsNonRoot: true
readOnlyRootFilesystem: trueNgoại lệ: Một số workloads của đối tác (động cơ cơ sở dữ liệu, service meshes) được Google cho phép. Nếu cần chế độ đặc quyền, phải yêu cầu phê duyệt Google.
3. Trừu Tượng Node Pool
Ở Autopilot, "node pools" là khái niệm ảo:
# Ở Autopilot, đây là tài nguyên được quản lý
gcloud container node-pools list --cluster=my-autopilot-cluster
# Kết quả:
# default-pool (quản lý bởi Google)
# system-pool (cho các thành phần hệ thống, quản lý bởi Google)Nhiều team cố tạo custom node pools ở Autopilot:
# ❌ KHÔNG THỂ - Autopilot kiểm soát tạo node pool
gcloud container node-pools create custom-pool \
--cluster=my-autopilot-cluster # LỖICách khác: sử dụng ComputeClasses để kiểm soát hồ sơ phần cứng:
apiVersion: v1
kind: Pod
metadata:
name: gpu-workload
spec:
nodeSelector:
cloud.google.com/compute-class: accelerator # GPU node
containers:
- name: ml-job
image: ml-framework:latest
resources:
requests:
nvidia.com/gpu: 14. Ràng Buộc Mạng
Autopilot áp dụng các quy tắc mạng nhất định:
- Chỉ hỗ trợ cân bằng tải container-native (Pod IPs làm NEG endpoints)
- hostPort là tính năng bị hạn chế (phải bật rõ ràng)
- DaemonSets chỉ chạy trên worker nodes, không system nodes
So Sánh Trực Tiếp: Standard vs Autopilot
| Khía Cạnh | Standard | Autopilot |
|---|---|---|
| Control Plane | Được quản lý | Được quản lý |
| Node Pools | Tạo/cấu hình thủ công | Tự động, theo ý kiến |
| Lựa Chọn Node | Có thể chỉ định loại máy | Tự động, tỷ lệ xác thực |
| Cập Nhật OS | Cửa sổ tùy chỉnh | Luôn không downtime |
| Bảo Mật | Linh hoạt (theo nhu cầu) | Gia cố theo mặc định |
| Ràng Buộc Tài Nguyên | Linh hoạt | Áp dụng tỷ lệ chặt |
| Workloads Đặc Quyền | Hỗ trợ đầy đủ | Giới hạn/được phê duyệt |
| Scaling | Kiểm soát chi tiết | Đơn giản, tự động |
| Minh Bạch Chi Phí | Rõ ràng per node | Tổng hợp, per pod |
| Đường Cong Học Tập | Dốc hơn | Nhẹ nhàng hơn |
| Công Việc Vận Hành | Cao hơn | Thấp hơn |
Các Mẫu Chống Production
Mẫu Chống 1: Chọn Autopilot Vì Nhầm Lẫn
Sai lầm: "Autopilot có nghĩa Google quản lý hết, không overhead"
Thực tế: Autopilot chỉ quản lý hạ tầng. Độ tin cậy workload, chiến lược scaling, tối ưu chi phí, phục hồi thảm họa vẫn là trách nhiệm của bạn.
Giải pháp: Coi Autopilot là hạ tầng theo ý kiến, không phải giải pháp kỳ diệu. Vẫn cần:
- Kiểm tra tải & lập kế hoạch sức chứa
- Giám sát chi phí
- Thực hành ứng phó sự cố
- Chiến lược sao lưu
Mẫu Chống 2: Đẩy Giới Hạn Tài Nguyên Vào Autopilot
Sai lầm: "Autopilot áp dụng tỷ lệ, nên tôi có thể đặt 100% sử dụng"
Thực tế: Xác thực Autopilot là kiểm tra admission, không thực thi lúc chạy. Pods vẫn có thể OOM hoặc CPU throttle nếu sử dụng tăng đột ngột.
Giải pháp: Đặt requests thận trọng, duy trì phần trống:
# Cách tiếp cận thận trọng
requests:
cpu: 250m # cho Cân bằng: 1 CPU = 3.5GB
memory: 1Gi # chỗ cho bùng nổ
limits:
cpu: 500m
memory: 2GiMẫu Chống 3: Tránh Standard "Vì Autopilot Đơn Giản"
Sai lầm: Chọn Autopilot dù workload cần linh hoạt
Thực tế:
- Autopilot có thể có tính năng không có ở Standard
- Một số trường hợp (GPU clusters, triển khai hỗn hợp kiến trúc) phù hợp với Standard
- Standard cung cấp kiểm soát chi tiết cho nhu cầu chuyên biệt
Giải pháp: Chọn dựa trên đặc điểm workload:
- Chọn Autopilot nếu: web/API service, compute tiêu chuẩn, không cần OS đặc biệt
- Chọn Standard nếu: GPU/TPU, kernel tùy chỉnh, mạng chuyên biệt, kiến trúc hỗn hợp
Tham Khảo Tài Liệu GCP
Tất cả các tuyên bố kỹ thuật trong phần này dựa trên:
- Tổng Quan GKE Autopilot
- Compute Classes Autopilot
- So Sánh Standard vs Autopilot GKE
- Bảo Mật Pod Autopilot
Ảnh Hưởng đến Các Chương Tiếp Theo
Mô hình này (Standard vs Autopilot) ảnh hưởng đến chương:
- Chương 6 (Node Lifecycle): Sửa chữa, nâng cấp node khác per mô hình
- Chương 8 (Scheduler): Ràng buộc scheduling phụ thuộc vào node pool
- Chương 9 (Autoscaling): Autopilot scaling hoàn toàn tự động, Standard cần thiết lập
- Chương 12 (Control Plane Scalability): Mẫu scaling phụ thuộc vào node
Tóm Tắt
- Control plane GKE LUÔN được quản lý bởi Google — không phải trade-off giữa Standard vs Autopilot
- Standard cung cấp linh hoạt, bạn quản lý node pools hoàn toàn → tốt hơn cho workloads chuyên biệt
- Autopilot cung cấp đơn giản, mặc định theo ý kiến + xác thực tài nguyên → tốt hơn cho triển khai web/API
- Lựa chọn không phải nhị phân — có thể hybrid (một số clusters Standard, một số Autopilot)
- Thành công production = chọn mô hình phù hợp với đặc điểm workload, không phải dễ nhìn hơn