Skip to content

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ầnChi Tiết
API ServerTriển khai, scaling, HA đảm bảo bởi Google
etcdBackend sao chép, sao lưu, phục hồi thảm họa
SchedulerChạy trên control plane, không cần cấu hình
Controller-ManagerDanh sách managers được chạy
Cập nhậtPatches tự động, chu kỳ phát hành hàng tháng
Giám sátGoogle giám sát CPU, bộ nhớ, độ trễ

Bạn Quản Lý (Data Plane)

Thành PhầnChi Tiết
Node PoolsTạo, scaling, loại máy
Node OSCOS, phiên bản, patches (tự động theo mặc định)
Bảo mậtChính sách bảo mật node, quyền workload
MạngCấu hình VPC, quy tắc tường lửa
Lưu trữCấp phát PersistentVolume, volumes
Tiện íchDNS, ghi log, cấu hình agent giám sát

Mẫu Production Trong Standard

Cluster HA Nhiều Vùng

yaml
# 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 10

Lợ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ố
yaml
# 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: 70

Hà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ầnChi Tiết
Control PlaneĐầy đủ như Standard
Node PoolsTạo tự động, scaling, tối ưu hóa
Lựa Chọn NodeChọn loại máy tự động dựa trên workload
OS & PatchesHoàn toàn tự động, cập nhật không downtime
Bảo mậtTiêu chuẩn bảo mật Pod, RBAC tích hợp
MạngCấu hình VPC, tường lửa, DNS
Ghi log & Giám sátTích hợp, ngăn xếp theo ý kiến

Bạn Quản Lý (Chỉ Workloads)

Thành PhầnChi Tiết
Định Nghĩa Podspec, containers, tài nguyên
Deployments, ServicesCấu hình ứng dụng
IAMAi có thể truy cập cluster
NamespacesTổ 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.

yaml
# ❌ 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: 2Gi

Quy 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ẽ:

  1. Thử tự điều chỉnh (mutating webhook)
  2. 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:

yaml
# ❌ 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: true

Ngoạ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:

bash
# Ở 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:

bash
# ❌ KHÔNG THỂ - Autopilot kiểm soát tạo node pool
gcloud container node-pools create custom-pool \
  --cluster=my-autopilot-cluster  # LỖI

Cách khác: sử dụng ComputeClasses để kiểm soát hồ sơ phần cứng:

yaml
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: 1

4. 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ạnhStandardAutopilot
Control PlaneĐược quản lýĐược quản lý
Node PoolsTạo/cấu hình thủ côngTự động, theo ý kiến
Lựa Chọn NodeCó thể chỉ định loại máyTự động, tỷ lệ xác thực
Cập Nhật OSCửa sổ tùy chỉnhLuôn không downtime
Bảo MậtLinh hoạt (theo nhu cầu)Gia cố theo mặc định
Ràng Buộc Tài NguyênLinh hoạtÁp dụng tỷ lệ chặt
Workloads Đặc QuyềnHỗ trợ đầy đủGiới hạn/được phê duyệt
ScalingKiểm soát chi tiếtĐơn giản, tự động
Minh Bạch Chi PhíRõ ràng per nodeTổng hợp, per pod
Đường Cong Học TậpDốc hơnNhẹ nhàng hơn
Công Việc Vận HànhCao hơnThấ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:

yaml
# 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: 2Gi

Mẫ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:


Ả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