0Pricing
Cloud & IT Cert Prep · 课时

EKS 控制平面与工作节点

了解 AWS 在 EKS 控制平面中负责管理的内容,配置托管节点组,并将 kubectl 连接到您的集群

EKS 控制平面与工作节点 是 CoddyKit 上的免费 Cloud & IT Cert Prep 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cloud & IT Cert Prep 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cloud & IT Cert Prep 课程共包含 4 节课。

什么是 Amazon EKS

Amazon Elastic Kubernetes Service(EKS)是一项完全托管的 Kubernetes 服务,免除了安装、运行和维护 Kubernetes 控制面板的负担。AWS 会在多个可用区运行、扩展和升级控制面板,并提供高度可用的集群端点。您可以专注于部署和管理应用程序工作负载。

EKS 控制面板

EKS 控制面板由 API 服务器、etcd、控制器管理器和调度器组成,全部由 AWS 管理。这些组件运行在 AWS 所有的账户中,这意味着您永远不需要通过 SSH 登录它们。AWS 为 EKS API 端点保证 99.95% SLA,并会自动替换运行状况不佳的控制面板节点。控制面板按每个集群每小时收取固定费用。

创建 EKS 集群

您可以使用 AWS 控制台、eksctl 或 CloudFormation 创建 EKS 集群。集群需要一个子网分布在至少两个 AZ 中的 VPC,以及一个允许 Kubernetes 控制面板调用 AWS API 的 IAM 角色。创建完成后,集群端点是一个 HTTPS URL,您需要在 kubeconfig 中对其进行配置。

# Create a cluster with eksctl (recommended for getting started)
eksctl create cluster \
  --name my-cluster \
  --region us-east-1 \
  --version 1.29 \
  --nodegroup-name standard-nodes \
  --node-type m5.large \
  --nodes 3 \
  --nodes-min 1 \
  --nodes-max 5

将 kubectl 连接到 EKS

创建集群后,您需要更新本地 kubeconfig,以便 kubectl 知道如何访问 EKS API 服务器。AWS CLI 会自动生成所需的条目。EKS API 服务器使用 AWS IAM 进行身份验证——您的 IAM 用户或角色会通过 aws-auth ConfigMap 映射到 Kubernetes RBAC 身份。

# Update kubeconfig for your EKS cluster
aws eks update-kubeconfig \
  --region us-east-1 \
  --name my-cluster

# Verify connectivity
kubectl get nodes
kubectl get pods --all-namespaces

托管节点组

托管节点组允许 AWS 代表您配置、注册和管理 EC2 工作节点的生命周期。当您请求更新或替换时,EKS 会自动排空 Pod、替换实例并重新注册实例,整个过程无需手动干预。托管节点组在底层使用 Auto Scaling Groups,因此您可以控制最小、最大和期望容量,并与 Cluster Autoscaler 集成。

# Add a managed node group to an existing cluster
eksctl create nodegroup \
  --cluster my-cluster \
  --region us-east-1 \
  --name high-mem-nodes \
  --node-type r6i.large \
  --nodes 2 \
  --nodes-min 1 \
  --nodes-max 10 \
  --managed

自管理节点组

使用自管理节点组时,您需要自行启动 EC2 实例(通过 CloudFormation 或 Terraform),然后运行引导脚本将其注册到 EKS 集群。这提供了最大的灵活性——您可以使用自定义 AMI、GPU 实例类型或高度定制的内核配置;但您也需要全权负责节点的修补、排空和替换。

# Bootstrap script baked into the launch template
/etc/eks/bootstrap.sh my-cluster \
  --apiserver-endpoint 'https://EXAMPLE.gr7.us-east-1.eks.amazonaws.com' \
  --b64-cluster-ca 'BASE64_ENCODED_CA' \
  --kubelet-extra-args '--node-labels=role=custom'

节点 IAM 角色与实例配置文件

每个工作节点都必须使用一个EC2 实例配置文件运行,该配置文件包含三个 AWS 管理的策略:AmazonEKSWorkerNodePolicy、AmazonEKS_CNI_Policy 和 AmazonEC2ContainerRegistryReadOnly。这些策略允许节点加入集群、使用 VPC CNI 插件管理 Pod 网络,以及从 ECR 拉取镜像。缺少这些策略时,节点将无法注册。

# Attach required policies to the node role
aws iam attach-role-policy \
  --role-name EKSNodeRole \
  --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy

aws iam attach-role-policy \
  --role-name EKSNodeRole \
  --policy-arn arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy

aws iam attach-role-policy \
  --role-name EKSNodeRole \
  --policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly

aws-auth ConfigMap:从 IAM 到 RBAC 的映射

EKS 使用 kube-system 命名空间中的 aws-auth ConfigMap,将 IAM 用户和角色映射到 Kubernetes 用户名和组。创建集群时,只有创建者的 IAM 身份会自动获得管理员访问权限。若要允许其他用户或 CI/CD 角色访问集群,您必须使用正确的 mapRoles 或 mapUsers 键,将条目添加到此 ConfigMap 中。

# View and edit the aws-auth ConfigMap
kubectl describe configmap aws-auth -n kube-system

# Add a role mapping (example YAML fragment)
# mapRoles:
# - rolearn: arn:aws:iam::111122223333:role/EKSNodeRole
#   username: system:node:{{EC2PrivateDNSName}}
#   groups:
#     - system:bootstrappers
#     - system:nodes

EKS 附加组件与集群升级

EKS 附加组件是经过精选并由 AWS 验证的软件组件,例如 VPC CNI、CoreDNS 和 kube-proxy;EKS 可以代表您安装这些组件并使其保持最新。升级集群 Kubernetes 版本时,应先更新控制面板,然后将每个托管节点组更新到匹配的版本。在发布期间,EKS 支持控制面板与节点之间相差 N-1 个次要版本。

# List available add-ons and their versions
aws eks describe-addon-versions \
  --kubernetes-version 1.29 \
  --query 'addons[].{Name:addonName,Versions:addonVersions[0].addonVersion}' \
  --output table

# Update the VPC CNI add-on
aws eks update-addon \
  --cluster-name my-cluster \
  --addon-name vpc-cni \
  --addon-version v1.16.0-eksbuild.1

EKS 安全性:端点访问与加密

EKS API 服务器端点可以配置为仅公开、仅私有或两者兼有。公开端点通过 IAM 身份验证进行保护;仅私有端点要求您的 kubeconfig 通过 VPN 或 Direct Connect 访问 VPC。您还可以使用 AWS KMS 密钥启用 Kubernetes 密钥静态存储时的信封加密,为敏感配置数据提供额外的保护层。

# Enable private endpoint and envelope encryption at cluster creation
aws eks create-cluster \
  --name secure-cluster \
  --kubernetes-version 1.29 \
  --role-arn arn:aws:iam::111122223333:role/EKSClusterRole \
  --resources-vpc-config subnetIds=subnet-xxx,securityGroupIds=sg-xxx,endpointPublicAccess=false,endpointPrivateAccess=true \
  --encryption-config '[{"provider":{"keyArn":"arn:aws:kms:us-east-1:111122223333:key/KEY_ID"},"resources":["secrets"]}]'

EKS 上的集群自动扩展器

Cluster Autoscaler 是一个 Kubernetes Pod,它会监视无法调度的 Pod,并自动调整托管节点组 Auto Scaling Groups 的大小。当 Pod 因资源不足而无法调度时,Cluster Autoscaler 会扩容。当节点利用率不足且其 Pod 可以重新调度到其他位置时,它会缩容。它需要通过 IRSA 调用 EC2 Auto Scaling API 的 IAM 权限。

# Deploy Cluster Autoscaler (abbreviated)
kubectl apply -f https://raw.githubusercontent.com/kubernetes/autoscaler/master/cluster-autoscaler/cloudprovider/aws/examples/cluster-autoscaler-autodiscover.yaml

# Add required annotation so it discovers your cluster ASGs
kubectl annotate serviceaccount cluster-autoscaler \
  -n kube-system \
  eks.amazonaws.com/role-arn=arn:aws:iam::111122223333:role/ClusterAutoscalerRole

快速检查

请测试您对本课 AWS Solutions Architect(SAA-C03)概念的理解。

课程回顾

在本课中,您学习了:AWS manages the EKS control plane,其 SLA 达到 99.95%;managed node groups 让 AWS 负责节点生命周期管理,而自管理组则提供最大的自定义空间;以及 the aws-auth ConfigMap 如何将 IAM 身份映射到 Kubernetes RBAC,以控制集群访问。接下来我们将探索用于无服务器 Pod 运行的 Fargate Profiles。

常见问题解答

「EKS 控制平面与工作节点」课时是免费的吗?

是的 — 「EKS 控制平面与工作节点」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cloud & IT Cert Prep 课程的其余内容,请升级到 CoddyKit PRO。 Cloud & IT Cert Prep 课程共包含 4 节课。

「EKS 控制平面与工作节点」这节课中我会学到什么?

了解 AWS 在 EKS 控制平面中负责管理的内容,配置托管节点组,并将 kubectl 连接到您的集群 你通过在浏览器中直接运行的动手代码来练习 Cloud & IT Cert Prep,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Cloud & IT Cert Prep 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Cloud & IT Cert Prep 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「EKS 控制平面与工作节点」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Cloud & IT Cert Prep 课中编写并运行代码吗?

能。每节 Cloud & IT Cert Prep 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. EKS 控制平面与工作节点
  2. 用于无服务器 Pod 的 Fargate 配置文件
  3. EKS 网络:VPC CNI 与负载均衡
  4. 服务账户的 IAM 角色(IRSA)
← 返回 Cloud & IT Cert Prep