EKS Auto Mode创建过程及特殊之处

1. 预设条件

a. 使用AWS Global区域

b. 使用Amazon EKS 1.30版本

2. 创建EKS专用VPC

使用如下S3链接地址,在AWS CloudFormation中创建带有私有子网和公有子网的EKS专用VPC

https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-vpc-private-subnets.yaml


3. 控制台快速配置创建EKS Auto Mode


Cluste IAM Role和Node IAM Role使用推荐方式创建,如下图所示


接下来的VPC选择前一步骤创建的EKS专用VPC


点击创建,接下来等待10分钟左右,EKS Auto Mode就创建好了


4. 部署示例应用

刚安装完成时,集群没有节点


部署一个示例应用进行测试

将如下文件保存成inflate.yaml

apiVersion: apps/v1

kind: Deployment

metadata:

  name: inflate

spec:

  replicas: 1

  selector:

    matchLabels:

      app: inflate

  template:

    metadata:

      labels:

        app: inflate

    spec:

      terminationGracePeriodSeconds: 0

      nodeSelector:

        eks.amazonaws.com/compute-type: auto

      securityContext:

        runAsUser: 1000

        runAsGroup: 3000

        fsGroup: 2000

      containers:

        - name: inflate

          image: public.ecr.aws/eks-distro/kubernetes/pause:3.7

          resources:

            requests:

              cpu: 1

          securityContext:

            allowPrivilegeEscalation: false

执行如下命令部署示例应用

kubectl apply -f inflate.yaml

部署Sample Deployment以后,可以看到节点

5. EKS Auto Mode升级

EKS控制台可以对集群一键升级,升级时会自动升级控制层面EKS版本和托管实例AMI版本

等待十多分钟后,升级完成


auto mdoe托管实例升级前


升级过程中


升级后


6. EKS Auto Mode的特殊之处

6.1 计算

A. 预置托管的Karpenter,提前内置两个node pool(general-purpose,system),也可以自定义更多的node pool;不需要节点组也可以运行工作负载;

B. 通过Karpenter实现自动缩放,机型大小随工作负载自动选择;

C. Karpenter拉起的EC2托管实例,无法通过SSH和SSM连接;

D. EC2托管实例无法选择AMI版本,默认是Bottlerocket;

6.2 存储

A. 预置托管的EBS CSI Driver,需要手动部署GP3 StorageClass来使用EBS持久化存储。

6.3 网络

A. Amazon VPC CNI预置在EC2托管实例上;

B. CoreDNS预置在EC2托管实例上;

C. 网络策略(Network Policy)提前预置,无需安装Calico类似插件即可使用;

D. 有一些限制,例如不支持基于Pod的安全组、自定义CNI网络、Warm IP等。

6.4 IAM

A. 提供推荐的Cluster IAM role和Node IAM role;

B. 无需安装EKS Pod Identity Agent。

6.5 负载均衡

A. 预置托管的AWS Load Balancer Controller,ALB通过部署Ingress使用,NLB通过Service添加annotation使用;

B. 不支持自建AWS Load Balancer Controller迁移到auto mode;

C. ALB不支持安全组模式,NLB支持。

6.6 节点监控和自修复

A. EC2托管实例预置了节点监控代理(node monitoring agent);

B. Auto mode模式下自动启用了节点自动修复(node auto-repair)功能。

6.7 升级

A. 控制台点击升级以后,EKS集群和EC2托管实例会同步升级,集群先升级,EC2托管实例后升级到与集群一致的版本;

B. 预置托管的组件,由AWS维护,用户无需关心升级,例如Karpenter,AWS Load Balancer Controller,EBS CSI Driver等;EC2托管实例上安装的组件,例如VPC CNI,CoreDNS,Network Policy,node monitoring agent等,也无需用户关心升级问题;

C. 用户自行安装的第三方插件,需要用户自行升级。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容