AWS EKS

1 EKS

EKS(Elastic Kubernetes Service),是AWS提供的一个云上弹性K8S集群,无需自己安装和配置,控制平面和数据平面的资源都由AWS提供。

2 EKS控制平面

EKS控制平面一般至少包含两个apiserver实例,以及分布在3个AZ的3个etcd实例,从而保证高可用。另外控制平面不能跨集群和跨账号,它通过VPC的网络来限制集群间或账号间的通信。但是你可以通过在EKS里添加对应的k8s RBAC策略来达到通信的目的。

3 EKS数据平面

我们一般直接使用EC2作为EKS的数据节点,每一个节点都由EC2的Auto Scaling group来管理,由ASG管理有以下好处,

  • 更好的容错率,ASG会自动监测group中node的健康情况,并尝试结束异常节点,然后重新创建新的节点。而且可以配置跨AZ,从而实现异地容灾。
  • 更好的可用性,ASG会确保group中有指定数量的节点,保证服务可用性
  • 更好的费用管理,ASG可以根据负载动态调整节点数量,从而实现更好的按需付费,节省开支

4 EKS集群内组件

4.1 Cluster Autoscaler

Cluster Autoscaler以deployment的方式部署在EKS中,它可以根据集群情况自动调整集群节点数量,当pod由于集群资源不足无法启动或者被重新调度到其他节点时,CA可以在用户预算范围内添加新节点到集群中;当node节点利用率低,且节点上的pod都可以被迁移到其他节点时,CA会自动停止该node上的实例,然后由对应的controller将node下线,从而降低集群使用成本。

CA和基于CPU利用率的autoscaler不同,基于CPU的策略可能会在没有必要时添加新节点,或者缩容时不考虑重要服务,强行停止,会对应用造成影响。

4.2 AWS Load Balancer Controller

AWS Load Balancer Controller主要提供以下两个功能,

  • 当你创建一个k8s ingress时,为你创建一个对应的Application Load Balancer (ALB)
  • 当你创建一个类型为LoadBalancer的服务时,为你创建一个对应的Network Load Balancer (NLB)

但是需要确保EKS所在VPC的子网有正确的tag,

  • Private subnets
Key – kubernetes.io/role/internal-elb
Value – 1
  • Public subnets
Key – kubernetes.io/role/elb
Value – 1

4.3 CoreDNS

和kubeadm部署k8s集群一样,EKS默认也使用CoreDNS作为集群的DNS服务器。默认情况下,EKS中会部署两个CoreDNS实例,不管集群有多少个节点。

5 集群认证

5.1 获取kubeconfig文件

先查询对应region有哪些集群,

aws eks list-clusters --region region-code --profile=your-file

然后将该集群的context更新到本地kubeconfig文件

aws eks update-kubeconfig --region region-code --name my-cluster --profile=your-file

5.2 IAM用户和k8s集群用户映射

当你创建EKS集群时,你所使用的IAM会被默认添加到k8s集群的RBAC认证用户,并作为admin(system:masters)权限用户。而且该IAM用户无法在集群中找到相关记录,因此需要注意保存信息。初始时,也只有这个IAM用户能通过kubectl访问k8s apiserver,后续可以根据需要添加不同IAM到EKS集群中。

可以通过以下命令查看当前EKS集群中的IAM映射信息,

kubectl describe -n kube-system configmap/aws-auth

要添加和删除映射信息,也可以直接edit这个configmap文件。


参考文档:

  1. https://docs.aws.amazon.com/eks/latest/userguide/clusters.html
  2. https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html
  3. https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html
  4. https://docs.aws.amazon.com/eks/latest/userguide/autoscaling.html
  5. https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/FAQ.md
  6. https://docs.aws.amazon.com/eks/latest/userguide/aws-load-balancer-controller.html
  7. https://docs.aws.amazon.com/eks/latest/userguide/add-user-role.html
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值