云计算学习笔记
  • 前言
  • AWS入门
    • 如何创建一个AWS账号
    • 创建管理员用户
    • 如何在AWS上创建一个服务器
  • 账户
    • IAM
      • CLI(AWS 命令行接口)
      • 策略
        • 通过资源策略授权跨账户访问S3
        • 使⽤标签限制⽤⼾只能操作⾃⼰的AWS资源
        • 策略示例
  • 计算
    • EKS
      • 使用控制台创建EKS
      • 使用eksctl创建EKS
      • 为其他用户授权使用已经创建的EKS
    • EC2
      • 创建EC2
      • AMI
  • 存储
    • EBS(卷)
  • 粤ICP备20030352号
由 GitBook 提供支持
在本页
  • 先决条件
  • 配置执行权限
  • 配置服务器环境
  • 配置eksctl
  • 配置kubectl
  • 通过命令创建
  • 验证
  • 总结

这有帮助吗?

  1. 计算
  2. EKS

使用eksctl创建EKS

上一页使用控制台创建EKS下一页为其他用户授权使用已经创建的EKS

最后更新于4年前

这有帮助吗?

在上一篇中介绍了通过控制台创建eks,本章将介绍通过命令(eksctl)的方式创建EKS

先决条件

配置执行权限

使用命令的方式操作AWS 资源,我们可以以用户的身份去执行命令,也可以使用角色去执行命令。如果以用户的身份去执行命令,需要赋予用户相关权限然后配置cli,请参考上一篇中的赋予用户权限,如果以角色去执行命令,则需要创建一个新的角色(创建角色时案例选EC2),与权限类似地将对应策略附加到角色上即可,然后将角色附加到需要操作命令的EC2 上。本篇中将介绍通过角色来执行命令

使用命令创建EKS与使用控制台创建不一样的地方是,通过命令创建时需要给用户或角色多一个CloudFormation 的操作权限,需要将如下策略添加给用户或角色以获取CloudFormation操作权限(注:下面策略中只允许在香港region进行操作,使用时请按需修改并替换AccountID 为自己账号的值)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "cloudFormationPolicy",
            "Effect": "Allow",
            "Action": [
                "cloudformation:CreateUploadBucket",
                "cloudformation:EstimateTemplateCost",
                "cloudformation:DescribeStackDriftDetectionStatus",
                "cloudformation:ListExports",
                "cloudformation:ListStacks",
                "cloudformation:ListImports",
                "cloudformation:DescribeAccountLimits",
                "cloudformation:CreateStackSet",
                "cloudformation:ValidateTemplate"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "cloudformation:*",
            "Resource": [
                "arn:aws:cloudformation:ap-east-1:<AccountID>:stack/*/*",
                "arn:aws:cloudformation:ap-east-1:<AccountID>:stackset/*:*"
            ]
        }
    ]
}

配置服务器环境

配置AWS CLI

配置eksctl

$ curl -OL "https://github.com/weaveworks/eksctl/releases/download/0.15.0-rc.2/eksctl_$(uname -s)_amd64.tar.gz"

$ tar -zxf eksctl_$(uname -s)_amd64.tar.gz

$ sudo mv ./eksctl /usr/local/bin

$ eksctl version

检查eksctl 版本(版本>=0.15.0)

配置kubectl

$ https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html

$ curl -o kubectl https://amazon-eks.s3-us-west-2.amazonaws.com/1.15.10/2020-02-22/bin/linux/amd64/kubectl

$ chmod +x ./kubectl

$ sudo mv ./kubectl /usr/local/bin

$ kubectl version

检查 kubectl 版本(版本>=1.15)

通过命令创建

$ eksctl create cluster --name=eks-test2 --node-type t3.medium --managed --alb-ingress-access --region=ap-east-1

命令大约需要二十分钟执行完成,正常执行如下图

如果在创建过程中提示没有权限,请从以下几方面做检查

  1. 角色(或用户) 是否配置正确权限(IAM 角色,EKS,EC2,CloudFormation四个方面进行检查)

  2. 角色是否附加在EC2上

  3. 策略中约束的区域,与命令中的区域是否一致

验证

[ec2-user@ip-172-31-23-36 ~]$ kubectl get node
NAME                                           STATUS   ROLES    AGE     VERSION
ip-192-168-20-138.ap-east-1.compute.internal   Ready    <none>   8m8s    v1.14.9-eks-1f0ca9
ip-192-168-48-114.ap-east-1.compute.internal   Ready    <none>   8m12s   v1.14.9-eks-1f0ca9

总结

  1. 使用eksctl 创建EKS 与 控制台创建EKS 在授权上是类似地,使用eksctl 多一个CloudFormation 权限需求

  2. 使用eksctl 创建EKS 不需要预先创建EKS 服务角色 和EKS 节点角色,这个通过CloudFormation完成

  3. 推荐使用角色创建EKS ,这样可以控制操作EKS 的权限在EC2 上而不是在用户手上,减少安全风险

如果我们使用的是EC2来运行命令 ,EC2默认是已经自带CLI ,本节可以跳过。如果需要在自己的电脑上运行aws 命令,则需要安装CLI ,可参考CLI篇中 。本篇中,我们是通过以角色的方式来创建EKS,因此不需要在机器上配置用户信息,如果使用以用户来创建EKS ,则需要通过aws configure

参考 eks

创建教程
如何安装CLI
配置用户信息
给EC2 附加角色
输出参考
从控制台可以看到新创建的EKS
先决条件
赋予用户