目录
文章目录
Amazon EKS
Amazon EKS 是一项云上 Kubernetes 托管服务,可让在 AWS 上轻松运行 Kubernetes Cluster,而无需自己维护 Kubernetes 的 Control Plane。
由于 Amazon EKS 运行最新版本的开源 Kubernetes,所以用户可以无需任何代码更改即可将 Kubernetes Application 迁移到 Amazon EKS。
EKS 还可以与 App Mesh 集成,可以为原生的 Kubernetes Cluster 提供 Service Mesh,为上层的 Application 提供丰富的可观察性、流量控制和安全功能。
Amazon EKS Workflow
- Provision an EKS cluster using AWS Console, AWS CLI, or one of the AWS SDK,仅包含了 K8s Control Plane 部分。
- Deploy worker nodes to the EKS cluster on a new VPC or using existing VPC,作为 K8s Data Plane 部分,并且于 K8s Control Plane 建立 API Access 和 ENI Attachment 这 2 条连接。
- Configure kubectl and connect to EKS API Server.
- Run Apps on the Kubernetes cluster.
另外,也可以通过 CloudFormation 自动化的方式来部署一套完整的 Kubernetes Cluster。
Amazon EKS Architecture
Amazon EKS Control Plane
Amazon EKS 为每个 Kubernetes Cluster 运行一个 Single-Tenant 的 Kubernetes Control Plane,并使用 Amazon VPC 来将 Control Plane 之间的流量限制到一个 Cluster 内。用户无需且不能 SSH 到托管的 Master Nodes,只可以通过 API Server Endpoint 来进行服务访问,以及通过 CloudWatch 来观测 Control Plane 的运行状态。
EKS Cluster 包含了至少 2 个 API Server Node 和 3 个跨 AZ 运行的 etcd Node。Amazon EKS 会自动检测并替换运行状况不佳的 Control Plane Instance,并根据跨 AZ 特性重启它们。
Amazon EKS Data Plane
与托管的 Control Plane 截然不相反,Data Plane 是完全由用户控制的,用户需要自己完成 Worker Nodes 及其 VPC Public / Private Subnet 的操作管理。
并且 Data Plane VPC 和 Contrail Plane VPC 之间的集群网络流量通过 PrivateLink 来进行进行互联。
amazon-vpc-cni-k8s CNI
amazon-vpc-cni-k8s 是 Kubernetes 与 VPC 进行集成的 CNI。
每个 Pod 的 IP 地址从 ENI 的 Secondary IP Pool 直接分配,与 EC2 的实现方式保持一致。
值得注意的是不同类型的 EC2 所能够拥有的 ENI 数量和 IP 地址/ENI 数量是不同的。