---
id: kubernetes-managed
title: "AKS, EKS và GKE"
shortTitle: "AKS / EKS / GKE"
track: kubernetes
trackTitle: "Kubernetes"
order: 10
level: important
status: published
estimatedMinutes: 30
prerequisites:
  - kubernetes-ingress
next: kubernetes-openshift
reviewedAgainst: 2026-10-12
sources:
  - title: "Azure Kubernetes Service"
    url: https://learn.microsoft.com/en-us/azure/aks/what-is-aks
  - title: "Amazon EKS"
    url: https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html
  - title: "GKE overview"
    url: https://cloud.google.com/kubernetes-engine/docs/concepts/kubernetes-engine-overview
---

# AKS, EKS và GKE

Ba dịch vụ này giữ control plane của Kubernetes. Bạn vẫn viết Deployment và Service như các bài trước. Bạn không SSH vào API server để sửa. Không tạo cluster trong lab. Cluster tính tiền ngay cả khi không có user.

## Để làm gì

Lấy kubeconfig đúng cách trên từng nền, và biết node là phần bạn vẫn phải lo, trừ khi dùng chế độ serverless của chính nền đó.

## Gồm những gì

- Control plane do nhà cung cấp giữ.
- `az aks get-credentials`, `aws eks update-kubeconfig`, `gcloud container clusters get-credentials`.
- Node pool và bản vá node.

Không gồm tự cài etcd.

## Dùng khi nào

App cần Kubernetes và team không muốn giữ master. Cluster local trong bài kubectl là để học object. Production trên một trong ba dịch vụ thì identity, mạng, và giá là của nhà cung cấp.

Đừng tạo cluster rồi để mặc định. Node pool trống vẫn có control plane fee ở một số nền. Cluster lab của công ty cần người đứng ra xóa. Bài này không có lệnh đó.

## Kiến thức cốt lõi

Control plane là API server, scheduler, controller manager, etcd. Dịch vụ quản lý giữ các thành phần đó. `kubectl` gửi tới endpoint họ cấp. Kubeconfig lấy bằng CLI của đúng nền, rồi context xuất hiện trong `kubectl config get-contexts`.

Node là máy chạy Pod. AKS gọi node pool. EKS gọi node group hoặc Fargate nếu không giữ máy. GKE có node pool và Autopilot, Autopilot giấu node nhiều hơn. Chế độ còn node thì bạn vẫn vá image node hoặc bật cập nhật tự động. Để node cũ thì kubelet lệch version trong khi control plane đã nâng.

Quyền vào cluster là RBAC cộng với identity của nền: Entra ID trên AKS, IAM trên EKS, IAM của Google trên GKE. `kubectl` chạy được trên máy bạn không có nghĩa là mọi người trong tenant đều nên có quyền đó.

## Lệnh và code mẫu

Không chạy nếu chưa có cluster lab được cấp riêng:

```bash
az aks get-credentials --resource-group lab-rg --name lab-aks
aws eks update-kubeconfig --name lab-eks --region ap-southeast-1
gcloud container clusters get-credentials lab-gke --region asia-southeast1
```

Một lệnh là đủ cho một cluster. Đừng chạy cả ba.

## Thực hành

1. Chỉ lệnh nào thuộc Azure.
2. Nói phần nào bạn không SSH: control plane.
3. Không tạo cluster.

## Kết quả mong đợi

`az aks get-credentials` là lệnh Azure. Control plane không phải máy để đăng nhập sửa etcd.

## Checklist

- [ ] Kubeconfig lấy từ CLI của nền, không copy file từ máy người khác.
- [ ] Node pool có cách cập nhật, không để lệch lâu so với control plane.
- [ ] Cluster lab có người chịu xóa.

## Lỗi thường gặp

**`kubectl` trỏ context cũ.** Lệnh get-credentials vừa thêm context, nhưng context hiện tại vẫn là cluster khác. `kubectl config current-context` trước khi apply.

**Sửa version Kubernetes trên portal mà không đọc thay đổi API.** Một API đã bỏ có thể làm chart cũ không apply được. Đọc ghi chú nâng version của AKS, EKS hoặc GKE trước.

## Nguồn

1. [What is AKS](https://learn.microsoft.com/en-us/azure/aks/what-is-aks) — control plane và node pool.
2. [What is EKS](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) — control plane trên AWS.
3. [GKE overview](https://cloud.google.com/kubernetes-engine/docs/concepts/kubernetes-engine-overview) — cluster được quản lý trên Google Cloud.

## Tiếp theo

[OpenShift](./07-openshift.md)
